[slepc4py] 01/11: New upstream version 3.8.0

Drew Parsons dparsons at moszumanska.debian.org
Mon Nov 6 10:26:48 UTC 2017


This is an automated email from the git hooks/post-receive script.

dparsons pushed a commit to tag experimental/3.8.0-1exp1
in repository slepc4py.

commit 9809f9e76383a6830942c1040c78f971eafbf806
Author: Drew Parsons <dparsons at debian.org>
Date:   Mon Nov 6 17:47:45 2017 +0800

    New upstream version 3.8.0
---
 CHANGES.rst                                        |     6 +
 LICENSE.rst                                        |     2 +-
 PKG-INFO                                           |     5 +-
 README.rst                                         |     9 +-
 conf/baseconf.py                                   |    52 +-
 demo/ex1.py                                        |     8 +-
 demo/ex10.py                                       |    13 +-
 demo/ex11.py                                       |     6 +-
 demo/ex2.py                                        |     5 +-
 demo/ex4.py                                        |     5 +-
 demo/ex5.py                                        |     3 +-
 demo/ex9.py                                        |     7 +-
 docs/CHANGES.html                                  |    37 +-
 docs/LICENSE.html                                  |    32 +-
 docs/apiref/api-objects.txt                        |   317 +-
 docs/apiref/class-tree.html                        |    73 +-
 docs/apiref/class_hierarchy_for__p_mem.png         |   Bin 846 -> 0 bytes
 docs/apiref/class_hierarchy_for_balance.png        |   Bin 1014 -> 0 bytes
 docs/apiref/class_hierarchy_for_basis.png          |   Bin 879 -> 0 bytes
 docs/apiref/class_hierarchy_for_blocktype.png      |   Bin 1597 -> 0 bytes
 docs/apiref/class_hierarchy_for_bv.png             |   Bin 3078 -> 0 bytes
 docs/apiref/class_hierarchy_for_combinetyp.png     |   Bin 1593 -> 0 bytes
 docs/apiref/class_hierarchy_for_conv.png           |   Bin 861 -> 0 bytes
 docs/apiref/class_hierarchy_for_conv_2.png         |   Bin 861 -> 0 bytes
 docs/apiref/class_hierarchy_for_convergedr.png     |   Bin 2005 -> 0 bytes
 docs/apiref/class_hierarchy_for_convergedr_2.png   |   Bin 2005 -> 0 bytes
 docs/apiref/class_hierarchy_for_convergedr_3.png   |   Bin 2005 -> 0 bytes
 docs/apiref/class_hierarchy_for_convergedr_4.png   |   Bin 2005 -> 0 bytes
 docs/apiref/class_hierarchy_for_convergedr_5.png   |   Bin 2005 -> 0 bytes
 docs/apiref/class_hierarchy_for_ds.png             |   Bin 3109 -> 0 bytes
 docs/apiref/class_hierarchy_for_eps.png            |   Bin 3131 -> 0 bytes
 docs/apiref/class_hierarchy_for_errortype.png      |   Bin 1209 -> 0 bytes
 docs/apiref/class_hierarchy_for_errortype_2.png    |   Bin 1209 -> 0 bytes
 docs/apiref/class_hierarchy_for_errortype_3.png    |   Bin 1209 -> 0 bytes
 docs/apiref/class_hierarchy_for_errortype_4.png    |   Bin 1209 -> 0 bytes
 docs/apiref/class_hierarchy_for_extract.png        |   Bin 1061 -> 0 bytes
 docs/apiref/class_hierarchy_for_extraction.png     |   Bin 1211 -> 0 bytes
 docs/apiref/class_hierarchy_for_fn.png             |   Bin 2888 -> 0 bytes
 docs/apiref/class_hierarchy_for_lanczosreo.png     |   Bin 2227 -> 0 bytes
 docs/apiref/class_hierarchy_for_matmode.png        |   Bin 1279 -> 0 bytes
 docs/apiref/class_hierarchy_for_mattype.png        |   Bin 1245 -> 0 bytes
 docs/apiref/class_hierarchy_for_mfn.png            |   Bin 3093 -> 0 bytes
 docs/apiref/class_hierarchy_for_nep.png            |   Bin 3022 -> 0 bytes
 docs/apiref/class_hierarchy_for_orthogtype.png     |   Bin 1675 -> 0 bytes
 docs/apiref/class_hierarchy_for_pep.png            |   Bin 2847 -> 0 bytes
 docs/apiref/class_hierarchy_for_powershift.png     |   Bin 1862 -> 0 bytes
 docs/apiref/class_hierarchy_for_problemtyp.png     |   Bin 1459 -> 0 bytes
 docs/apiref/class_hierarchy_for_problemtyp_2.png   |   Bin 1459 -> 0 bytes
 docs/apiref/class_hierarchy_for_refine.png         |   Bin 909 -> 0 bytes
 docs/apiref/class_hierarchy_for_refine_2.png       |   Bin 909 -> 0 bytes
 docs/apiref/class_hierarchy_for_refinesche.png     |   Bin 1547 -> 0 bytes
 docs/apiref/class_hierarchy_for_refinesche_2.png   |   Bin 1547 -> 0 bytes
 docs/apiref/class_hierarchy_for_refinetype.png     |   Bin 1243 -> 0 bytes
 docs/apiref/class_hierarchy_for_rg.png             |   Bin 3126 -> 0 bytes
 docs/apiref/class_hierarchy_for_scale.png          |   Bin 1033 -> 0 bytes
 docs/apiref/class_hierarchy_for_st.png             |   Bin 3019 -> 0 bytes
 docs/apiref/class_hierarchy_for_statetype.png      |   Bin 1407 -> 0 bytes
 docs/apiref/class_hierarchy_for_svd.png            |   Bin 3331 -> 0 bytes
 docs/apiref/class_hierarchy_for_sys.png            |   Bin 904 -> 0 bytes
 docs/apiref/class_hierarchy_for_type.png           |   Bin 884 -> 0 bytes
 docs/apiref/class_hierarchy_for_type_10.png        |   Bin 884 -> 0 bytes
 docs/apiref/class_hierarchy_for_type_2.png         |   Bin 884 -> 0 bytes
 docs/apiref/class_hierarchy_for_type_3.png         |   Bin 884 -> 0 bytes
 docs/apiref/class_hierarchy_for_type_4.png         |   Bin 884 -> 0 bytes
 docs/apiref/class_hierarchy_for_type_5.png         |   Bin 884 -> 0 bytes
 docs/apiref/class_hierarchy_for_type_6.png         |   Bin 884 -> 0 bytes
 docs/apiref/class_hierarchy_for_type_7.png         |   Bin 884 -> 0 bytes
 docs/apiref/class_hierarchy_for_type_8.png         |   Bin 884 -> 0 bytes
 docs/apiref/class_hierarchy_for_type_9.png         |   Bin 884 -> 0 bytes
 docs/apiref/class_hierarchy_for_which.png          |   Bin 912 -> 0 bytes
 docs/apiref/class_hierarchy_for_which_2.png        |   Bin 912 -> 0 bytes
 docs/apiref/class_hierarchy_for_which_3.png        |   Bin 912 -> 0 bytes
 docs/apiref/class_hierarchy_for_which_4.png        |   Bin 912 -> 0 bytes
 docs/apiref/epydoc.css                             |     8 +-
 docs/apiref/help.html                              |     6 +-
 docs/apiref/identifier-index.html                  |   403 +-
 docs/apiref/module-tree.html                       |     2 +-
 docs/apiref/slepc4py-module.html                   |     4 +-
 docs/apiref/slepc4py.SLEPc-module.html             |    76 +-
 docs/apiref/slepc4py.SLEPc.BV-class.html           |    63 +-
 docs/apiref/slepc4py.SLEPc.BV.BlockType-class.html |    74 +-
 .../apiref/slepc4py.SLEPc.BV.OrthogType-class.html |    74 +-
 .../apiref/slepc4py.SLEPc.BV.RefineType-class.html |    74 +-
 docs/apiref/slepc4py.SLEPc.BV.Type-class.html      |    74 +-
 docs/apiref/slepc4py.SLEPc.DS-class.html           |    47 +-
 docs/apiref/slepc4py.SLEPc.DS.MatType-class.html   |    74 +-
 docs/apiref/slepc4py.SLEPc.DS.StateType-class.html |    74 +-
 docs/apiref/slepc4py.SLEPc.DS.Type-class.html      |    74 +-
 docs/apiref/slepc4py.SLEPc.EPS-class.html          |   136 +-
 docs/apiref/slepc4py.SLEPc.EPS.Balance-class.html  |    74 +-
 docs/apiref/slepc4py.SLEPc.EPS.Conv-class.html     |    74 +-
 .../slepc4py.SLEPc.EPS.ConvergedReason-class.html  |    86 +-
 .../apiref/slepc4py.SLEPc.EPS.ErrorType-class.html |    74 +-
 .../slepc4py.SLEPc.EPS.Extraction-class.html       |    82 +-
 ...epc4py.SLEPc.EPS.LanczosReorthogType-class.html |    74 +-
 .../slepc4py.SLEPc.EPS.PowerShiftType-class.html   |    74 +-
 .../slepc4py.SLEPc.EPS.ProblemType-class.html      |    94 +-
 docs/apiref/slepc4py.SLEPc.EPS.Type-class.html     |    74 +-
 docs/apiref/slepc4py.SLEPc.EPS.Which-class.html    |    92 +-
 docs/apiref/slepc4py.SLEPc.FN-class.html           |    43 +-
 .../slepc4py.SLEPc.FN.CombineType-class.html       |    74 +-
 docs/apiref/slepc4py.SLEPc.FN.Type-class.html      |    74 +-
 docs/apiref/slepc4py.SLEPc.MFN-class.html          |    43 +-
 .../slepc4py.SLEPc.MFN.ConvergedReason-class.html  |    82 +-
 docs/apiref/slepc4py.SLEPc.MFN.Type-class.html     |    74 +-
 docs/apiref/slepc4py.SLEPc.NEP-class.html          |    59 +-
 .../slepc4py.SLEPc.NEP.ConvergedReason-class.html  |    74 +-
 .../apiref/slepc4py.SLEPc.NEP.ErrorType-class.html |    74 +-
 docs/apiref/slepc4py.SLEPc.NEP.Refine-class.html   |    74 +-
 .../slepc4py.SLEPc.NEP.RefineScheme-class.html     |    74 +-
 docs/apiref/slepc4py.SLEPc.NEP.Type-class.html     |    74 +-
 docs/apiref/slepc4py.SLEPc.NEP.Which-class.html    |    74 +-
 docs/apiref/slepc4py.SLEPc.PEP-class.html          |   181 +-
 docs/apiref/slepc4py.SLEPc.PEP.Basis-class.html    |    74 +-
 docs/apiref/slepc4py.SLEPc.PEP.Conv-class.html     |    74 +-
 .../slepc4py.SLEPc.PEP.ConvergedReason-class.html  |    86 +-
 .../apiref/slepc4py.SLEPc.PEP.ErrorType-class.html |    74 +-
 docs/apiref/slepc4py.SLEPc.PEP.Extract-class.html  |    74 +-
 .../slepc4py.SLEPc.PEP.ProblemType-class.html      |    74 +-
 docs/apiref/slepc4py.SLEPc.PEP.Refine-class.html   |    74 +-
 .../slepc4py.SLEPc.PEP.RefineScheme-class.html     |    74 +-
 docs/apiref/slepc4py.SLEPc.PEP.Scale-class.html    |    74 +-
 docs/apiref/slepc4py.SLEPc.PEP.Type-class.html     |    74 +-
 docs/apiref/slepc4py.SLEPc.PEP.Which-class.html    |    92 +-
 docs/apiref/slepc4py.SLEPc.RG-class.html           |    39 +-
 docs/apiref/slepc4py.SLEPc.RG.Type-class.html      |    74 +-
 docs/apiref/slepc4py.SLEPc.ST-class.html           |    55 +-
 docs/apiref/slepc4py.SLEPc.ST.MatMode-class.html   |    74 +-
 docs/apiref/slepc4py.SLEPc.ST.Type-class.html      |    74 +-
 docs/apiref/slepc4py.SLEPc.SVD-class.html          |    75 +-
 .../slepc4py.SLEPc.SVD.ConvergedReason-class.html  |    84 +-
 .../apiref/slepc4py.SLEPc.SVD.ErrorType-class.html |    74 +-
 docs/apiref/slepc4py.SLEPc.SVD.Type-class.html     |    74 +-
 docs/apiref/slepc4py.SLEPc.SVD.Which-class.html    |    74 +-
 docs/apiref/slepc4py.SLEPc.Sys-class.html          |    56 +-
 docs/apiref/slepc4py.SLEPc._p_mem-class.html       |    55 +-
 docs/apiref/slepc4py.lib-module.html               |     2 +-
 docs/index.html                                    |    30 +-
 docs/slepc4py.1                                    |     8 +-
 docs/slepc4py.info                                 |    88 +-
 docs/slepc4py.pdf                                  |   Bin 124541 -> 130536 bytes
 docs/source/Makefile                               |   174 +-
 docs/source/conf.py                                |   275 +-
 docs/source/make.bat                               |   230 +-
 docs/source/sphinxfix.sty                          |    34 -
 docs/usrman/.buildinfo                             |     2 +-
 .../usrman/_sources/{citing.txt => citing.rst.txt} |     0
 docs/usrman/_sources/{index.txt => index.rst.txt}  |     0
 .../_sources/{install.txt => install.rst.txt}      |     0
 .../usrman/_sources/{manual.txt => manual.rst.txt} |     0
 .../_sources/{overview.txt => overview.rst.txt}    |     0
 .../_sources/{tutorial.txt => tutorial.rst.txt}    |     0
 docs/usrman/_static/basic.css                      |   151 +-
 docs/usrman/_static/{default.css => classic.css}   |    19 +-
 docs/usrman/_static/comment-bright.png             |   Bin 3500 -> 756 bytes
 docs/usrman/_static/comment-close.png              |   Bin 3578 -> 829 bytes
 docs/usrman/_static/comment.png                    |   Bin 3445 -> 641 bytes
 docs/usrman/_static/default.css                    |   257 +-
 docs/usrman/_static/doctools.js                    |    55 +-
 docs/usrman/_static/down-pressed.png               |   Bin 368 -> 222 bytes
 docs/usrman/_static/down.png                       |   Bin 363 -> 202 bytes
 docs/usrman/_static/file.png                       |   Bin 392 -> 286 bytes
 docs/usrman/_static/jquery-3.1.0.js                | 10074 +++++++++
 docs/usrman/_static/jquery.js                      |     6 +-
 docs/usrman/_static/minus.png                      |   Bin 199 -> 90 bytes
 docs/usrman/_static/plus.png                       |   Bin 199 -> 90 bytes
 docs/usrman/_static/pygments.css                   |     4 +
 docs/usrman/_static/searchtools.js                 |   168 +-
 docs/usrman/_static/sidebar.js                     |     2 +-
 docs/usrman/_static/underscore-1.3.1.js            |   999 +
 docs/usrman/_static/up-pressed.png                 |   Bin 372 -> 214 bytes
 docs/usrman/_static/up.png                         |   Bin 363 -> 203 bytes
 docs/usrman/_static/websupport.js                  |    32 +-
 docs/usrman/citing.html                            |    53 +-
 docs/usrman/genindex.html                          |   161 +-
 docs/usrman/index.html                             |    55 +-
 docs/usrman/install.html                           |   111 +-
 docs/usrman/manual.html                            |    53 +-
 docs/usrman/objects.inv                            |   Bin 212 -> 306 bytes
 docs/usrman/overview.html                          |    53 +-
 docs/usrman/search.html                            |    32 +-
 docs/usrman/searchindex.js                         |     2 +-
 docs/usrman/tutorial.html                          |   109 +-
 setup.cfg                                          |     1 -
 setup.py                                           |     4 +-
 slepc4py.egg-info/PKG-INFO                         |     5 +-
 slepc4py.egg-info/SOURCES.txt                      |    73 +-
 slepc4py.egg-info/requires.txt                     |     2 +-
 src/SLEPc/BV.pyx                                   |    49 +-
 src/SLEPc/DS.pyx                                   |     3 +-
 src/SLEPc/EPS.pyx                                  |    84 +-
 src/SLEPc/FN.pyx                                   |     7 +-
 src/SLEPc/MFN.pyx                                  |    11 +-
 src/SLEPc/NEP.pyx                                  |    27 +-
 src/SLEPc/PEP.pyx                                  |    61 +-
 src/SLEPc/RG.pyx                                   |     3 +-
 src/SLEPc/SLEPc.pyx                                |     7 +-
 src/SLEPc/ST.pyx                                   |    17 +-
 src/SLEPc/SVD.pyx                                  |    57 +-
 src/SLEPc/Sys.pyx                                  |    55 +-
 src/SLEPc/slepceps.pxi                             |    75 +
 src/SLEPc/slepcmfn.pxi                             |     5 +
 src/SLEPc/slepcpep.pxi                             |     2 +
 src/SLEPc/slepcst.pxi                              |     4 +-
 src/SLEPc/slepcsvd.pxi                             |     2 +-
 src/SLEPc/slepcsys.pxi                             |    20 +-
 src/__init__.py                                    |     2 +-
 src/include/slepc4py/slepc4py.SLEPc.h              |     5 +-
 src/include/slepc4py/slepc4py.SLEPc_api.h          |     2 +-
 src/slepc4py.SLEPc.c                               | 20189 +++++++++++--------
 src/slepc4py.SLEPc.pyx                             |     6 +
 211 files changed, 25189 insertions(+), 14195 deletions(-)

diff --git a/CHANGES.rst b/CHANGES.rst
index 972ddeb..2cd8e90 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -6,6 +6,12 @@ CHANGES: SLEPc for Python
 :Contact: dalcinl at gmail.com
 
 
+Release 3.8.0
+=============
+
+- Update to SLEPc 3.8 release.
+
+
 Release 3.7.0
 =============
 
diff --git a/LICENSE.rst b/LICENSE.rst
index 255da5d..6f46fd9 100644
--- a/LICENSE.rst
+++ b/LICENSE.rst
@@ -6,7 +6,7 @@ LICENSE: SLEPc for Python
 :Contact: dalcinl at gmail.com
 
 
-Copyright (c) 2016, Lisandro Dalcin.
+Copyright (c) 2017, Lisandro Dalcin.
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff --git a/PKG-INFO b/PKG-INFO
index 30b541e..8786acb 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,13 @@
 Metadata-Version: 1.1
 Name: slepc4py
-Version: 3.7.0
+Version: 3.8.0
 Summary: SLEPc for Python
 Home-page: https://bitbucket.org/slepc/slepc4py/
 Author: Lisandro Dalcin
 Author-email: dalcinl at gmail.com
 License: BSD
-Download-URL: https://bitbucket.org/slepc/slepc4py/downloads/slepc4py-3.7.0.tar.gz
+Download-URL: https://bitbucket.org/slepc/slepc4py/downloads/slepc4py-3.8.0.tar.gz
+Description-Content-Type: UNKNOWN
 Description: SLEPc for Python
         ================
         
diff --git a/README.rst b/README.rst
index 1859405..9c15c2f 100644
--- a/README.rst
+++ b/README.rst
@@ -11,7 +11,7 @@ SLEPc_, the * Scalable Library for Eigenvalue Problem Computations*.
 Dependencies
 ------------
 
-* Python_ 2.6, 2.7, 3.2 or above.
+* Python_ 2.6, 2.7, 3.3 or above.
 
 * A recent NumPy_ release.
 
@@ -29,3 +29,10 @@ Dependencies
 .. _PETSc:    http://www.mcs.anl.gov/petsc/
 .. _petsc4py: http://bitbucket.org/petsc/petsc4py
 .. _Cython:   http://www.cython.org
+
+Documentation
+-------------
+
+* http://slepc4py.readthedocs.org/, This does not contain the epydoc-generated API reference.
+
+* http://slepc.upv.es/slepc4py-current/docs/, This is for the last release, not the in-development version.
diff --git a/conf/baseconf.py b/conf/baseconf.py
index 9c27bb1..3333170 100644
--- a/conf/baseconf.py
+++ b/conf/baseconf.py
@@ -110,6 +110,9 @@ class PetscConfig:
     def __getitem__(self, item):
         return self.configdict[item]
 
+    def get(self, item, default=None):
+        return self.configdict.get(item, default)
+
     def configure(self, extension, compiler=None):
         self.configure_extension(extension)
         if compiler is not None:
@@ -183,7 +186,9 @@ class PetscConfig:
         petsc_inc = flaglist(self['PETSC_CC_INCLUDES'])
         petsc_lib = flaglist(
             '-L%s %s' % (self['PETSC_LIB_DIR'], self['PETSC_LIB_BASIC']))
-        petsc_lib['runtime_library_dirs'].append(self['PETSC_LIB_DIR'])
+        # runtime_library_dirs is not supported on Windows
+        if sys.platform != 'win32':
+            petsc_lib['runtime_library_dirs'].append(self['PETSC_LIB_DIR'])
 
         # Link in extra libraries on static builds
         if self['BUILDSHAREDLIB'] != 'yes':
@@ -195,17 +200,19 @@ class PetscConfig:
 
     def configure_compiler(self, compiler):
         if compiler.compiler_type != 'unix': return
-        (cc, cxx, cflags, ccshared,
-         ldflags, ldshared, so_ext) = get_config_vars(
-            'CC', 'CXX', 'CFLAGS',  'CCSHARED',
-            'LDFLAGS', 'LDSHARED', 'SO')
+        # distutils C/C++ compiler
+        (cc, cflags, ccshared, cxx) = get_config_vars(
+            'CC', 'CFLAGS',  'CCSHARED', 'CXX')
         cflags = cflags or ''
-        ldflags = ldflags or ''
         cflags = cflags.replace('-Wstrict-prototypes', '')
+        ccshared = ccshared or ''
+        # distutils linker
+        (ldflags, ldshared, so_ext) = get_config_vars(
+            'LDFLAGS', 'LDSHARED', 'SO')
         ld = cc
-        ldshared = ldshared.replace(ld, '', 1).strip()
-        ldshared = [flg for flg in split_quoted(ldshared)
-                    if flg not in split_quoted(ldflags)]
+        ldflags = ldflags or ''
+        ldcmd = split_quoted(ld) + split_quoted(ldflags)
+        ldshared = [flg for flg in split_quoted(ldshared) if flg not in ldcmd]
         ldshared = str.join(' ', ldshared)
         #
         getenv = os.environ.get
@@ -216,20 +223,12 @@ class PetscConfig:
         PCC = self['PCC']
         PCC_FLAGS = get_flags(cc) + ' ' + self['PCC_FLAGS']
         PCC_FLAGS = PCC_FLAGS.replace('-fvisibility=hidden', '')
-        if sys.version_info[:2] < (2, 5):
-            PCC_FLAGS = PCC_FLAGS.replace('-Wwrite-strings', '')
         PCC = getenv('PCC', PCC) + ' ' +  getenv('PCCFLAGS', PCC_FLAGS)
         ccshared = getenv('CCSHARED', ccshared)
         cflags   = getenv('CFLAGS',   cflags)
         PCC_SHARED = str.join(' ', (PCC, ccshared, cflags))
         # C++ compiler
-        if self.language == 'c++':
-            PCXX = PCC
-        else:
-            try:
-                PCXX = self['CXX']
-            except KeyError:
-                PCXX = cxx
+        PCXX = PCC if self.language == 'c++' else self.get('CXX', cxx)
         # linker
         PLD = self['PCC_LINKER']
         PLD_FLAGS = get_flags(ld) + ' ' + self['PCC_LINKER_FLAGS']
@@ -601,6 +600,23 @@ class sdist(_sdist):
 
 # --------------------------------------------------------------------
 
+if setuptools:
+    try:
+        from setuptools.command import egg_info as mod_egg_info
+        _FileList = mod_egg_info.FileList
+        class FileList(_FileList):
+            def process_template_line(self, line):
+                level = log.set_threshold(log.ERROR)
+                try:
+                    _FileList.process_template_line(self, line)
+                finally:
+                    log.set_threshold(level)
+        mod_egg_info.FileList = FileList
+    except:
+        pass
+
+# --------------------------------------------------------------------
+
 def append(seq, item):
     if item not in seq:
         seq.append(item)
diff --git a/demo/ex1.py b/demo/ex1.py
index 1ef0bfa..dcd1fd5 100644
--- a/demo/ex1.py
+++ b/demo/ex1.py
@@ -33,8 +33,14 @@ E = SLEPc.EPS(); E.create()
 
 E.setOperators(A)
 E.setProblemType(SLEPc.EPS.ProblemType.HEP)
-E.setFromOptions()
 
+history = []
+def monitor(eps, its, nconv, eig, err):
+    history.append(err[nconv])
+    #print(its, rnorm)
+E.setMonitor(monitor)
+
+E.setFromOptions()
 E.solve()
 
 Print = PETSc.Sys.Print
diff --git a/demo/ex10.py b/demo/ex10.py
index e8205f6..a6cd269 100644
--- a/demo/ex10.py
+++ b/demo/ex10.py
@@ -37,6 +37,9 @@ Elisa Schenone <elisa.schenone at uni.lu>
 Jack S. Hale <jack.hale at uni.lu>
 """
 
+try: range = xrange
+except: pass
+
 import sys, slepc4py
 slepc4py.init(sys.argv)
 
@@ -62,7 +65,7 @@ def construct_operator(m):
     diagv = 2.0/hx
     offdx = -1.0/hx
     Istart, Iend = A.getOwnershipRange()
-    for i in xrange(Istart, Iend):
+    for i in range(Istart, Iend):
         if i != 0 and i != (m - 1):
             A[i, i] = diagv
             if i > 1: A[i, i - 1] = offdx
@@ -91,7 +94,7 @@ def set_problem_rhs(m):
     diagv = hx/3
     offdx = hx/6
     Istart, Iend = M.getOwnershipRange()
-    for i in xrange(Istart, Iend):
+    for i in range(Istart, Iend):
         if i != 0 and i != (m - 1):
             M[i, i] = 2*diagv
         else:
@@ -106,7 +109,7 @@ def set_problem_rhs(m):
     mu = x_0 + (x_f - x_0)*random.random()
     sigma = 0.1**2
     uex, f = M.getVecs()
-    for j in xrange(Istart, Iend):
+    for j in range(Istart, Iend):
         value = 2/sigma * math.exp(-(hx*j - mu)**2/sigma) * (1 - 2/sigma * (hx*j - mu)**2 )
         f.setValue(j, value)
         value = math.exp(-(hx*j - mu)**2/sigma)
@@ -171,7 +174,7 @@ def construct_snapshot_matrix(A, N, m):
     sigma = 0.1**2
     for i in range(N):
         mu = x_0 + (x_f - x_0)*random.random()
-        for j in xrange(Istart, Iend):
+        for j in range(Istart, Iend):
             value = math.exp(-(hx*j - mu)**2/sigma)
             snapshots.setValue(j, i, value)
     snapshots.assemble()
@@ -292,7 +295,7 @@ def main():
     # Compute the L2 and Linf norm of the error
     error = uex.copy()
     error.axpy(-1,uPOD)
-    errorL2 = math.sqrt(error.dot(error))
+    errorL2 = math.sqrt(error.dot(error).real)
     print('The L2-norm of the error is: '+str(errorL2))
 
     print("NORMAL END")
diff --git a/demo/ex11.py b/demo/ex11.py
index ab203cf..5795905 100644
--- a/demo/ex11.py
+++ b/demo/ex11.py
@@ -1,3 +1,6 @@
+try: range = xrange
+except: pass
+
 import sys, slepc4py
 slepc4py.init(sys.argv)
 
@@ -23,7 +26,7 @@ def construct_operator(m, n):
     offdx = -1.0*hy/hx
     offdy = -1.0*hx/hy
     Istart, Iend = A.getOwnershipRange()
-    for I in xrange(Istart, Iend) :
+    for I in range(Istart, Iend) :
         A[I,I] = diagv
         i = I//n    # map row number to
         j = I - i*n # grid coordinates
@@ -45,6 +48,7 @@ def main():
     # Solver object
     E = SLEPc.EPS().create()
     E.setOperators(A)
+    E.setProblemType(SLEPc.EPS.ProblemType.HEP)
     E.setType(SLEPc.EPS.Type.CISS)
 
     # Define region of interest
diff --git a/demo/ex2.py b/demo/ex2.py
index afb8b69..0d961c3 100644
--- a/demo/ex2.py
+++ b/demo/ex2.py
@@ -1,3 +1,6 @@
+try: range = xrange
+except: pass
+
 import sys, slepc4py
 slepc4py.init(sys.argv)
 
@@ -23,7 +26,7 @@ def construct_operator(m, n):
     offdx = -1.0*hy/hx
     offdy = -1.0*hx/hy
     Istart, Iend = A.getOwnershipRange()
-    for I in xrange(Istart, Iend) :
+    for I in range(Istart, Iend) :
         A[I,I] = diagv
         i = I//n    # map row number to
         j = I - i*n # grid coordinates
diff --git a/demo/ex4.py b/demo/ex4.py
index 387b1f8..9f15c72 100644
--- a/demo/ex4.py
+++ b/demo/ex4.py
@@ -1,3 +1,6 @@
+try: range = xrange
+except: pass
+
 import sys, slepc4py
 slepc4py.init(sys.argv)
 
@@ -17,7 +20,7 @@ A.setUp()
 
 rstart, rend = A.getOwnershipRange()
 
-for i in xrange(rstart, rend):
+for i in range(rstart, rend):
   if i==0:
     for j in range(n):
       A[0,j] = 1.0
diff --git a/demo/ex5.py b/demo/ex5.py
index d797a6f..2a6e68e 100644
--- a/demo/ex5.py
+++ b/demo/ex5.py
@@ -1,3 +1,4 @@
+
 import sys, slepc4py
 slepc4py.init(sys.argv)
 
@@ -20,7 +21,7 @@ def construct_operators(m,n):
     K.setUp()
     Istart, Iend = K.getOwnershipRange()
     for I in range(Istart,Iend):
-        v = -1.0; i = I/n; j = I-i*n;
+        v = -1.0; i = I//n; j = I-i*n;
         if i>0:
             J=I-n; K[I,J] = v
         if i<m-1:
diff --git a/demo/ex9.py b/demo/ex9.py
index 21f0a46..aa81439 100644
--- a/demo/ex9.py
+++ b/demo/ex9.py
@@ -1,3 +1,6 @@
+try: range = xrange
+except: pass
+
 import sys, slepc4py
 slepc4py.init(sys.argv)
 
@@ -22,7 +25,7 @@ def Laplacian2D(m, n):
     offdx = -1.0*hy/hx
     offdy = -1.0*hx/hy
     Istart, Iend = A.getOwnershipRange()
-    for I in xrange(Istart, Iend):
+    for I in range(Istart, Iend):
         A[I,I] = diagv
         i = I//n    # map row number to
         j = I - i*n # grid coordinates
@@ -44,7 +47,7 @@ def QuasiDiagonal(N):
     B.setUp()
     # Fill matrix
     Istart, Iend = B.getOwnershipRange()
-    for I in xrange(Istart, Iend):
+    for I in range(Istart, Iend):
         B[I,I] = 2.0
     if Istart==0:
         B[0,0] = 6.0
diff --git a/docs/CHANGES.html b/docs/CHANGES.html
index 4f6b836..8d4382a 100644
--- a/docs/CHANGES.html
+++ b/docs/CHANGES.html
@@ -3,14 +3,14 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
 <title>CHANGES: SLEPc for Python</title>
 <meta name="author" content="Lisandro Dalcin" />
 <style type="text/css">
 
 /*
 :Author: David Goodger (goodger at python.org)
-:Id: $Id: html4css1.css 7614 2013-02-21 15:55:51Z milde $
+:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
 :Copyright: This stylesheet has been placed in the public domain.
 
 Default cascading style sheet for the HTML output of Docutils.
@@ -38,6 +38,14 @@ table.borderless td, table.borderless th {
 .hidden {
   display: none }
 
+.subscript {
+  vertical-align: sub;
+  font-size: smaller }
+
+.superscript {
+  vertical-align: super;
+  font-size: smaller }
+
 a.toc-backref {
   text-decoration: none ;
   color: black }
@@ -162,12 +170,12 @@ h2.subtitle {
 hr.docutils {
   width: 75% }
 
-img.align-left, .figure.align-left, object.align-left {
+img.align-left, .figure.align-left, object.align-left, table.align-left {
   clear: left ;
   float: left ;
   margin-right: 1em }
 
-img.align-right, .figure.align-right, object.align-right {
+img.align-right, .figure.align-right, object.align-right, table.align-right {
   clear: right ;
   float: right ;
   margin-left: 1em }
@@ -178,6 +186,11 @@ img.align-center, .figure.align-center, object.align-center {
   margin-right: auto;
 }
 
+table.align-center {
+  margin-left: auto;
+  margin-right: auto;
+}
+
 .align-left {
   text-align: left }
 
@@ -195,6 +208,15 @@ div.align-right {
 /* div.align-center * { */
 /*   text-align: left } */
 
+.align-top    {
+  vertical-align: top }
+
+.align-middle {
+  vertical-align: middle }
+
+.align-bottom {
+  vertical-align: bottom }
+
 ol.simple, ul.simple {
   margin-bottom: 1em }
 
@@ -351,6 +373,13 @@ ul.auto-toc {
 <td><a class="first last reference external" href="mailto:dalcinl%40gmail.com">dalcinl<span>@</span>gmail<span>.</span>com</a></td></tr>
 </tbody>
 </table>
+<div class="section" id="release-3-8-0">
+<h1>Release 3.8.0</h1>
+<ul>
+<li><p class="first">Update to SLEPc 3.8 release.</p>
+</li>
+</ul>
+</div>
 <div class="section" id="release-3-7-0">
 <h1>Release 3.7.0</h1>
 <ul>
diff --git a/docs/LICENSE.html b/docs/LICENSE.html
index 2a365a6..0d6f529 100644
--- a/docs/LICENSE.html
+++ b/docs/LICENSE.html
@@ -3,14 +3,14 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
 <title>LICENSE: SLEPc for Python</title>
 <meta name="author" content="Lisandro Dalcin" />
 <style type="text/css">
 
 /*
 :Author: David Goodger (goodger at python.org)
-:Id: $Id: html4css1.css 7614 2013-02-21 15:55:51Z milde $
+:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
 :Copyright: This stylesheet has been placed in the public domain.
 
 Default cascading style sheet for the HTML output of Docutils.
@@ -38,6 +38,14 @@ table.borderless td, table.borderless th {
 .hidden {
   display: none }
 
+.subscript {
+  vertical-align: sub;
+  font-size: smaller }
+
+.superscript {
+  vertical-align: super;
+  font-size: smaller }
+
 a.toc-backref {
   text-decoration: none ;
   color: black }
@@ -162,12 +170,12 @@ h2.subtitle {
 hr.docutils {
   width: 75% }
 
-img.align-left, .figure.align-left, object.align-left {
+img.align-left, .figure.align-left, object.align-left, table.align-left {
   clear: left ;
   float: left ;
   margin-right: 1em }
 
-img.align-right, .figure.align-right, object.align-right {
+img.align-right, .figure.align-right, object.align-right, table.align-right {
   clear: right ;
   float: right ;
   margin-left: 1em }
@@ -178,6 +186,11 @@ img.align-center, .figure.align-center, object.align-center {
   margin-right: auto;
 }
 
+table.align-center {
+  margin-left: auto;
+  margin-right: auto;
+}
+
 .align-left {
   text-align: left }
 
@@ -195,6 +208,15 @@ div.align-right {
 /* div.align-center * { */
 /*   text-align: left } */
 
+.align-top    {
+  vertical-align: top }
+
+.align-middle {
+  vertical-align: middle }
+
+.align-bottom {
+  vertical-align: bottom }
+
 ol.simple, ul.simple {
   margin-bottom: 1em }
 
@@ -351,7 +373,7 @@ ul.auto-toc {
 <td><a class="first last reference external" href="mailto:dalcinl%40gmail.com">dalcinl<span>@</span>gmail<span>.</span>com</a></td></tr>
 </tbody>
 </table>
-<p>Copyright (c) 2016, Lisandro Dalcin.
+<p>Copyright (c) 2017, Lisandro Dalcin.
 All rights reserved.</p>
 <p>Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
diff --git a/docs/apiref/api-objects.txt b/docs/apiref/api-objects.txt
index 5a18694..3122b6e 100644
--- a/docs/apiref/api-objects.txt
+++ b/docs/apiref/api-objects.txt
@@ -20,68 +20,68 @@ slepc4py.lib.__package__	slepc4py.lib-module.html#__package__
 slepc4py.lib.ImportSLEPc	slepc4py.lib-module.html#ImportSLEPc
 slepc4py.lib.getPathArchSLEPc	slepc4py.lib-module.html#getPathArchSLEPc
 slepc4py.SLEPc.BV	slepc4py.SLEPc.BV-class.html
-slepc4py.SLEPc.BV.matMult	slepc4py.SLEPc.BV-class.html#matMult
-slepc4py.SLEPc.BV.norm	slepc4py.SLEPc.BV-class.html#norm
+slepc4py.SLEPc.BV.getColumn	slepc4py.SLEPc.BV-class.html#getColumn
 slepc4py.SLEPc.BV.setOptionsPrefix	slepc4py.SLEPc.BV-class.html#setOptionsPrefix
-slepc4py.SLEPc.BV.OrthogBlockType	slepc4py.SLEPc.BV.BlockType-class.html
-slepc4py.SLEPc.BV.setSizes	slepc4py.SLEPc.BV-class.html#setSizes
-slepc4py.SLEPc.BV.setFromOptions	slepc4py.SLEPc.BV-class.html#setFromOptions
-slepc4py.SLEPc.BV.orthogonalize	slepc4py.SLEPc.BV-class.html#orthogonalize
-slepc4py.SLEPc.BV.scaleColumn	slepc4py.SLEPc.BV-class.html#scaleColumn
-slepc4py.SLEPc.BV.getSizes	slepc4py.SLEPc.BV-class.html#getSizes
-slepc4py.SLEPc.BV.view	slepc4py.SLEPc.BV-class.html#view
 slepc4py.SLEPc.BV.getActiveColumns	slepc4py.SLEPc.BV-class.html#getActiveColumns
-slepc4py.SLEPc.BV.restoreColumn	slepc4py.SLEPc.BV-class.html#restoreColumn
-slepc4py.SLEPc.BV.Type	slepc4py.SLEPc.BV.Type-class.html
-slepc4py.SLEPc.BV.scale	slepc4py.SLEPc.BV-class.html#scale
-slepc4py.SLEPc.BV.orthogonalizeVec	slepc4py.SLEPc.BV-class.html#orthogonalizeVec
-slepc4py.SLEPc.BV.insertVecs	slepc4py.SLEPc.BV-class.html#insertVecs
-slepc4py.SLEPc.BV.normColumn	slepc4py.SLEPc.BV-class.html#normColumn
-slepc4py.SLEPc.BV.getOrthogonalization	slepc4py.SLEPc.BV-class.html#getOrthogonalization
-slepc4py.SLEPc.BV.getOptionsPrefix	slepc4py.SLEPc.BV-class.html#getOptionsPrefix
-slepc4py.SLEPc.BV.setSizesFromVec	slepc4py.SLEPc.BV-class.html#setSizesFromVec
-slepc4py.SLEPc.BV.getMatrix	slepc4py.SLEPc.BV-class.html#getMatrix
-slepc4py.SLEPc.BV.multVec	slepc4py.SLEPc.BV-class.html#multVec
-slepc4py.SLEPc.BV.setActiveColumns	slepc4py.SLEPc.BV-class.html#setActiveColumns
-slepc4py.SLEPc.BV.OrthogRefineType	slepc4py.SLEPc.BV.RefineType-class.html
-slepc4py.SLEPc.BV.getColumn	slepc4py.SLEPc.BV-class.html#getColumn
 slepc4py.SLEPc.BV.setMatrix	slepc4py.SLEPc.BV-class.html#setMatrix
+slepc4py.SLEPc.BV.setSizesFromVec	slepc4py.SLEPc.BV-class.html#setSizesFromVec
+slepc4py.SLEPc.BV.restoreColumn	slepc4py.SLEPc.BV-class.html#restoreColumn
 slepc4py.SLEPc.BV.insertVec	slepc4py.SLEPc.BV-class.html#insertVec
+slepc4py.SLEPc.BV.matMult	slepc4py.SLEPc.BV-class.html#matMult
 slepc4py.SLEPc.BV.BlockType	slepc4py.SLEPc.BV.BlockType-class.html
+slepc4py.SLEPc.BV.Type	slepc4py.SLEPc.BV.Type-class.html
 slepc4py.SLEPc.BV.matMultHermitianTranspose	slepc4py.SLEPc.BV-class.html#matMultHermitianTranspose
 slepc4py.SLEPc.BV.setType	slepc4py.SLEPc.BV-class.html#setType
+slepc4py.SLEPc.BV.scale	slepc4py.SLEPc.BV-class.html#scale
+slepc4py.SLEPc.BV.__new__	slepc4py.SLEPc.BV-class.html#__new__
+slepc4py.SLEPc.BV.orthogonalizeVec	slepc4py.SLEPc.BV-class.html#orthogonalizeVec
 slepc4py.SLEPc.BV.create	slepc4py.SLEPc.BV-class.html#create
+slepc4py.SLEPc.BV.insertVecs	slepc4py.SLEPc.BV-class.html#insertVecs
 slepc4py.SLEPc.BV.duplicate	slepc4py.SLEPc.BV-class.html#duplicate
+slepc4py.SLEPc.BV.destroy	slepc4py.SLEPc.BV-class.html#destroy
 slepc4py.SLEPc.BV.matProject	slepc4py.SLEPc.BV-class.html#matProject
+slepc4py.SLEPc.BV.scaleColumn	slepc4py.SLEPc.BV-class.html#scaleColumn
+slepc4py.SLEPc.BV.norm	slepc4py.SLEPc.BV-class.html#norm
+slepc4py.SLEPc.BV.setOrthogonalization	slepc4py.SLEPc.BV-class.html#setOrthogonalization
+slepc4py.SLEPc.BV.normColumn	slepc4py.SLEPc.BV-class.html#normColumn
+slepc4py.SLEPc.BV.OrthogBlockType	slepc4py.SLEPc.BV.BlockType-class.html
+slepc4py.SLEPc.BV.setSizes	slepc4py.SLEPc.BV-class.html#setSizes
 slepc4py.SLEPc.BV.getType	slepc4py.SLEPc.BV-class.html#getType
+slepc4py.SLEPc.BV.getOrthogonalization	slepc4py.SLEPc.BV-class.html#getOrthogonalization
+slepc4py.SLEPc.BV.RefineType	slepc4py.SLEPc.BV.RefineType-class.html
+slepc4py.SLEPc.BV.getOptionsPrefix	slepc4py.SLEPc.BV-class.html#getOptionsPrefix
+slepc4py.SLEPc.BV.setFromOptions	slepc4py.SLEPc.BV-class.html#setFromOptions
 slepc4py.SLEPc.BV.OrthogType	slepc4py.SLEPc.BV.OrthogType-class.html
+slepc4py.SLEPc.BV.orthogonalize	slepc4py.SLEPc.BV-class.html#orthogonalize
 slepc4py.SLEPc.BV.copy	slepc4py.SLEPc.BV-class.html#copy
-slepc4py.SLEPc.BV.applyMatrix	slepc4py.SLEPc.BV-class.html#applyMatrix
-slepc4py.SLEPc.BV.__new__	slepc4py.SLEPc.BV-class.html#__new__
-slepc4py.SLEPc.BV.destroy	slepc4py.SLEPc.BV-class.html#destroy
-slepc4py.SLEPc.BV.setOrthogonalization	slepc4py.SLEPc.BV-class.html#setOrthogonalization
-slepc4py.SLEPc.BV.RefineType	slepc4py.SLEPc.BV.RefineType-class.html
+slepc4py.SLEPc.BV.getMatrix	slepc4py.SLEPc.BV-class.html#getMatrix
+slepc4py.SLEPc.BV.multVec	slepc4py.SLEPc.BV-class.html#multVec
 slepc4py.SLEPc.BV.setRandom	slepc4py.SLEPc.BV-class.html#setRandom
+slepc4py.SLEPc.BV.setActiveColumns	slepc4py.SLEPc.BV-class.html#setActiveColumns
+slepc4py.SLEPc.BV.applyMatrix	slepc4py.SLEPc.BV-class.html#applyMatrix
+slepc4py.SLEPc.BV.getSizes	slepc4py.SLEPc.BV-class.html#getSizes
 slepc4py.SLEPc.BV.dotVec	slepc4py.SLEPc.BV-class.html#dotVec
+slepc4py.SLEPc.BV.OrthogRefineType	slepc4py.SLEPc.BV.RefineType-class.html
 slepc4py.SLEPc.BV.dot	slepc4py.SLEPc.BV-class.html#dot
+slepc4py.SLEPc.BV.view	slepc4py.SLEPc.BV-class.html#view
 slepc4py.SLEPc.BV.BlockType	slepc4py.SLEPc.BV.BlockType-class.html
-slepc4py.SLEPc.BV.BlockType.GS	slepc4py.SLEPc.BV.BlockType-class.html#GS
-slepc4py.SLEPc.BV.BlockType.CHOL	slepc4py.SLEPc.BV.BlockType-class.html#CHOL
 slepc4py.SLEPc.BV.BlockType.__qualname__	slepc4py.SLEPc.BV.BlockType-class.html#__qualname__
+slepc4py.SLEPc.BV.BlockType.CHOL	slepc4py.SLEPc.BV.BlockType-class.html#CHOL
+slepc4py.SLEPc.BV.BlockType.GS	slepc4py.SLEPc.BV.BlockType-class.html#GS
 slepc4py.SLEPc.BV.OrthogType	slepc4py.SLEPc.BV.OrthogType-class.html
-slepc4py.SLEPc.BV.OrthogType.__qualname__	slepc4py.SLEPc.BV.OrthogType-class.html#__qualname__
 slepc4py.SLEPc.BV.OrthogType.MGS	slepc4py.SLEPc.BV.OrthogType-class.html#MGS
+slepc4py.SLEPc.BV.OrthogType.__qualname__	slepc4py.SLEPc.BV.OrthogType-class.html#__qualname__
 slepc4py.SLEPc.BV.OrthogType.CGS	slepc4py.SLEPc.BV.OrthogType-class.html#CGS
 slepc4py.SLEPc.BV.RefineType	slepc4py.SLEPc.BV.RefineType-class.html
+slepc4py.SLEPc.BV.RefineType.__qualname__	slepc4py.SLEPc.BV.RefineType-class.html#__qualname__
 slepc4py.SLEPc.BV.RefineType.ALWAYS	slepc4py.SLEPc.BV.RefineType-class.html#ALWAYS
 slepc4py.SLEPc.BV.RefineType.NEVER	slepc4py.SLEPc.BV.RefineType-class.html#NEVER
-slepc4py.SLEPc.BV.RefineType.__qualname__	slepc4py.SLEPc.BV.RefineType-class.html#__qualname__
 slepc4py.SLEPc.BV.RefineType.IFNEEDED	slepc4py.SLEPc.BV.RefineType-class.html#IFNEEDED
 slepc4py.SLEPc.BV.Type	slepc4py.SLEPc.BV.Type-class.html
-slepc4py.SLEPc.BV.Type.MAT	slepc4py.SLEPc.BV.Type-class.html#MAT
-slepc4py.SLEPc.BV.Type.CONTIGUOUS	slepc4py.SLEPc.BV.Type-class.html#CONTIGUOUS
 slepc4py.SLEPc.BV.Type.__qualname__	slepc4py.SLEPc.BV.Type-class.html#__qualname__
+slepc4py.SLEPc.BV.Type.CONTIGUOUS	slepc4py.SLEPc.BV.Type-class.html#CONTIGUOUS
 slepc4py.SLEPc.BV.Type.VECS	slepc4py.SLEPc.BV.Type-class.html#VECS
+slepc4py.SLEPc.BV.Type.MAT	slepc4py.SLEPc.BV.Type-class.html#MAT
 slepc4py.SLEPc.BV.Type.SVEC	slepc4py.SLEPc.BV.Type-class.html#SVEC
 slepc4py.SLEPc.DS	slepc4py.SLEPc.DS-class.html
 slepc4py.SLEPc.DS.setDimensions	slepc4py.SLEPc.DS-class.html#setDimensions
@@ -115,36 +115,38 @@ slepc4py.SLEPc.DS.view	slepc4py.SLEPc.DS-class.html#view
 slepc4py.SLEPc.DS.updateExtraRow	slepc4py.SLEPc.DS-class.html#updateExtraRow
 slepc4py.SLEPc.DS.MatType	slepc4py.SLEPc.DS.MatType-class.html
 slepc4py.SLEPc.DS.MatType.A	slepc4py.SLEPc.DS.MatType-class.html#A
+slepc4py.SLEPc.DS.MatType.Q	slepc4py.SLEPc.DS.MatType-class.html#Q
 slepc4py.SLEPc.DS.MatType.C	slepc4py.SLEPc.DS.MatType-class.html#C
 slepc4py.SLEPc.DS.MatType.B	slepc4py.SLEPc.DS.MatType-class.html#B
 slepc4py.SLEPc.DS.MatType.D	slepc4py.SLEPc.DS.MatType-class.html#D
-slepc4py.SLEPc.DS.MatType.Q	slepc4py.SLEPc.DS.MatType-class.html#Q
+slepc4py.SLEPc.DS.MatType.__qualname__	slepc4py.SLEPc.DS.MatType-class.html#__qualname__
 slepc4py.SLEPc.DS.MatType.VT	slepc4py.SLEPc.DS.MatType-class.html#VT
 slepc4py.SLEPc.DS.MatType.T	slepc4py.SLEPc.DS.MatType-class.html#T
 slepc4py.SLEPc.DS.MatType.W	slepc4py.SLEPc.DS.MatType-class.html#W
 slepc4py.SLEPc.DS.MatType.Y	slepc4py.SLEPc.DS.MatType-class.html#Y
 slepc4py.SLEPc.DS.MatType.X	slepc4py.SLEPc.DS.MatType-class.html#X
 slepc4py.SLEPc.DS.MatType.Z	slepc4py.SLEPc.DS.MatType-class.html#Z
-slepc4py.SLEPc.DS.MatType.__qualname__	slepc4py.SLEPc.DS.MatType-class.html#__qualname__
 slepc4py.SLEPc.DS.MatType.U	slepc4py.SLEPc.DS.MatType-class.html#U
 slepc4py.SLEPc.DS.StateType	slepc4py.SLEPc.DS.StateType-class.html
-slepc4py.SLEPc.DS.StateType.CONDENSED	slepc4py.SLEPc.DS.StateType-class.html#CONDENSED
-slepc4py.SLEPc.DS.StateType.TRUNCATED	slepc4py.SLEPc.DS.StateType-class.html#TRUNCATED
 slepc4py.SLEPc.DS.StateType.__qualname__	slepc4py.SLEPc.DS.StateType-class.html#__qualname__
 slepc4py.SLEPc.DS.StateType.RAW	slepc4py.SLEPc.DS.StateType-class.html#RAW
+slepc4py.SLEPc.DS.StateType.CONDENSED	slepc4py.SLEPc.DS.StateType-class.html#CONDENSED
 slepc4py.SLEPc.DS.StateType.INTERMEDIATE	slepc4py.SLEPc.DS.StateType-class.html#INTERMEDIATE
+slepc4py.SLEPc.DS.StateType.TRUNCATED	slepc4py.SLEPc.DS.StateType-class.html#TRUNCATED
 slepc4py.SLEPc.DS.Type	slepc4py.SLEPc.DS.Type-class.html
-slepc4py.SLEPc.DS.Type.NEP	slepc4py.SLEPc.DS.Type-class.html#NEP
-slepc4py.SLEPc.DS.Type.GNHEP	slepc4py.SLEPc.DS.Type-class.html#GNHEP
+slepc4py.SLEPc.DS.Type.GHEP	slepc4py.SLEPc.DS.Type-class.html#GHEP
 slepc4py.SLEPc.DS.Type.HEP	slepc4py.SLEPc.DS.Type-class.html#HEP
 slepc4py.SLEPc.DS.Type.GHIEP	slepc4py.SLEPc.DS.Type-class.html#GHIEP
-slepc4py.SLEPc.DS.Type.PEP	slepc4py.SLEPc.DS.Type-class.html#PEP
 slepc4py.SLEPc.DS.Type.SVD	slepc4py.SLEPc.DS.Type-class.html#SVD
-slepc4py.SLEPc.DS.Type.GHEP	slepc4py.SLEPc.DS.Type-class.html#GHEP
+slepc4py.SLEPc.DS.Type.PEP	slepc4py.SLEPc.DS.Type-class.html#PEP
 slepc4py.SLEPc.DS.Type.__qualname__	slepc4py.SLEPc.DS.Type-class.html#__qualname__
 slepc4py.SLEPc.DS.Type.NHEP	slepc4py.SLEPc.DS.Type-class.html#NHEP
+slepc4py.SLEPc.DS.Type.NEP	slepc4py.SLEPc.DS.Type-class.html#NEP
+slepc4py.SLEPc.DS.Type.GNHEP	slepc4py.SLEPc.DS.Type-class.html#GNHEP
 slepc4py.SLEPc.EPS	slepc4py.SLEPc.EPS-class.html
 slepc4py.SLEPc.EPS.setWhichEigenpairs	slepc4py.SLEPc.EPS-class.html#setWhichEigenpairs
+slepc4py.SLEPc.EPS.setStoppingTest	slepc4py.SLEPc.EPS-class.html#setStoppingTest
+slepc4py.SLEPc.EPS.setMonitor	slepc4py.SLEPc.EPS-class.html#setMonitor
 slepc4py.SLEPc.EPS.cancelMonitor	slepc4py.SLEPc.EPS-class.html#cancelMonitor
 slepc4py.SLEPc.EPS.max_it	slepc4py.SLEPc.EPS-class.html#max_it
 slepc4py.SLEPc.EPS.getTrueResidual	slepc4py.SLEPc.EPS-class.html#getTrueResidual
@@ -206,6 +208,7 @@ slepc4py.SLEPc.EPS.getEigenvalue	slepc4py.SLEPc.EPS-class.html#getEigenvalue
 slepc4py.SLEPc.EPS.setInterval	slepc4py.SLEPc.EPS-class.html#setInterval
 slepc4py.SLEPc.EPS.setTarget	slepc4py.SLEPc.EPS-class.html#setTarget
 slepc4py.SLEPc.EPS.getType	slepc4py.SLEPc.EPS-class.html#getType
+slepc4py.SLEPc.EPS.getMonitor	slepc4py.SLEPc.EPS-class.html#getMonitor
 slepc4py.SLEPc.EPS.getTrackAll	slepc4py.SLEPc.EPS-class.html#getTrackAll
 slepc4py.SLEPc.EPS.Balance	slepc4py.SLEPc.EPS.Balance-class.html
 slepc4py.SLEPc.EPS.reset	slepc4py.SLEPc.EPS-class.html#reset
@@ -247,39 +250,39 @@ slepc4py.SLEPc.EPS.solve	slepc4py.SLEPc.EPS-class.html#solve
 slepc4py.SLEPc.EPS.getKrylovSchurSubcommMats	slepc4py.SLEPc.EPS-class.html#getKrylovSchurSubcommMats
 slepc4py.SLEPc.EPS.getEigenvector	slepc4py.SLEPc.EPS-class.html#getEigenvector
 slepc4py.SLEPc.EPS.Balance	slepc4py.SLEPc.EPS.Balance-class.html
+slepc4py.SLEPc.EPS.Balance.__qualname__	slepc4py.SLEPc.EPS.Balance-class.html#__qualname__
 slepc4py.SLEPc.EPS.Balance.ONESIDE	slepc4py.SLEPc.EPS.Balance-class.html#ONESIDE
 slepc4py.SLEPc.EPS.Balance.TWOSIDE	slepc4py.SLEPc.EPS.Balance-class.html#TWOSIDE
-slepc4py.SLEPc.EPS.Balance.NONE	slepc4py.SLEPc.EPS.Balance-class.html#NONE
-slepc4py.SLEPc.EPS.Balance.__qualname__	slepc4py.SLEPc.EPS.Balance-class.html#__qualname__
 slepc4py.SLEPc.EPS.Balance.USER	slepc4py.SLEPc.EPS.Balance-class.html#USER
+slepc4py.SLEPc.EPS.Balance.NONE	slepc4py.SLEPc.EPS.Balance-class.html#NONE
 slepc4py.SLEPc.EPS.Conv	slepc4py.SLEPc.EPS.Conv-class.html
 slepc4py.SLEPc.EPS.Conv.__qualname__	slepc4py.SLEPc.EPS.Conv-class.html#__qualname__
+slepc4py.SLEPc.EPS.Conv.NORM	slepc4py.SLEPc.EPS.Conv-class.html#NORM
 slepc4py.SLEPc.EPS.Conv.ABS	slepc4py.SLEPc.EPS.Conv-class.html#ABS
 slepc4py.SLEPc.EPS.Conv.USER	slepc4py.SLEPc.EPS.Conv-class.html#USER
 slepc4py.SLEPc.EPS.Conv.REL	slepc4py.SLEPc.EPS.Conv-class.html#REL
-slepc4py.SLEPc.EPS.Conv.NORM	slepc4py.SLEPc.EPS.Conv-class.html#NORM
 slepc4py.SLEPc.EPS.ConvergedReason	slepc4py.SLEPc.EPS.ConvergedReason-class.html
 slepc4py.SLEPc.EPS.ConvergedReason.DIVERGED_BREAKDOWN	slepc4py.SLEPc.EPS.ConvergedReason-class.html#DIVERGED_BREAKDOWN
+slepc4py.SLEPc.EPS.ConvergedReason.ITERATING	slepc4py.SLEPc.EPS.ConvergedReason-class.html#ITERATING
+slepc4py.SLEPc.EPS.ConvergedReason.__qualname__	slepc4py.SLEPc.EPS.ConvergedReason-class.html#__qualname__
 slepc4py.SLEPc.EPS.ConvergedReason.CONVERGED_USER	slepc4py.SLEPc.EPS.ConvergedReason-class.html#CONVERGED_USER
 slepc4py.SLEPc.EPS.ConvergedReason.DIVERGED_SYMMETRY_LOST	slepc4py.SLEPc.EPS.ConvergedReason-class.html#DIVERGED_SYMMETRY_LOST
-slepc4py.SLEPc.EPS.ConvergedReason.CONVERGED_TOL	slepc4py.SLEPc.EPS.ConvergedReason-class.html#CONVERGED_TOL
-slepc4py.SLEPc.EPS.ConvergedReason.ITERATING	slepc4py.SLEPc.EPS.ConvergedReason-class.html#ITERATING
 slepc4py.SLEPc.EPS.ConvergedReason.CONVERGED_ITERATING	slepc4py.SLEPc.EPS.ConvergedReason-class.html#CONVERGED_ITERATING
 slepc4py.SLEPc.EPS.ConvergedReason.DIVERGED_ITS	slepc4py.SLEPc.EPS.ConvergedReason-class.html#DIVERGED_ITS
-slepc4py.SLEPc.EPS.ConvergedReason.__qualname__	slepc4py.SLEPc.EPS.ConvergedReason-class.html#__qualname__
+slepc4py.SLEPc.EPS.ConvergedReason.CONVERGED_TOL	slepc4py.SLEPc.EPS.ConvergedReason-class.html#CONVERGED_TOL
 slepc4py.SLEPc.EPS.ErrorType	slepc4py.SLEPc.EPS.ErrorType-class.html
-slepc4py.SLEPc.EPS.ErrorType.__qualname__	slepc4py.SLEPc.EPS.ErrorType-class.html#__qualname__
 slepc4py.SLEPc.EPS.ErrorType.RELATIVE	slepc4py.SLEPc.EPS.ErrorType-class.html#RELATIVE
+slepc4py.SLEPc.EPS.ErrorType.__qualname__	slepc4py.SLEPc.EPS.ErrorType-class.html#__qualname__
 slepc4py.SLEPc.EPS.ErrorType.BACKWARD	slepc4py.SLEPc.EPS.ErrorType-class.html#BACKWARD
 slepc4py.SLEPc.EPS.ErrorType.ABSOLUTE	slepc4py.SLEPc.EPS.ErrorType-class.html#ABSOLUTE
 slepc4py.SLEPc.EPS.Extraction	slepc4py.SLEPc.EPS.Extraction-class.html
-slepc4py.SLEPc.EPS.Extraction.HARMONIC	slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC
-slepc4py.SLEPc.EPS.Extraction.HARMONIC_RIGHT	slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC_RIGHT
-slepc4py.SLEPc.EPS.Extraction.HARMONIC_RELATIVE	slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC_RELATIVE
 slepc4py.SLEPc.EPS.Extraction.HARMONIC_LARGEST	slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC_LARGEST
-slepc4py.SLEPc.EPS.Extraction.REFINED_HARMONIC	slepc4py.SLEPc.EPS.Extraction-class.html#REFINED_HARMONIC
 slepc4py.SLEPc.EPS.Extraction.RITZ	slepc4py.SLEPc.EPS.Extraction-class.html#RITZ
+slepc4py.SLEPc.EPS.Extraction.REFINED_HARMONIC	slepc4py.SLEPc.EPS.Extraction-class.html#REFINED_HARMONIC
+slepc4py.SLEPc.EPS.Extraction.HARMONIC	slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC
 slepc4py.SLEPc.EPS.Extraction.__qualname__	slepc4py.SLEPc.EPS.Extraction-class.html#__qualname__
+slepc4py.SLEPc.EPS.Extraction.HARMONIC_RIGHT	slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC_RIGHT
+slepc4py.SLEPc.EPS.Extraction.HARMONIC_RELATIVE	slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC_RELATIVE
 slepc4py.SLEPc.EPS.Extraction.REFINED	slepc4py.SLEPc.EPS.Extraction-class.html#REFINED
 slepc4py.SLEPc.EPS.LanczosReorthogType	slepc4py.SLEPc.EPS.LanczosReorthogType-class.html
 slepc4py.SLEPc.EPS.LanczosReorthogType.FULL	slepc4py.SLEPc.EPS.LanczosReorthogType-class.html#FULL
@@ -290,10 +293,10 @@ slepc4py.SLEPc.EPS.LanczosReorthogType.SELECTIVE	slepc4py.SLEPc.EPS.LanczosReort
 slepc4py.SLEPc.EPS.LanczosReorthogType.LOCAL	slepc4py.SLEPc.EPS.LanczosReorthogType-class.html#LOCAL
 slepc4py.SLEPc.EPS.LanczosReorthogType.PERIODIC	slepc4py.SLEPc.EPS.LanczosReorthogType-class.html#PERIODIC
 slepc4py.SLEPc.EPS.PowerShiftType	slepc4py.SLEPc.EPS.PowerShiftType-class.html
-slepc4py.SLEPc.EPS.PowerShiftType.CONSTANT	slepc4py.SLEPc.EPS.PowerShiftType-class.html#CONSTANT
-slepc4py.SLEPc.EPS.PowerShiftType.RAYLEIGH	slepc4py.SLEPc.EPS.PowerShiftType-class.html#RAYLEIGH
 slepc4py.SLEPc.EPS.PowerShiftType.__qualname__	slepc4py.SLEPc.EPS.PowerShiftType-class.html#__qualname__
 slepc4py.SLEPc.EPS.PowerShiftType.WILKINSON	slepc4py.SLEPc.EPS.PowerShiftType-class.html#WILKINSON
+slepc4py.SLEPc.EPS.PowerShiftType.CONSTANT	slepc4py.SLEPc.EPS.PowerShiftType-class.html#CONSTANT
+slepc4py.SLEPc.EPS.PowerShiftType.RAYLEIGH	slepc4py.SLEPc.EPS.PowerShiftType-class.html#RAYLEIGH
 slepc4py.SLEPc.EPS.ProblemType	slepc4py.SLEPc.EPS.ProblemType-class.html
 slepc4py.SLEPc.EPS.ProblemType.GHEP	slepc4py.SLEPc.EPS.ProblemType-class.html#GHEP
 slepc4py.SLEPc.EPS.ProblemType.HEP	slepc4py.SLEPc.EPS.ProblemType-class.html#HEP
@@ -303,37 +306,37 @@ slepc4py.SLEPc.EPS.ProblemType.__qualname__	slepc4py.SLEPc.EPS.ProblemType-class
 slepc4py.SLEPc.EPS.ProblemType.NHEP	slepc4py.SLEPc.EPS.ProblemType-class.html#NHEP
 slepc4py.SLEPc.EPS.ProblemType.GNHEP	slepc4py.SLEPc.EPS.ProblemType-class.html#GNHEP
 slepc4py.SLEPc.EPS.Type	slepc4py.SLEPc.EPS.Type-class.html
-slepc4py.SLEPc.EPS.Type.SUBSPACE	slepc4py.SLEPc.EPS.Type-class.html#SUBSPACE
-slepc4py.SLEPc.EPS.Type.JD	slepc4py.SLEPc.EPS.Type-class.html#JD
-slepc4py.SLEPc.EPS.Type.LOBPCG	slepc4py.SLEPc.EPS.Type-class.html#LOBPCG
 slepc4py.SLEPc.EPS.Type.RQCG	slepc4py.SLEPc.EPS.Type-class.html#RQCG
+slepc4py.SLEPc.EPS.Type.PRIMME	slepc4py.SLEPc.EPS.Type-class.html#PRIMME
+slepc4py.SLEPc.EPS.Type.KRYLOVSCHUR	slepc4py.SLEPc.EPS.Type-class.html#KRYLOVSCHUR
 slepc4py.SLEPc.EPS.Type.POWER	slepc4py.SLEPc.EPS.Type-class.html#POWER
 slepc4py.SLEPc.EPS.Type.LAPACK	slepc4py.SLEPc.EPS.Type-class.html#LAPACK
+slepc4py.SLEPc.EPS.Type.SUBSPACE	slepc4py.SLEPc.EPS.Type-class.html#SUBSPACE
+slepc4py.SLEPc.EPS.Type.FEAST	slepc4py.SLEPc.EPS.Type-class.html#FEAST
 slepc4py.SLEPc.EPS.Type.CISS	slepc4py.SLEPc.EPS.Type-class.html#CISS
+slepc4py.SLEPc.EPS.Type.__qualname__	slepc4py.SLEPc.EPS.Type-class.html#__qualname__
+slepc4py.SLEPc.EPS.Type.BLZPACK	slepc4py.SLEPc.EPS.Type-class.html#BLZPACK
 slepc4py.SLEPc.EPS.Type.TRLAN	slepc4py.SLEPc.EPS.Type-class.html#TRLAN
+slepc4py.SLEPc.EPS.Type.GD	slepc4py.SLEPc.EPS.Type-class.html#GD
 slepc4py.SLEPc.EPS.Type.ARNOLDI	slepc4py.SLEPc.EPS.Type-class.html#ARNOLDI
 slepc4py.SLEPc.EPS.Type.LANCZOS	slepc4py.SLEPc.EPS.Type-class.html#LANCZOS
-slepc4py.SLEPc.EPS.Type.ARPACK	slepc4py.SLEPc.EPS.Type-class.html#ARPACK
-slepc4py.SLEPc.EPS.Type.KRYLOVSCHUR	slepc4py.SLEPc.EPS.Type-class.html#KRYLOVSCHUR
-slepc4py.SLEPc.EPS.Type.FEAST	slepc4py.SLEPc.EPS.Type-class.html#FEAST
-slepc4py.SLEPc.EPS.Type.GD	slepc4py.SLEPc.EPS.Type-class.html#GD
+slepc4py.SLEPc.EPS.Type.JD	slepc4py.SLEPc.EPS.Type-class.html#JD
+slepc4py.SLEPc.EPS.Type.LOBPCG	slepc4py.SLEPc.EPS.Type-class.html#LOBPCG
 slepc4py.SLEPc.EPS.Type.BLOPEX	slepc4py.SLEPc.EPS.Type-class.html#BLOPEX
-slepc4py.SLEPc.EPS.Type.PRIMME	slepc4py.SLEPc.EPS.Type-class.html#PRIMME
-slepc4py.SLEPc.EPS.Type.__qualname__	slepc4py.SLEPc.EPS.Type-class.html#__qualname__
-slepc4py.SLEPc.EPS.Type.BLZPACK	slepc4py.SLEPc.EPS.Type-class.html#BLZPACK
+slepc4py.SLEPc.EPS.Type.ARPACK	slepc4py.SLEPc.EPS.Type-class.html#ARPACK
 slepc4py.SLEPc.EPS.Which	slepc4py.SLEPc.EPS.Which-class.html
+slepc4py.SLEPc.EPS.Which.ALL	slepc4py.SLEPc.EPS.Which-class.html#ALL
 slepc4py.SLEPc.EPS.Which.TARGET_MAGNITUDE	slepc4py.SLEPc.EPS.Which-class.html#TARGET_MAGNITUDE
 slepc4py.SLEPc.EPS.Which.LARGEST_IMAGINARY	slepc4py.SLEPc.EPS.Which-class.html#LARGEST_IMAGINARY
-slepc4py.SLEPc.EPS.Which.USER	slepc4py.SLEPc.EPS.Which-class.html#USER
-slepc4py.SLEPc.EPS.Which.SMALLEST_REAL	slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_REAL
-slepc4py.SLEPc.EPS.Which.SMALLEST_MAGNITUDE	slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_MAGNITUDE
-slepc4py.SLEPc.EPS.Which.SMALLEST_IMAGINARY	slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_IMAGINARY
-slepc4py.SLEPc.EPS.Which.LARGEST_REAL	slepc4py.SLEPc.EPS.Which-class.html#LARGEST_REAL
-slepc4py.SLEPc.EPS.Which.ALL	slepc4py.SLEPc.EPS.Which-class.html#ALL
 slepc4py.SLEPc.EPS.Which.LARGEST_MAGNITUDE	slepc4py.SLEPc.EPS.Which-class.html#LARGEST_MAGNITUDE
 slepc4py.SLEPc.EPS.Which.__qualname__	slepc4py.SLEPc.EPS.Which-class.html#__qualname__
+slepc4py.SLEPc.EPS.Which.SMALLEST_IMAGINARY	slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_IMAGINARY
+slepc4py.SLEPc.EPS.Which.SMALLEST_REAL	slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_REAL
+slepc4py.SLEPc.EPS.Which.USER	slepc4py.SLEPc.EPS.Which-class.html#USER
 slepc4py.SLEPc.EPS.Which.TARGET_IMAGINARY	slepc4py.SLEPc.EPS.Which-class.html#TARGET_IMAGINARY
+slepc4py.SLEPc.EPS.Which.LARGEST_REAL	slepc4py.SLEPc.EPS.Which-class.html#LARGEST_REAL
 slepc4py.SLEPc.EPS.Which.TARGET_REAL	slepc4py.SLEPc.EPS.Which-class.html#TARGET_REAL
+slepc4py.SLEPc.EPS.Which.SMALLEST_MAGNITUDE	slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_MAGNITUDE
 slepc4py.SLEPc.FN	slepc4py.SLEPc.FN-class.html
 slepc4py.SLEPc.FN.evaluateFunction	slepc4py.SLEPc.FN-class.html#evaluateFunction
 slepc4py.SLEPc.FN.setScale	slepc4py.SLEPc.FN-class.html#setScale
@@ -353,20 +356,20 @@ slepc4py.SLEPc.FN.getScale	slepc4py.SLEPc.FN-class.html#getScale
 slepc4py.SLEPc.FN.setRationalDenominator	slepc4py.SLEPc.FN-class.html#setRationalDenominator
 slepc4py.SLEPc.FN.view	slepc4py.SLEPc.FN-class.html#view
 slepc4py.SLEPc.FN.CombineType	slepc4py.SLEPc.FN.CombineType-class.html
-slepc4py.SLEPc.FN.CombineType.COMPOSE	slepc4py.SLEPc.FN.CombineType-class.html#COMPOSE
-slepc4py.SLEPc.FN.CombineType.DIVIDE	slepc4py.SLEPc.FN.CombineType-class.html#DIVIDE
 slepc4py.SLEPc.FN.CombineType.__qualname__	slepc4py.SLEPc.FN.CombineType-class.html#__qualname__
-slepc4py.SLEPc.FN.CombineType.ADD	slepc4py.SLEPc.FN.CombineType-class.html#ADD
 slepc4py.SLEPc.FN.CombineType.MULTIPLY	slepc4py.SLEPc.FN.CombineType-class.html#MULTIPLY
+slepc4py.SLEPc.FN.CombineType.ADD	slepc4py.SLEPc.FN.CombineType-class.html#ADD
+slepc4py.SLEPc.FN.CombineType.COMPOSE	slepc4py.SLEPc.FN.CombineType-class.html#COMPOSE
+slepc4py.SLEPc.FN.CombineType.DIVIDE	slepc4py.SLEPc.FN.CombineType-class.html#DIVIDE
 slepc4py.SLEPc.FN.Type	slepc4py.SLEPc.FN.Type-class.html
-slepc4py.SLEPc.FN.Type.LOG	slepc4py.SLEPc.FN.Type-class.html#LOG
-slepc4py.SLEPc.FN.Type.COMBINE	slepc4py.SLEPc.FN.Type-class.html#COMBINE
-slepc4py.SLEPc.FN.Type.EXP	slepc4py.SLEPc.FN.Type-class.html#EXP
-slepc4py.SLEPc.FN.Type.INVSQRT	slepc4py.SLEPc.FN.Type-class.html#INVSQRT
-slepc4py.SLEPc.FN.Type.RATIONAL	slepc4py.SLEPc.FN.Type-class.html#RATIONAL
 slepc4py.SLEPc.FN.Type.PHI	slepc4py.SLEPc.FN.Type-class.html#PHI
+slepc4py.SLEPc.FN.Type.RATIONAL	slepc4py.SLEPc.FN.Type-class.html#RATIONAL
+slepc4py.SLEPc.FN.Type.INVSQRT	slepc4py.SLEPc.FN.Type-class.html#INVSQRT
 slepc4py.SLEPc.FN.Type.SQRT	slepc4py.SLEPc.FN.Type-class.html#SQRT
 slepc4py.SLEPc.FN.Type.__qualname__	slepc4py.SLEPc.FN.Type-class.html#__qualname__
+slepc4py.SLEPc.FN.Type.COMBINE	slepc4py.SLEPc.FN.Type-class.html#COMBINE
+slepc4py.SLEPc.FN.Type.EXP	slepc4py.SLEPc.FN.Type-class.html#EXP
+slepc4py.SLEPc.FN.Type.LOG	slepc4py.SLEPc.FN.Type-class.html#LOG
 slepc4py.SLEPc.MFN	slepc4py.SLEPc.MFN-class.html
 slepc4py.SLEPc.MFN.setTolerances	slepc4py.SLEPc.MFN-class.html#setTolerances
 slepc4py.SLEPc.MFN.setDimensions	slepc4py.SLEPc.MFN-class.html#setDimensions
@@ -409,75 +412,75 @@ slepc4py.SLEPc.MFN.Type.__qualname__	slepc4py.SLEPc.MFN.Type-class.html#__qualna
 slepc4py.SLEPc.MFN.Type.KRYLOV	slepc4py.SLEPc.MFN.Type-class.html#KRYLOV
 slepc4py.SLEPc.MFN.Type.EXPOKIT	slepc4py.SLEPc.MFN.Type-class.html#EXPOKIT
 slepc4py.SLEPc.NEP	slepc4py.SLEPc.NEP-class.html
+slepc4py.SLEPc.NEP.setTolerances	slepc4py.SLEPc.NEP-class.html#setTolerances
 slepc4py.SLEPc.NEP.setWhichEigenpairs	slepc4py.SLEPc.NEP-class.html#setWhichEigenpairs
+slepc4py.SLEPc.NEP.getEigenpair	slepc4py.SLEPc.NEP-class.html#getEigenpair
+slepc4py.SLEPc.NEP.Which	slepc4py.SLEPc.NEP.Which-class.html
 slepc4py.SLEPc.NEP.cancelMonitor	slepc4py.SLEPc.NEP-class.html#cancelMonitor
+slepc4py.SLEPc.NEP.setDimensions	slepc4py.SLEPc.NEP-class.html#setDimensions
+slepc4py.SLEPc.NEP.ConvergedReason	slepc4py.SLEPc.NEP.ConvergedReason-class.html
+slepc4py.SLEPc.NEP.setJacobian	slepc4py.SLEPc.NEP-class.html#setJacobian
+slepc4py.SLEPc.NEP.setBV	slepc4py.SLEPc.NEP-class.html#setBV
+slepc4py.SLEPc.NEP.getWhichEigenpairs	slepc4py.SLEPc.NEP-class.html#getWhichEigenpairs
 slepc4py.SLEPc.NEP.getRG	slepc4py.SLEPc.NEP-class.html#getRG
+slepc4py.SLEPc.NEP.Type	slepc4py.SLEPc.NEP.Type-class.html
+slepc4py.SLEPc.NEP.setTrackAll	slepc4py.SLEPc.NEP-class.html#setTrackAll
+slepc4py.SLEPc.NEP.setType	slepc4py.SLEPc.NEP-class.html#setType
 slepc4py.SLEPc.NEP.computeError	slepc4py.SLEPc.NEP-class.html#computeError
 slepc4py.SLEPc.NEP.errorView	slepc4py.SLEPc.NEP-class.html#errorView
+slepc4py.SLEPc.NEP.__new__	slepc4py.SLEPc.NEP-class.html#__new__
 slepc4py.SLEPc.NEP.RefineScheme	slepc4py.SLEPc.NEP.RefineScheme-class.html
+slepc4py.SLEPc.NEP.create	slepc4py.SLEPc.NEP-class.html#create
+slepc4py.SLEPc.NEP.getErrorEstimate	slepc4py.SLEPc.NEP-class.html#getErrorEstimate
 slepc4py.SLEPc.NEP.appendOptionsPrefix	slepc4py.SLEPc.NEP-class.html#appendOptionsPrefix
+slepc4py.SLEPc.NEP.setRG	slepc4py.SLEPc.NEP-class.html#setRG
+slepc4py.SLEPc.NEP.getConverged	slepc4py.SLEPc.NEP-class.html#getConverged
+slepc4py.SLEPc.NEP.destroy	slepc4py.SLEPc.NEP-class.html#destroy
 slepc4py.SLEPc.NEP.getConvergedReason	slepc4py.SLEPc.NEP-class.html#getConvergedReason
+slepc4py.SLEPc.NEP.getRIILagPreconditioner	slepc4py.SLEPc.NEP-class.html#getRIILagPreconditioner
 slepc4py.SLEPc.NEP.setInitialSpace	slepc4py.SLEPc.NEP-class.html#setInitialSpace
 slepc4py.SLEPc.NEP.setOptionsPrefix	slepc4py.SLEPc.NEP-class.html#setOptionsPrefix
-slepc4py.SLEPc.NEP.getDimensions	slepc4py.SLEPc.NEP-class.html#getDimensions
-slepc4py.SLEPc.NEP.setFromOptions	slepc4py.SLEPc.NEP-class.html#setFromOptions
-slepc4py.SLEPc.NEP.getBV	slepc4py.SLEPc.NEP-class.html#getBV
-slepc4py.SLEPc.NEP.view	slepc4py.SLEPc.NEP-class.html#view
-slepc4py.SLEPc.NEP.ConvergedReason	slepc4py.SLEPc.NEP.ConvergedReason-class.html
-slepc4py.SLEPc.NEP.setJacobian	slepc4py.SLEPc.NEP-class.html#setJacobian
-slepc4py.SLEPc.NEP.Which	slepc4py.SLEPc.NEP.Which-class.html
-slepc4py.SLEPc.NEP.Type	slepc4py.SLEPc.NEP.Type-class.html
 slepc4py.SLEPc.NEP.setUp	slepc4py.SLEPc.NEP-class.html#setUp
+slepc4py.SLEPc.NEP.getType	slepc4py.SLEPc.NEP-class.html#getType
+slepc4py.SLEPc.NEP.getTolerances	slepc4py.SLEPc.NEP-class.html#getTolerances
+slepc4py.SLEPc.NEP.getDimensions	slepc4py.SLEPc.NEP-class.html#getDimensions
+slepc4py.SLEPc.NEP.setSplitOperator	slepc4py.SLEPc.NEP-class.html#setSplitOperator
 slepc4py.SLEPc.NEP.getOptionsPrefix	slepc4py.SLEPc.NEP-class.html#getOptionsPrefix
-slepc4py.SLEPc.NEP.Refine	slepc4py.SLEPc.NEP.Refine-class.html
-slepc4py.SLEPc.NEP.setTolerances	slepc4py.SLEPc.NEP-class.html#setTolerances
-slepc4py.SLEPc.NEP.getEigenpair	slepc4py.SLEPc.NEP-class.html#getEigenpair
-slepc4py.SLEPc.NEP.getConverged	slepc4py.SLEPc.NEP-class.html#getConverged
-slepc4py.SLEPc.NEP.setType	slepc4py.SLEPc.NEP-class.html#setType
 slepc4py.SLEPc.NEP.setFunction	slepc4py.SLEPc.NEP-class.html#setFunction
-slepc4py.SLEPc.NEP.create	slepc4py.SLEPc.NEP-class.html#create
-slepc4py.SLEPc.NEP.getType	slepc4py.SLEPc.NEP-class.html#getType
+slepc4py.SLEPc.NEP.setFromOptions	slepc4py.SLEPc.NEP-class.html#setFromOptions
 slepc4py.SLEPc.NEP.getTrackAll	slepc4py.SLEPc.NEP-class.html#getTrackAll
 slepc4py.SLEPc.NEP.reset	slepc4py.SLEPc.NEP-class.html#reset
-slepc4py.SLEPc.NEP.ErrorType	slepc4py.SLEPc.NEP.ErrorType-class.html
-slepc4py.SLEPc.NEP.getIterationNumber	slepc4py.SLEPc.NEP-class.html#getIterationNumber
-slepc4py.SLEPc.NEP.setDimensions	slepc4py.SLEPc.NEP-class.html#setDimensions
-slepc4py.SLEPc.NEP.getWhichEigenpairs	slepc4py.SLEPc.NEP-class.html#getWhichEigenpairs
-slepc4py.SLEPc.NEP.setBV	slepc4py.SLEPc.NEP-class.html#setBV
-slepc4py.SLEPc.NEP.setTrackAll	slepc4py.SLEPc.NEP-class.html#setTrackAll
-slepc4py.SLEPc.NEP.__new__	slepc4py.SLEPc.NEP-class.html#__new__
-slepc4py.SLEPc.NEP.getErrorEstimate	slepc4py.SLEPc.NEP-class.html#getErrorEstimate
-slepc4py.SLEPc.NEP.setRG	slepc4py.SLEPc.NEP-class.html#setRG
-slepc4py.SLEPc.NEP.destroy	slepc4py.SLEPc.NEP-class.html#destroy
-slepc4py.SLEPc.NEP.getRIILagPreconditioner	slepc4py.SLEPc.NEP-class.html#getRIILagPreconditioner
-slepc4py.SLEPc.NEP.getTolerances	slepc4py.SLEPc.NEP-class.html#getTolerances
-slepc4py.SLEPc.NEP.setSplitOperator	slepc4py.SLEPc.NEP-class.html#setSplitOperator
 slepc4py.SLEPc.NEP.setRIILagPreconditioner	slepc4py.SLEPc.NEP-class.html#setRIILagPreconditioner
+slepc4py.SLEPc.NEP.ErrorType	slepc4py.SLEPc.NEP.ErrorType-class.html
 slepc4py.SLEPc.NEP.solve	slepc4py.SLEPc.NEP-class.html#solve
+slepc4py.SLEPc.NEP.Refine	slepc4py.SLEPc.NEP.Refine-class.html
+slepc4py.SLEPc.NEP.getBV	slepc4py.SLEPc.NEP-class.html#getBV
+slepc4py.SLEPc.NEP.getIterationNumber	slepc4py.SLEPc.NEP-class.html#getIterationNumber
+slepc4py.SLEPc.NEP.view	slepc4py.SLEPc.NEP-class.html#view
 slepc4py.SLEPc.NEP.ConvergedReason	slepc4py.SLEPc.NEP.ConvergedReason-class.html
 slepc4py.SLEPc.NEP.ConvergedReason.DIVERGED_BREAKDOWN	slepc4py.SLEPc.NEP.ConvergedReason-class.html#DIVERGED_BREAKDOWN
-slepc4py.SLEPc.NEP.ConvergedReason.CONVERGED_USER	slepc4py.SLEPc.NEP.ConvergedReason-class.html#CONVERGED_USER
-slepc4py.SLEPc.NEP.ConvergedReason.CONVERGED_TOL	slepc4py.SLEPc.NEP.ConvergedReason-class.html#CONVERGED_TOL
 slepc4py.SLEPc.NEP.ConvergedReason.ITERATING	slepc4py.SLEPc.NEP.ConvergedReason-class.html#ITERATING
-slepc4py.SLEPc.NEP.ConvergedReason.CONVERGED_ITERATING	slepc4py.SLEPc.NEP.ConvergedReason-class.html#CONVERGED_ITERATING
-slepc4py.SLEPc.NEP.ConvergedReason.DIVERGED_ITS	slepc4py.SLEPc.NEP.ConvergedReason-class.html#DIVERGED_ITS
 slepc4py.SLEPc.NEP.ConvergedReason.__qualname__	slepc4py.SLEPc.NEP.ConvergedReason-class.html#__qualname__
+slepc4py.SLEPc.NEP.ConvergedReason.CONVERGED_USER	slepc4py.SLEPc.NEP.ConvergedReason-class.html#CONVERGED_USER
+slepc4py.SLEPc.NEP.ConvergedReason.CONVERGED_ITERATING	slepc4py.SLEPc.NEP.ConvergedReason-class.html#CONVERGED_ITERATING
 slepc4py.SLEPc.NEP.ConvergedReason.DIVERGED_LINEAR_SOLVE	slepc4py.SLEPc.NEP.ConvergedReason-class.html#DIVERGED_LINEAR_SOLVE
+slepc4py.SLEPc.NEP.ConvergedReason.DIVERGED_ITS	slepc4py.SLEPc.NEP.ConvergedReason-class.html#DIVERGED_ITS
+slepc4py.SLEPc.NEP.ConvergedReason.CONVERGED_TOL	slepc4py.SLEPc.NEP.ConvergedReason-class.html#CONVERGED_TOL
 slepc4py.SLEPc.NEP.ErrorType	slepc4py.SLEPc.NEP.ErrorType-class.html
-slepc4py.SLEPc.NEP.ErrorType.__qualname__	slepc4py.SLEPc.NEP.ErrorType-class.html#__qualname__
 slepc4py.SLEPc.NEP.ErrorType.RELATIVE	slepc4py.SLEPc.NEP.ErrorType-class.html#RELATIVE
+slepc4py.SLEPc.NEP.ErrorType.__qualname__	slepc4py.SLEPc.NEP.ErrorType-class.html#__qualname__
 slepc4py.SLEPc.NEP.ErrorType.BACKWARD	slepc4py.SLEPc.NEP.ErrorType-class.html#BACKWARD
 slepc4py.SLEPc.NEP.ErrorType.ABSOLUTE	slepc4py.SLEPc.NEP.ErrorType-class.html#ABSOLUTE
 slepc4py.SLEPc.NEP.Refine	slepc4py.SLEPc.NEP.Refine-class.html
+slepc4py.SLEPc.NEP.Refine.__qualname__	slepc4py.SLEPc.NEP.Refine-class.html#__qualname__
+slepc4py.SLEPc.NEP.Refine.SIMPLE	slepc4py.SLEPc.NEP.Refine-class.html#SIMPLE
 slepc4py.SLEPc.NEP.Refine.NONE	slepc4py.SLEPc.NEP.Refine-class.html#NONE
 slepc4py.SLEPc.NEP.Refine.MULTIPLE	slepc4py.SLEPc.NEP.Refine-class.html#MULTIPLE
-slepc4py.SLEPc.NEP.Refine.SIMPLE	slepc4py.SLEPc.NEP.Refine-class.html#SIMPLE
-slepc4py.SLEPc.NEP.Refine.__qualname__	slepc4py.SLEPc.NEP.Refine-class.html#__qualname__
 slepc4py.SLEPc.NEP.RefineScheme	slepc4py.SLEPc.NEP.RefineScheme-class.html
-slepc4py.SLEPc.NEP.RefineScheme.SCHUR	slepc4py.SLEPc.NEP.RefineScheme-class.html#SCHUR
+slepc4py.SLEPc.NEP.RefineScheme.__qualname__	slepc4py.SLEPc.NEP.RefineScheme-class.html#__qualname__
 slepc4py.SLEPc.NEP.RefineScheme.MBE	slepc4py.SLEPc.NEP.RefineScheme-class.html#MBE
+slepc4py.SLEPc.NEP.RefineScheme.SCHUR	slepc4py.SLEPc.NEP.RefineScheme-class.html#SCHUR
 slepc4py.SLEPc.NEP.RefineScheme.EXPLICIT	slepc4py.SLEPc.NEP.RefineScheme-class.html#EXPLICIT
-slepc4py.SLEPc.NEP.RefineScheme.__qualname__	slepc4py.SLEPc.NEP.RefineScheme-class.html#__qualname__
 slepc4py.SLEPc.NEP.Type	slepc4py.SLEPc.NEP.Type-class.html
 slepc4py.SLEPc.NEP.Type.NARNOLDI	slepc4py.SLEPc.NEP.Type-class.html#NARNOLDI
 slepc4py.SLEPc.NEP.Type.SLP	slepc4py.SLEPc.NEP.Type-class.html#SLP
@@ -487,31 +490,30 @@ slepc4py.SLEPc.NEP.Type.INTERPOL	slepc4py.SLEPc.NEP.Type-class.html#INTERPOL
 slepc4py.SLEPc.NEP.Type.RII	slepc4py.SLEPc.NEP.Type-class.html#RII
 slepc4py.SLEPc.NEP.Type.NLEIGS	slepc4py.SLEPc.NEP.Type-class.html#NLEIGS
 slepc4py.SLEPc.NEP.Which	slepc4py.SLEPc.NEP.Which-class.html
+slepc4py.SLEPc.NEP.Which.ALL	slepc4py.SLEPc.NEP.Which-class.html#ALL
 slepc4py.SLEPc.NEP.Which.TARGET_MAGNITUDE	slepc4py.SLEPc.NEP.Which-class.html#TARGET_MAGNITUDE
 slepc4py.SLEPc.NEP.Which.LARGEST_IMAGINARY	slepc4py.SLEPc.NEP.Which-class.html#LARGEST_IMAGINARY
-slepc4py.SLEPc.NEP.Which.USER	slepc4py.SLEPc.NEP.Which-class.html#USER
-slepc4py.SLEPc.NEP.Which.SMALLEST_REAL	slepc4py.SLEPc.NEP.Which-class.html#SMALLEST_REAL
-slepc4py.SLEPc.NEP.Which.SMALLEST_MAGNITUDE	slepc4py.SLEPc.NEP.Which-class.html#SMALLEST_MAGNITUDE
-slepc4py.SLEPc.NEP.Which.SMALLEST_IMAGINARY	slepc4py.SLEPc.NEP.Which-class.html#SMALLEST_IMAGINARY
-slepc4py.SLEPc.NEP.Which.LARGEST_REAL	slepc4py.SLEPc.NEP.Which-class.html#LARGEST_REAL
-slepc4py.SLEPc.NEP.Which.ALL	slepc4py.SLEPc.NEP.Which-class.html#ALL
 slepc4py.SLEPc.NEP.Which.LARGEST_MAGNITUDE	slepc4py.SLEPc.NEP.Which-class.html#LARGEST_MAGNITUDE
 slepc4py.SLEPc.NEP.Which.__qualname__	slepc4py.SLEPc.NEP.Which-class.html#__qualname__
+slepc4py.SLEPc.NEP.Which.SMALLEST_IMAGINARY	slepc4py.SLEPc.NEP.Which-class.html#SMALLEST_IMAGINARY
+slepc4py.SLEPc.NEP.Which.SMALLEST_REAL	slepc4py.SLEPc.NEP.Which-class.html#SMALLEST_REAL
+slepc4py.SLEPc.NEP.Which.USER	slepc4py.SLEPc.NEP.Which-class.html#USER
 slepc4py.SLEPc.NEP.Which.TARGET_IMAGINARY	slepc4py.SLEPc.NEP.Which-class.html#TARGET_IMAGINARY
+slepc4py.SLEPc.NEP.Which.LARGEST_REAL	slepc4py.SLEPc.NEP.Which-class.html#LARGEST_REAL
 slepc4py.SLEPc.NEP.Which.TARGET_REAL	slepc4py.SLEPc.NEP.Which-class.html#TARGET_REAL
+slepc4py.SLEPc.NEP.Which.SMALLEST_MAGNITUDE	slepc4py.SLEPc.NEP.Which-class.html#SMALLEST_MAGNITUDE
 slepc4py.SLEPc.PEP	slepc4py.SLEPc.PEP-class.html
 slepc4py.SLEPc.PEP.setWhichEigenpairs	slepc4py.SLEPc.PEP-class.html#setWhichEigenpairs
 slepc4py.SLEPc.PEP.cancelMonitor	slepc4py.SLEPc.PEP-class.html#cancelMonitor
 slepc4py.SLEPc.PEP.getRG	slepc4py.SLEPc.PEP-class.html#getRG
 slepc4py.SLEPc.PEP.computeError	slepc4py.SLEPc.PEP-class.html#computeError
-slepc4py.SLEPc.PEP.errorView	slepc4py.SLEPc.PEP-class.html#errorView
 slepc4py.SLEPc.PEP.RefineScheme	slepc4py.SLEPc.PEP.RefineScheme-class.html
 slepc4py.SLEPc.PEP.appendOptionsPrefix	slepc4py.SLEPc.PEP-class.html#appendOptionsPrefix
 slepc4py.SLEPc.PEP.setOperators	slepc4py.SLEPc.PEP-class.html#setOperators
 slepc4py.SLEPc.PEP.getConvergedReason	slepc4py.SLEPc.PEP-class.html#getConvergedReason
 slepc4py.SLEPc.PEP.setInitialSpace	slepc4py.SLEPc.PEP-class.html#setInitialSpace
 slepc4py.SLEPc.PEP.setOptionsPrefix	slepc4py.SLEPc.PEP-class.html#setOptionsPrefix
-slepc4py.SLEPc.PEP.getDimensions	slepc4py.SLEPc.PEP-class.html#getDimensions
+slepc4py.SLEPc.PEP.ProblemType	slepc4py.SLEPc.PEP.ProblemType-class.html
 slepc4py.SLEPc.PEP.setFromOptions	slepc4py.SLEPc.PEP-class.html#setFromOptions
 slepc4py.SLEPc.PEP.setST	slepc4py.SLEPc.PEP-class.html#setST
 slepc4py.SLEPc.PEP.getBV	slepc4py.SLEPc.PEP-class.html#getBV
@@ -527,6 +529,7 @@ slepc4py.SLEPc.PEP.setUp	slepc4py.SLEPc.PEP-class.html#setUp
 slepc4py.SLEPc.PEP.getST	slepc4py.SLEPc.PEP-class.html#getST
 slepc4py.SLEPc.PEP.getOptionsPrefix	slepc4py.SLEPc.PEP-class.html#getOptionsPrefix
 slepc4py.SLEPc.PEP.setConvergenceTest	slepc4py.SLEPc.PEP-class.html#setConvergenceTest
+slepc4py.SLEPc.PEP.errorView	slepc4py.SLEPc.PEP-class.html#errorView
 slepc4py.SLEPc.PEP.setLinearExplicitMatrix	slepc4py.SLEPc.PEP-class.html#setLinearExplicitMatrix
 slepc4py.SLEPc.PEP.getBasis	slepc4py.SLEPc.PEP-class.html#getBasis
 slepc4py.SLEPc.PEP.Extract	slepc4py.SLEPc.PEP.Extract-class.html
@@ -536,11 +539,13 @@ slepc4py.SLEPc.PEP.setTolerances	slepc4py.SLEPc.PEP-class.html#setTolerances
 slepc4py.SLEPc.PEP.getEigenpair	slepc4py.SLEPc.PEP-class.html#getEigenpair
 slepc4py.SLEPc.PEP.Basis	slepc4py.SLEPc.PEP.Basis-class.html
 slepc4py.SLEPc.PEP.getConverged	slepc4py.SLEPc.PEP-class.html#getConverged
+slepc4py.SLEPc.PEP.getTarget	slepc4py.SLEPc.PEP-class.html#getTarget
 slepc4py.SLEPc.PEP.getLinearCompanionForm	slepc4py.SLEPc.PEP-class.html#getLinearCompanionForm
 slepc4py.SLEPc.PEP.setType	slepc4py.SLEPc.PEP-class.html#setType
 slepc4py.SLEPc.PEP.getOperators	slepc4py.SLEPc.PEP-class.html#getOperators
 slepc4py.SLEPc.PEP.create	slepc4py.SLEPc.PEP-class.html#create
 slepc4py.SLEPc.PEP.getProblemType	slepc4py.SLEPc.PEP-class.html#getProblemType
+slepc4py.SLEPc.PEP.setTarget	slepc4py.SLEPc.PEP-class.html#setTarget
 slepc4py.SLEPc.PEP.getType	slepc4py.SLEPc.PEP-class.html#getType
 slepc4py.SLEPc.PEP.getTrackAll	slepc4py.SLEPc.PEP-class.html#getTrackAll
 slepc4py.SLEPc.PEP.reset	slepc4py.SLEPc.PEP-class.html#reset
@@ -559,7 +564,7 @@ slepc4py.SLEPc.PEP.setRG	slepc4py.SLEPc.PEP-class.html#setRG
 slepc4py.SLEPc.PEP.destroy	slepc4py.SLEPc.PEP-class.html#destroy
 slepc4py.SLEPc.PEP.setProblemType	slepc4py.SLEPc.PEP-class.html#setProblemType
 slepc4py.SLEPc.PEP.getTolerances	slepc4py.SLEPc.PEP-class.html#getTolerances
-slepc4py.SLEPc.PEP.ProblemType	slepc4py.SLEPc.PEP.ProblemType-class.html
+slepc4py.SLEPc.PEP.getDimensions	slepc4py.SLEPc.PEP-class.html#getDimensions
 slepc4py.SLEPc.PEP.getScale	slepc4py.SLEPc.PEP-class.html#getScale
 slepc4py.SLEPc.PEP.setLinearEPS	slepc4py.SLEPc.PEP-class.html#setLinearEPS
 slepc4py.SLEPc.PEP.solve	slepc4py.SLEPc.PEP-class.html#solve
@@ -575,51 +580,51 @@ slepc4py.SLEPc.PEP.Basis.HERMITE	slepc4py.SLEPc.PEP.Basis-class.html#HERMITE
 slepc4py.SLEPc.PEP.Basis.__qualname__	slepc4py.SLEPc.PEP.Basis-class.html#__qualname__
 slepc4py.SLEPc.PEP.Conv	slepc4py.SLEPc.PEP.Conv-class.html
 slepc4py.SLEPc.PEP.Conv.__qualname__	slepc4py.SLEPc.PEP.Conv-class.html#__qualname__
+slepc4py.SLEPc.PEP.Conv.NORM	slepc4py.SLEPc.PEP.Conv-class.html#NORM
 slepc4py.SLEPc.PEP.Conv.ABS	slepc4py.SLEPc.PEP.Conv-class.html#ABS
 slepc4py.SLEPc.PEP.Conv.USER	slepc4py.SLEPc.PEP.Conv-class.html#USER
 slepc4py.SLEPc.PEP.Conv.REL	slepc4py.SLEPc.PEP.Conv-class.html#REL
-slepc4py.SLEPc.PEP.Conv.NORM	slepc4py.SLEPc.PEP.Conv-class.html#NORM
 slepc4py.SLEPc.PEP.ConvergedReason	slepc4py.SLEPc.PEP.ConvergedReason-class.html
 slepc4py.SLEPc.PEP.ConvergedReason.DIVERGED_BREAKDOWN	slepc4py.SLEPc.PEP.ConvergedReason-class.html#DIVERGED_BREAKDOWN
+slepc4py.SLEPc.PEP.ConvergedReason.ITERATING	slepc4py.SLEPc.PEP.ConvergedReason-class.html#ITERATING
+slepc4py.SLEPc.PEP.ConvergedReason.__qualname__	slepc4py.SLEPc.PEP.ConvergedReason-class.html#__qualname__
 slepc4py.SLEPc.PEP.ConvergedReason.CONVERGED_USER	slepc4py.SLEPc.PEP.ConvergedReason-class.html#CONVERGED_USER
 slepc4py.SLEPc.PEP.ConvergedReason.DIVERGED_SYMMETRY_LOST	slepc4py.SLEPc.PEP.ConvergedReason-class.html#DIVERGED_SYMMETRY_LOST
-slepc4py.SLEPc.PEP.ConvergedReason.CONVERGED_TOL	slepc4py.SLEPc.PEP.ConvergedReason-class.html#CONVERGED_TOL
-slepc4py.SLEPc.PEP.ConvergedReason.ITERATING	slepc4py.SLEPc.PEP.ConvergedReason-class.html#ITERATING
 slepc4py.SLEPc.PEP.ConvergedReason.CONVERGED_ITERATING	slepc4py.SLEPc.PEP.ConvergedReason-class.html#CONVERGED_ITERATING
 slepc4py.SLEPc.PEP.ConvergedReason.DIVERGED_ITS	slepc4py.SLEPc.PEP.ConvergedReason-class.html#DIVERGED_ITS
-slepc4py.SLEPc.PEP.ConvergedReason.__qualname__	slepc4py.SLEPc.PEP.ConvergedReason-class.html#__qualname__
+slepc4py.SLEPc.PEP.ConvergedReason.CONVERGED_TOL	slepc4py.SLEPc.PEP.ConvergedReason-class.html#CONVERGED_TOL
 slepc4py.SLEPc.PEP.ErrorType	slepc4py.SLEPc.PEP.ErrorType-class.html
-slepc4py.SLEPc.PEP.ErrorType.__qualname__	slepc4py.SLEPc.PEP.ErrorType-class.html#__qualname__
 slepc4py.SLEPc.PEP.ErrorType.RELATIVE	slepc4py.SLEPc.PEP.ErrorType-class.html#RELATIVE
+slepc4py.SLEPc.PEP.ErrorType.__qualname__	slepc4py.SLEPc.PEP.ErrorType-class.html#__qualname__
 slepc4py.SLEPc.PEP.ErrorType.BACKWARD	slepc4py.SLEPc.PEP.ErrorType-class.html#BACKWARD
 slepc4py.SLEPc.PEP.ErrorType.ABSOLUTE	slepc4py.SLEPc.PEP.ErrorType-class.html#ABSOLUTE
 slepc4py.SLEPc.PEP.Extract	slepc4py.SLEPc.PEP.Extract-class.html
+slepc4py.SLEPc.PEP.Extract.__qualname__	slepc4py.SLEPc.PEP.Extract-class.html#__qualname__
 slepc4py.SLEPc.PEP.Extract.NONE	slepc4py.SLEPc.PEP.Extract-class.html#NONE
 slepc4py.SLEPc.PEP.Extract.STRUCTURED	slepc4py.SLEPc.PEP.Extract-class.html#STRUCTURED
 slepc4py.SLEPc.PEP.Extract.RESIDUAL	slepc4py.SLEPc.PEP.Extract-class.html#RESIDUAL
-slepc4py.SLEPc.PEP.Extract.__qualname__	slepc4py.SLEPc.PEP.Extract-class.html#__qualname__
 slepc4py.SLEPc.PEP.Extract.NORM	slepc4py.SLEPc.PEP.Extract-class.html#NORM
 slepc4py.SLEPc.PEP.ProblemType	slepc4py.SLEPc.PEP.ProblemType-class.html
-slepc4py.SLEPc.PEP.ProblemType.GENERAL	slepc4py.SLEPc.PEP.ProblemType-class.html#GENERAL
 slepc4py.SLEPc.PEP.ProblemType.__qualname__	slepc4py.SLEPc.PEP.ProblemType-class.html#__qualname__
-slepc4py.SLEPc.PEP.ProblemType.HERMITIAN	slepc4py.SLEPc.PEP.ProblemType-class.html#HERMITIAN
 slepc4py.SLEPc.PEP.ProblemType.GYROSCOPIC	slepc4py.SLEPc.PEP.ProblemType-class.html#GYROSCOPIC
+slepc4py.SLEPc.PEP.ProblemType.HERMITIAN	slepc4py.SLEPc.PEP.ProblemType-class.html#HERMITIAN
+slepc4py.SLEPc.PEP.ProblemType.GENERAL	slepc4py.SLEPc.PEP.ProblemType-class.html#GENERAL
 slepc4py.SLEPc.PEP.Refine	slepc4py.SLEPc.PEP.Refine-class.html
+slepc4py.SLEPc.PEP.Refine.__qualname__	slepc4py.SLEPc.PEP.Refine-class.html#__qualname__
+slepc4py.SLEPc.PEP.Refine.SIMPLE	slepc4py.SLEPc.PEP.Refine-class.html#SIMPLE
 slepc4py.SLEPc.PEP.Refine.NONE	slepc4py.SLEPc.PEP.Refine-class.html#NONE
 slepc4py.SLEPc.PEP.Refine.MULTIPLE	slepc4py.SLEPc.PEP.Refine-class.html#MULTIPLE
-slepc4py.SLEPc.PEP.Refine.SIMPLE	slepc4py.SLEPc.PEP.Refine-class.html#SIMPLE
-slepc4py.SLEPc.PEP.Refine.__qualname__	slepc4py.SLEPc.PEP.Refine-class.html#__qualname__
 slepc4py.SLEPc.PEP.RefineScheme	slepc4py.SLEPc.PEP.RefineScheme-class.html
-slepc4py.SLEPc.PEP.RefineScheme.SCHUR	slepc4py.SLEPc.PEP.RefineScheme-class.html#SCHUR
+slepc4py.SLEPc.PEP.RefineScheme.__qualname__	slepc4py.SLEPc.PEP.RefineScheme-class.html#__qualname__
 slepc4py.SLEPc.PEP.RefineScheme.MBE	slepc4py.SLEPc.PEP.RefineScheme-class.html#MBE
+slepc4py.SLEPc.PEP.RefineScheme.SCHUR	slepc4py.SLEPc.PEP.RefineScheme-class.html#SCHUR
 slepc4py.SLEPc.PEP.RefineScheme.EXPLICIT	slepc4py.SLEPc.PEP.RefineScheme-class.html#EXPLICIT
-slepc4py.SLEPc.PEP.RefineScheme.__qualname__	slepc4py.SLEPc.PEP.RefineScheme-class.html#__qualname__
 slepc4py.SLEPc.PEP.Scale	slepc4py.SLEPc.PEP.Scale-class.html
+slepc4py.SLEPc.PEP.Scale.__qualname__	slepc4py.SLEPc.PEP.Scale-class.html#__qualname__
 slepc4py.SLEPc.PEP.Scale.BOTH	slepc4py.SLEPc.PEP.Scale-class.html#BOTH
+slepc4py.SLEPc.PEP.Scale.SCALAR	slepc4py.SLEPc.PEP.Scale-class.html#SCALAR
 slepc4py.SLEPc.PEP.Scale.NONE	slepc4py.SLEPc.PEP.Scale-class.html#NONE
 slepc4py.SLEPc.PEP.Scale.DIAGONAL	slepc4py.SLEPc.PEP.Scale-class.html#DIAGONAL
-slepc4py.SLEPc.PEP.Scale.__qualname__	slepc4py.SLEPc.PEP.Scale-class.html#__qualname__
-slepc4py.SLEPc.PEP.Scale.SCALAR	slepc4py.SLEPc.PEP.Scale-class.html#SCALAR
 slepc4py.SLEPc.PEP.Type	slepc4py.SLEPc.PEP.Type-class.html
 slepc4py.SLEPc.PEP.Type.QARNOLDI	slepc4py.SLEPc.PEP.Type-class.html#QARNOLDI
 slepc4py.SLEPc.PEP.Type.LINEAR	slepc4py.SLEPc.PEP.Type-class.html#LINEAR
@@ -629,16 +634,16 @@ slepc4py.SLEPc.PEP.Type.STOAR	slepc4py.SLEPc.PEP.Type-class.html#STOAR
 slepc4py.SLEPc.PEP.Type.TOAR	slepc4py.SLEPc.PEP.Type-class.html#TOAR
 slepc4py.SLEPc.PEP.Which	slepc4py.SLEPc.PEP.Which-class.html
 slepc4py.SLEPc.PEP.Which.TARGET_MAGNITUDE	slepc4py.SLEPc.PEP.Which-class.html#TARGET_MAGNITUDE
-slepc4py.SLEPc.PEP.Which.LARGEST_IMAGINARY	slepc4py.SLEPc.PEP.Which-class.html#LARGEST_IMAGINARY
-slepc4py.SLEPc.PEP.Which.USER	slepc4py.SLEPc.PEP.Which-class.html#USER
 slepc4py.SLEPc.PEP.Which.SMALLEST_REAL	slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_REAL
-slepc4py.SLEPc.PEP.Which.SMALLEST_MAGNITUDE	slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_MAGNITUDE
-slepc4py.SLEPc.PEP.Which.SMALLEST_IMAGINARY	slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_IMAGINARY
-slepc4py.SLEPc.PEP.Which.LARGEST_REAL	slepc4py.SLEPc.PEP.Which-class.html#LARGEST_REAL
+slepc4py.SLEPc.PEP.Which.LARGEST_IMAGINARY	slepc4py.SLEPc.PEP.Which-class.html#LARGEST_IMAGINARY
 slepc4py.SLEPc.PEP.Which.LARGEST_MAGNITUDE	slepc4py.SLEPc.PEP.Which-class.html#LARGEST_MAGNITUDE
 slepc4py.SLEPc.PEP.Which.__qualname__	slepc4py.SLEPc.PEP.Which-class.html#__qualname__
+slepc4py.SLEPc.PEP.Which.SMALLEST_IMAGINARY	slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_IMAGINARY
+slepc4py.SLEPc.PEP.Which.USER	slepc4py.SLEPc.PEP.Which-class.html#USER
 slepc4py.SLEPc.PEP.Which.TARGET_IMAGINARY	slepc4py.SLEPc.PEP.Which-class.html#TARGET_IMAGINARY
+slepc4py.SLEPc.PEP.Which.LARGEST_REAL	slepc4py.SLEPc.PEP.Which-class.html#LARGEST_REAL
 slepc4py.SLEPc.PEP.Which.TARGET_REAL	slepc4py.SLEPc.PEP.Which-class.html#TARGET_REAL
+slepc4py.SLEPc.PEP.Which.SMALLEST_MAGNITUDE	slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_MAGNITUDE
 slepc4py.SLEPc.RG	slepc4py.SLEPc.RG-class.html
 slepc4py.SLEPc.RG.Type	slepc4py.SLEPc.RG.Type-class.html
 slepc4py.SLEPc.RG.setType	slepc4py.SLEPc.RG-class.html#setType
@@ -658,10 +663,10 @@ slepc4py.SLEPc.RG.getEllipseParameters	slepc4py.SLEPc.RG-class.html#getEllipsePa
 slepc4py.SLEPc.RG.setEllipseParameters	slepc4py.SLEPc.RG-class.html#setEllipseParameters
 slepc4py.SLEPc.RG.view	slepc4py.SLEPc.RG-class.html#view
 slepc4py.SLEPc.RG.Type	slepc4py.SLEPc.RG.Type-class.html
-slepc4py.SLEPc.RG.Type.POLYGON	slepc4py.SLEPc.RG.Type-class.html#POLYGON
-slepc4py.SLEPc.RG.Type.INTERVAL	slepc4py.SLEPc.RG.Type-class.html#INTERVAL
 slepc4py.SLEPc.RG.Type.__qualname__	slepc4py.SLEPc.RG.Type-class.html#__qualname__
 slepc4py.SLEPc.RG.Type.RING	slepc4py.SLEPc.RG.Type-class.html#RING
+slepc4py.SLEPc.RG.Type.INTERVAL	slepc4py.SLEPc.RG.Type-class.html#INTERVAL
+slepc4py.SLEPc.RG.Type.POLYGON	slepc4py.SLEPc.RG.Type-class.html#POLYGON
 slepc4py.SLEPc.RG.Type.ELLIPSE	slepc4py.SLEPc.RG.Type-class.html#ELLIPSE
 slepc4py.SLEPc.ST	slepc4py.SLEPc.ST-class.html
 slepc4py.SLEPc.ST.setKSP	slepc4py.SLEPc.ST-class.html#setKSP
@@ -669,16 +674,16 @@ slepc4py.SLEPc.ST.setTransform	slepc4py.SLEPc.ST-class.html#setTransform
 slepc4py.SLEPc.ST.MatMode	slepc4py.SLEPc.ST.MatMode-class.html
 slepc4py.SLEPc.ST.getMatMode	slepc4py.SLEPc.ST-class.html#getMatMode
 slepc4py.SLEPc.ST.apply	slepc4py.SLEPc.ST-class.html#apply
-slepc4py.SLEPc.ST.setMatMode	slepc4py.SLEPc.ST-class.html#setMatMode
+slepc4py.SLEPc.ST.setShift	slepc4py.SLEPc.ST-class.html#setShift
 slepc4py.SLEPc.ST.Type	slepc4py.SLEPc.ST.Type-class.html
 slepc4py.SLEPc.ST.setType	slepc4py.SLEPc.ST-class.html#setType
-slepc4py.SLEPc.ST.getOperators	slepc4py.SLEPc.ST-class.html#getOperators
 slepc4py.SLEPc.ST.getTransform	slepc4py.SLEPc.ST-class.html#getTransform
 slepc4py.SLEPc.ST.__new__	slepc4py.SLEPc.ST-class.html#__new__
 slepc4py.SLEPc.ST.create	slepc4py.SLEPc.ST-class.html#create
 slepc4py.SLEPc.ST.setCayleyAntishift	slepc4py.SLEPc.ST-class.html#setCayleyAntishift
-slepc4py.SLEPc.ST.setOperators	slepc4py.SLEPc.ST-class.html#setOperators
 slepc4py.SLEPc.ST.destroy	slepc4py.SLEPc.ST-class.html#destroy
+slepc4py.SLEPc.ST.getMatrices	slepc4py.SLEPc.ST-class.html#getMatrices
+slepc4py.SLEPc.ST.setMatrices	slepc4py.SLEPc.ST-class.html#setMatrices
 slepc4py.SLEPc.ST.getKSP	slepc4py.SLEPc.ST-class.html#getKSP
 slepc4py.SLEPc.ST.setOptionsPrefix	slepc4py.SLEPc.ST-class.html#setOptionsPrefix
 slepc4py.SLEPc.ST.mat_mode	slepc4py.SLEPc.ST-class.html#mat_mode
@@ -686,18 +691,18 @@ slepc4py.SLEPc.ST.setUp	slepc4py.SLEPc.ST-class.html#setUp
 slepc4py.SLEPc.ST.getType	slepc4py.SLEPc.ST-class.html#getType
 slepc4py.SLEPc.ST.getOptionsPrefix	slepc4py.SLEPc.ST-class.html#getOptionsPrefix
 slepc4py.SLEPc.ST.setFromOptions	slepc4py.SLEPc.ST-class.html#setFromOptions
-slepc4py.SLEPc.ST.setShift	slepc4py.SLEPc.ST-class.html#setShift
 slepc4py.SLEPc.ST.ksp	slepc4py.SLEPc.ST-class.html#ksp
 slepc4py.SLEPc.ST.reset	slepc4py.SLEPc.ST-class.html#reset
 slepc4py.SLEPc.ST.setMatStructure	slepc4py.SLEPc.ST-class.html#setMatStructure
 slepc4py.SLEPc.ST.applyTranspose	slepc4py.SLEPc.ST-class.html#applyTranspose
+slepc4py.SLEPc.ST.setMatMode	slepc4py.SLEPc.ST-class.html#setMatMode
 slepc4py.SLEPc.ST.shift	slepc4py.SLEPc.ST-class.html#shift
 slepc4py.SLEPc.ST.getShift	slepc4py.SLEPc.ST-class.html#getShift
 slepc4py.SLEPc.ST.view	slepc4py.SLEPc.ST-class.html#view
 slepc4py.SLEPc.ST.MatMode	slepc4py.SLEPc.ST.MatMode-class.html
+slepc4py.SLEPc.ST.MatMode.__qualname__	slepc4py.SLEPc.ST.MatMode-class.html#__qualname__
 slepc4py.SLEPc.ST.MatMode.SHELL	slepc4py.SLEPc.ST.MatMode-class.html#SHELL
 slepc4py.SLEPc.ST.MatMode.INPLACE	slepc4py.SLEPc.ST.MatMode-class.html#INPLACE
-slepc4py.SLEPc.ST.MatMode.__qualname__	slepc4py.SLEPc.ST.MatMode-class.html#__qualname__
 slepc4py.SLEPc.ST.MatMode.COPY	slepc4py.SLEPc.ST.MatMode-class.html#COPY
 slepc4py.SLEPc.ST.Type	slepc4py.SLEPc.ST.Type-class.html
 slepc4py.SLEPc.ST.Type.SINVERT	slepc4py.SLEPc.ST.Type-class.html#SINVERT
@@ -707,13 +712,12 @@ slepc4py.SLEPc.ST.Type.SHIFT	slepc4py.SLEPc.ST.Type-class.html#SHIFT
 slepc4py.SLEPc.ST.Type.__qualname__	slepc4py.SLEPc.ST.Type-class.html#__qualname__
 slepc4py.SLEPc.ST.Type.PRECOND	slepc4py.SLEPc.ST.Type-class.html#PRECOND
 slepc4py.SLEPc.SVD	slepc4py.SLEPc.SVD-class.html
-slepc4py.SLEPc.SVD.cancelMonitor	slepc4py.SLEPc.SVD-class.html#cancelMonitor
+slepc4py.SLEPc.SVD.setInitialSpaces	slepc4py.SLEPc.SVD-class.html#setInitialSpaces
 slepc4py.SLEPc.SVD.max_it	slepc4py.SLEPc.SVD-class.html#max_it
 slepc4py.SLEPc.SVD.computeError	slepc4py.SLEPc.SVD-class.html#computeError
-slepc4py.SLEPc.SVD.errorView	slepc4py.SLEPc.SVD-class.html#errorView
 slepc4py.SLEPc.SVD.appendOptionsPrefix	slepc4py.SLEPc.SVD-class.html#appendOptionsPrefix
+slepc4py.SLEPc.SVD.cancelMonitor	slepc4py.SLEPc.SVD-class.html#cancelMonitor
 slepc4py.SLEPc.SVD.getConvergedReason	slepc4py.SLEPc.SVD-class.html#getConvergedReason
-slepc4py.SLEPc.SVD.setInitialSpace	slepc4py.SLEPc.SVD-class.html#setInitialSpace
 slepc4py.SLEPc.SVD.setOptionsPrefix	slepc4py.SLEPc.SVD-class.html#setOptionsPrefix
 slepc4py.SLEPc.SVD.getDimensions	slepc4py.SLEPc.SVD-class.html#getDimensions
 slepc4py.SLEPc.SVD.setFromOptions	slepc4py.SLEPc.SVD-class.html#setFromOptions
@@ -728,6 +732,7 @@ slepc4py.SLEPc.SVD.setUp	slepc4py.SLEPc.SVD-class.html#setUp
 slepc4py.SLEPc.SVD.transpose_mode	slepc4py.SLEPc.SVD-class.html#transpose_mode
 slepc4py.SLEPc.SVD.getOptionsPrefix	slepc4py.SLEPc.SVD-class.html#getOptionsPrefix
 slepc4py.SLEPc.SVD.getCyclicExplicitMatrix	slepc4py.SLEPc.SVD-class.html#getCyclicExplicitMatrix
+slepc4py.SLEPc.SVD.errorView	slepc4py.SLEPc.SVD-class.html#errorView
 slepc4py.SLEPc.SVD.bv	slepc4py.SLEPc.SVD-class.html#bv
 slepc4py.SLEPc.SVD.setTolerances	slepc4py.SLEPc.SVD-class.html#setTolerances
 slepc4py.SLEPc.SVD.getConverged	slepc4py.SLEPc.SVD-class.html#getConverged
@@ -768,8 +773,8 @@ slepc4py.SLEPc.SVD.ConvergedReason.CONVERGED_ITERATING	slepc4py.SLEPc.SVD.Conver
 slepc4py.SLEPc.SVD.ConvergedReason.DIVERGED_ITS	slepc4py.SLEPc.SVD.ConvergedReason-class.html#DIVERGED_ITS
 slepc4py.SLEPc.SVD.ConvergedReason.CONVERGED_TOL	slepc4py.SLEPc.SVD.ConvergedReason-class.html#CONVERGED_TOL
 slepc4py.SLEPc.SVD.ErrorType	slepc4py.SLEPc.SVD.ErrorType-class.html
-slepc4py.SLEPc.SVD.ErrorType.__qualname__	slepc4py.SLEPc.SVD.ErrorType-class.html#__qualname__
 slepc4py.SLEPc.SVD.ErrorType.RELATIVE	slepc4py.SLEPc.SVD.ErrorType-class.html#RELATIVE
+slepc4py.SLEPc.SVD.ErrorType.__qualname__	slepc4py.SLEPc.SVD.ErrorType-class.html#__qualname__
 slepc4py.SLEPc.SVD.ErrorType.ABSOLUTE	slepc4py.SLEPc.SVD.ErrorType-class.html#ABSOLUTE
 slepc4py.SLEPc.SVD.Type	slepc4py.SLEPc.SVD.Type-class.html
 slepc4py.SLEPc.SVD.Type.CYCLIC	slepc4py.SLEPc.SVD.Type-class.html#CYCLIC
@@ -783,8 +788,8 @@ slepc4py.SLEPc.SVD.Which.__qualname__	slepc4py.SLEPc.SVD.Which-class.html#__qual
 slepc4py.SLEPc.SVD.Which.SMALLEST	slepc4py.SLEPc.SVD.Which-class.html#SMALLEST
 slepc4py.SLEPc.SVD.Which.LARGEST	slepc4py.SLEPc.SVD.Which-class.html#LARGEST
 slepc4py.SLEPc.Sys	slepc4py.SLEPc.Sys-class.html
-slepc4py.SLEPc.Sys.__new__	slepc4py.SLEPc.Sys-class.html#__new__
 slepc4py.SLEPc.Sys.getVersionInfo	slepc4py.SLEPc.Sys-class.html#getVersionInfo
 slepc4py.SLEPc.Sys.getVersion	slepc4py.SLEPc.Sys-class.html#getVersion
+slepc4py.SLEPc.Sys.__new__	slepc4py.SLEPc.Sys-class.html#__new__
 slepc4py.SLEPc._p_mem	slepc4py.SLEPc._p_mem-class.html
 slepc4py.SLEPc._p_mem.__new__	slepc4py.SLEPc._p_mem-class.html#__new__
diff --git a/docs/apiref/class-tree.html b/docs/apiref/class-tree.html
index f2a03ec..d2ac1cf 100644
--- a/docs/apiref/class-tree.html
+++ b/docs/apiref/class-tree.html
@@ -60,9 +60,6 @@
 </b></center><br />
 <h1 class="epydoc">Class Hierarchy</h1>
 <ul class="nomargin-top">
-    <li> <strong class="uidlink">object</strong>:
-      <em class="summary">The most base type</em>
-    <ul>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.EPS.Balance-class.html">slepc4py.SLEPc.EPS.Balance</a></strong>:
       <em class="summary">EPS type of balancing used for non-Hermitian problems</em>
     </li>
@@ -80,30 +77,30 @@
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.PEP.Conv-class.html">slepc4py.SLEPc.PEP.Conv</a></strong>:
       <em class="summary">PEP convergence test</em>
     </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.MFN.ConvergedReason-class.html">slepc4py.SLEPc.MFN.ConvergedReason</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html">slepc4py.SLEPc.PEP.ConvergedReason</a></strong>:
-      <em class="summary">PEP convergence reasons</em>
-    </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.NEP.ConvergedReason-class.html">slepc4py.SLEPc.NEP.ConvergedReason</a></strong>
     </li>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.SVD.ConvergedReason-class.html">slepc4py.SLEPc.SVD.ConvergedReason</a></strong>:
+      <em class="summary">SVD convergence reasons</em>
+    </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html">slepc4py.SLEPc.EPS.ConvergedReason</a></strong>:
       <em class="summary">EPS convergence reasons</em>
     </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.SVD.ConvergedReason-class.html">slepc4py.SLEPc.SVD.ConvergedReason</a></strong>:
-      <em class="summary">SVD convergence reasons</em>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.MFN.ConvergedReason-class.html">slepc4py.SLEPc.MFN.ConvergedReason</a></strong>
     </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.EPS.ErrorType-class.html">slepc4py.SLEPc.EPS.ErrorType</a></strong>:
-      <em class="summary">EPS error type to assess accuracy of computed solutions</em>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html">slepc4py.SLEPc.PEP.ConvergedReason</a></strong>:
+      <em class="summary">PEP convergence reasons</em>
     </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.PEP.ErrorType-class.html">slepc4py.SLEPc.PEP.ErrorType</a></strong>:
       <em class="summary">PEP error type to assess accuracy of computed solutions</em>
     </li>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.NEP.ErrorType-class.html">slepc4py.SLEPc.NEP.ErrorType</a></strong>:
+      <em class="summary">NEP error type to assess accuracy of computed solutions</em>
+    </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.SVD.ErrorType-class.html">slepc4py.SLEPc.SVD.ErrorType</a></strong>:
       <em class="summary">SVD error type to assess accuracy of computed solutions</em>
     </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.NEP.ErrorType-class.html">slepc4py.SLEPc.NEP.ErrorType</a></strong>:
-      <em class="summary">NEP error type to assess accuracy of computed solutions</em>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.EPS.ErrorType-class.html">slepc4py.SLEPc.EPS.ErrorType</a></strong>:
+      <em class="summary">EPS error type to assess accuracy of computed solutions</em>
     </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.PEP.Extract-class.html">slepc4py.SLEPc.PEP.Extract</a></strong>:
       <em class="summary">Extraction strategy used to obtain eigenvectors of the PEP from the
@@ -161,12 +158,12 @@ eigenvectors of the linearization</em>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.EPS.PowerShiftType-class.html">slepc4py.SLEPc.EPS.PowerShiftType</a></strong>:
       <em class="summary">EPS Power shift type.</em>
     </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.PEP.ProblemType-class.html">slepc4py.SLEPc.PEP.ProblemType</a></strong>:
-      <em class="summary">PEP problem type</em>
-    </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.EPS.ProblemType-class.html">slepc4py.SLEPc.EPS.ProblemType</a></strong>:
       <em class="summary">EPS problem type</em>
     </li>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.PEP.ProblemType-class.html">slepc4py.SLEPc.PEP.ProblemType</a></strong>:
+      <em class="summary">PEP problem type</em>
+    </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.NEP.Refine-class.html">slepc4py.SLEPc.NEP.Refine</a></strong>:
       <em class="summary">NEP refinement strategy</em>
     </li>
@@ -190,50 +187,48 @@ eigenvectors of the linearization</em>
     </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.Sys-class.html">slepc4py.SLEPc.Sys</a></strong>
     </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.RG.Type-class.html">slepc4py.SLEPc.RG.Type</a></strong>:
-      <em class="summary">RG type</em>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.ST.Type-class.html">slepc4py.SLEPc.ST.Type</a></strong>:
+      <em class="summary">ST types</em>
     </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.SVD.Type-class.html">slepc4py.SLEPc.SVD.Type</a></strong>:
       <em class="summary">SVD types</em>
     </li>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.PEP.Type-class.html">slepc4py.SLEPc.PEP.Type</a></strong>:
+      <em class="summary">PEP type</em>
+    </li>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.NEP.Type-class.html">slepc4py.SLEPc.NEP.Type</a></strong>:
+      <em class="summary">NEP type</em>
+    </li>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.EPS.Type-class.html">slepc4py.SLEPc.EPS.Type</a></strong>:
+      <em class="summary">EPS type</em>
+    </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.FN.Type-class.html">slepc4py.SLEPc.FN.Type</a></strong>:
       <em class="summary">FN type</em>
     </li>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.RG.Type-class.html">slepc4py.SLEPc.RG.Type</a></strong>:
+      <em class="summary">RG type</em>
+    </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.BV.Type-class.html">slepc4py.SLEPc.BV.Type</a></strong>:
       <em class="summary">BV type</em>
     </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.ST.Type-class.html">slepc4py.SLEPc.ST.Type</a></strong>:
-      <em class="summary">ST types</em>
-    </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.MFN.Type-class.html">slepc4py.SLEPc.MFN.Type</a></strong>:
       <em class="summary">MFN type</em>
     </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.PEP.Type-class.html">slepc4py.SLEPc.PEP.Type</a></strong>:
-      <em class="summary">PEP type</em>
-    </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.DS.Type-class.html">slepc4py.SLEPc.DS.Type</a></strong>:
       <em class="summary">DS type</em>
     </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.NEP.Type-class.html">slepc4py.SLEPc.NEP.Type</a></strong>:
-      <em class="summary">NEP type</em>
-    </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.EPS.Type-class.html">slepc4py.SLEPc.EPS.Type</a></strong>:
-      <em class="summary">EPS type</em>
-    </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.NEP.Which-class.html">slepc4py.SLEPc.NEP.Which</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.SVD.Which-class.html">slepc4py.SLEPc.SVD.Which</a></strong>:
-      <em class="summary">SVD desired piece of spectrum</em>
-    </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.PEP.Which-class.html">slepc4py.SLEPc.PEP.Which</a></strong>:
       <em class="summary">PEP desired part of spectrum</em>
     </li>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.NEP.Which-class.html">slepc4py.SLEPc.NEP.Which</a></strong>
+    </li>
     <li> <strong class="uidlink"><a href="slepc4py.SLEPc.EPS.Which-class.html">slepc4py.SLEPc.EPS.Which</a></strong>:
       <em class="summary">EPS desired piece of spectrum</em>
     </li>
-    <li> <strong class="uidlink"><a href="slepc4py.SLEPc._p_mem-class.html" onclick="show_private();">slepc4py.SLEPc._p_mem</a></strong>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc.SVD.Which-class.html">slepc4py.SLEPc.SVD.Which</a></strong>:
+      <em class="summary">SVD desired piece of spectrum</em>
     </li>
-    </ul>
+    <li> <strong class="uidlink"><a href="slepc4py.SLEPc._p_mem-class.html" onclick="show_private();">slepc4py.SLEPc._p_mem</a></strong>
     </li>
 </ul>
 <!-- ==================== NAVIGATION BAR ==================== -->
@@ -267,7 +262,7 @@ eigenvectors of the linearization</em>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/class_hierarchy_for__p_mem.png b/docs/apiref/class_hierarchy_for__p_mem.png
deleted file mode 100644
index 9456c7b..0000000
Binary files a/docs/apiref/class_hierarchy_for__p_mem.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_balance.png b/docs/apiref/class_hierarchy_for_balance.png
deleted file mode 100644
index bbffbac..0000000
Binary files a/docs/apiref/class_hierarchy_for_balance.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_basis.png b/docs/apiref/class_hierarchy_for_basis.png
deleted file mode 100644
index de9d5b6..0000000
Binary files a/docs/apiref/class_hierarchy_for_basis.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_blocktype.png b/docs/apiref/class_hierarchy_for_blocktype.png
deleted file mode 100644
index ed43861..0000000
Binary files a/docs/apiref/class_hierarchy_for_blocktype.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_bv.png b/docs/apiref/class_hierarchy_for_bv.png
deleted file mode 100644
index 4786549..0000000
Binary files a/docs/apiref/class_hierarchy_for_bv.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_combinetyp.png b/docs/apiref/class_hierarchy_for_combinetyp.png
deleted file mode 100644
index 3964d01..0000000
Binary files a/docs/apiref/class_hierarchy_for_combinetyp.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_conv.png b/docs/apiref/class_hierarchy_for_conv.png
deleted file mode 100644
index 5f60d64..0000000
Binary files a/docs/apiref/class_hierarchy_for_conv.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_conv_2.png b/docs/apiref/class_hierarchy_for_conv_2.png
deleted file mode 100644
index 5f60d64..0000000
Binary files a/docs/apiref/class_hierarchy_for_conv_2.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_convergedr.png b/docs/apiref/class_hierarchy_for_convergedr.png
deleted file mode 100644
index 9022f9d..0000000
Binary files a/docs/apiref/class_hierarchy_for_convergedr.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_convergedr_2.png b/docs/apiref/class_hierarchy_for_convergedr_2.png
deleted file mode 100644
index 9022f9d..0000000
Binary files a/docs/apiref/class_hierarchy_for_convergedr_2.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_convergedr_3.png b/docs/apiref/class_hierarchy_for_convergedr_3.png
deleted file mode 100644
index 9022f9d..0000000
Binary files a/docs/apiref/class_hierarchy_for_convergedr_3.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_convergedr_4.png b/docs/apiref/class_hierarchy_for_convergedr_4.png
deleted file mode 100644
index 9022f9d..0000000
Binary files a/docs/apiref/class_hierarchy_for_convergedr_4.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_convergedr_5.png b/docs/apiref/class_hierarchy_for_convergedr_5.png
deleted file mode 100644
index 9022f9d..0000000
Binary files a/docs/apiref/class_hierarchy_for_convergedr_5.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_ds.png b/docs/apiref/class_hierarchy_for_ds.png
deleted file mode 100644
index 4724309..0000000
Binary files a/docs/apiref/class_hierarchy_for_ds.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_eps.png b/docs/apiref/class_hierarchy_for_eps.png
deleted file mode 100644
index 1c7df04..0000000
Binary files a/docs/apiref/class_hierarchy_for_eps.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_errortype.png b/docs/apiref/class_hierarchy_for_errortype.png
deleted file mode 100644
index 3c339ae..0000000
Binary files a/docs/apiref/class_hierarchy_for_errortype.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_errortype_2.png b/docs/apiref/class_hierarchy_for_errortype_2.png
deleted file mode 100644
index 3c339ae..0000000
Binary files a/docs/apiref/class_hierarchy_for_errortype_2.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_errortype_3.png b/docs/apiref/class_hierarchy_for_errortype_3.png
deleted file mode 100644
index 3c339ae..0000000
Binary files a/docs/apiref/class_hierarchy_for_errortype_3.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_errortype_4.png b/docs/apiref/class_hierarchy_for_errortype_4.png
deleted file mode 100644
index 3c339ae..0000000
Binary files a/docs/apiref/class_hierarchy_for_errortype_4.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_extract.png b/docs/apiref/class_hierarchy_for_extract.png
deleted file mode 100644
index ba27231..0000000
Binary files a/docs/apiref/class_hierarchy_for_extract.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_extraction.png b/docs/apiref/class_hierarchy_for_extraction.png
deleted file mode 100644
index 098f780..0000000
Binary files a/docs/apiref/class_hierarchy_for_extraction.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_fn.png b/docs/apiref/class_hierarchy_for_fn.png
deleted file mode 100644
index c5058f4..0000000
Binary files a/docs/apiref/class_hierarchy_for_fn.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_lanczosreo.png b/docs/apiref/class_hierarchy_for_lanczosreo.png
deleted file mode 100644
index b30a8dd..0000000
Binary files a/docs/apiref/class_hierarchy_for_lanczosreo.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_matmode.png b/docs/apiref/class_hierarchy_for_matmode.png
deleted file mode 100644
index c9dac47..0000000
Binary files a/docs/apiref/class_hierarchy_for_matmode.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_mattype.png b/docs/apiref/class_hierarchy_for_mattype.png
deleted file mode 100644
index f1ad2a0..0000000
Binary files a/docs/apiref/class_hierarchy_for_mattype.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_mfn.png b/docs/apiref/class_hierarchy_for_mfn.png
deleted file mode 100644
index 3eec758..0000000
Binary files a/docs/apiref/class_hierarchy_for_mfn.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_nep.png b/docs/apiref/class_hierarchy_for_nep.png
deleted file mode 100644
index d4d81db..0000000
Binary files a/docs/apiref/class_hierarchy_for_nep.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_orthogtype.png b/docs/apiref/class_hierarchy_for_orthogtype.png
deleted file mode 100644
index 56ecfe5..0000000
Binary files a/docs/apiref/class_hierarchy_for_orthogtype.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_pep.png b/docs/apiref/class_hierarchy_for_pep.png
deleted file mode 100644
index 8a521ec..0000000
Binary files a/docs/apiref/class_hierarchy_for_pep.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_powershift.png b/docs/apiref/class_hierarchy_for_powershift.png
deleted file mode 100644
index be5dbef..0000000
Binary files a/docs/apiref/class_hierarchy_for_powershift.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_problemtyp.png b/docs/apiref/class_hierarchy_for_problemtyp.png
deleted file mode 100644
index 2fdd610..0000000
Binary files a/docs/apiref/class_hierarchy_for_problemtyp.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_problemtyp_2.png b/docs/apiref/class_hierarchy_for_problemtyp_2.png
deleted file mode 100644
index 2fdd610..0000000
Binary files a/docs/apiref/class_hierarchy_for_problemtyp_2.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_refine.png b/docs/apiref/class_hierarchy_for_refine.png
deleted file mode 100644
index 89c905e..0000000
Binary files a/docs/apiref/class_hierarchy_for_refine.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_refine_2.png b/docs/apiref/class_hierarchy_for_refine_2.png
deleted file mode 100644
index 89c905e..0000000
Binary files a/docs/apiref/class_hierarchy_for_refine_2.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_refinesche.png b/docs/apiref/class_hierarchy_for_refinesche.png
deleted file mode 100644
index ee70171..0000000
Binary files a/docs/apiref/class_hierarchy_for_refinesche.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_refinesche_2.png b/docs/apiref/class_hierarchy_for_refinesche_2.png
deleted file mode 100644
index ee70171..0000000
Binary files a/docs/apiref/class_hierarchy_for_refinesche_2.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_refinetype.png b/docs/apiref/class_hierarchy_for_refinetype.png
deleted file mode 100644
index 8c0049e..0000000
Binary files a/docs/apiref/class_hierarchy_for_refinetype.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_rg.png b/docs/apiref/class_hierarchy_for_rg.png
deleted file mode 100644
index 6f072b4..0000000
Binary files a/docs/apiref/class_hierarchy_for_rg.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_scale.png b/docs/apiref/class_hierarchy_for_scale.png
deleted file mode 100644
index d03319c..0000000
Binary files a/docs/apiref/class_hierarchy_for_scale.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_st.png b/docs/apiref/class_hierarchy_for_st.png
deleted file mode 100644
index 070646a..0000000
Binary files a/docs/apiref/class_hierarchy_for_st.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_statetype.png b/docs/apiref/class_hierarchy_for_statetype.png
deleted file mode 100644
index f7f1a1c..0000000
Binary files a/docs/apiref/class_hierarchy_for_statetype.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_svd.png b/docs/apiref/class_hierarchy_for_svd.png
deleted file mode 100644
index e07694b..0000000
Binary files a/docs/apiref/class_hierarchy_for_svd.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_sys.png b/docs/apiref/class_hierarchy_for_sys.png
deleted file mode 100644
index 835eac8..0000000
Binary files a/docs/apiref/class_hierarchy_for_sys.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_type.png b/docs/apiref/class_hierarchy_for_type.png
deleted file mode 100644
index 3ee2d33..0000000
Binary files a/docs/apiref/class_hierarchy_for_type.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_type_10.png b/docs/apiref/class_hierarchy_for_type_10.png
deleted file mode 100644
index 3ee2d33..0000000
Binary files a/docs/apiref/class_hierarchy_for_type_10.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_type_2.png b/docs/apiref/class_hierarchy_for_type_2.png
deleted file mode 100644
index 3ee2d33..0000000
Binary files a/docs/apiref/class_hierarchy_for_type_2.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_type_3.png b/docs/apiref/class_hierarchy_for_type_3.png
deleted file mode 100644
index 3ee2d33..0000000
Binary files a/docs/apiref/class_hierarchy_for_type_3.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_type_4.png b/docs/apiref/class_hierarchy_for_type_4.png
deleted file mode 100644
index 3ee2d33..0000000
Binary files a/docs/apiref/class_hierarchy_for_type_4.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_type_5.png b/docs/apiref/class_hierarchy_for_type_5.png
deleted file mode 100644
index 3ee2d33..0000000
Binary files a/docs/apiref/class_hierarchy_for_type_5.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_type_6.png b/docs/apiref/class_hierarchy_for_type_6.png
deleted file mode 100644
index 3ee2d33..0000000
Binary files a/docs/apiref/class_hierarchy_for_type_6.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_type_7.png b/docs/apiref/class_hierarchy_for_type_7.png
deleted file mode 100644
index 3ee2d33..0000000
Binary files a/docs/apiref/class_hierarchy_for_type_7.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_type_8.png b/docs/apiref/class_hierarchy_for_type_8.png
deleted file mode 100644
index 3ee2d33..0000000
Binary files a/docs/apiref/class_hierarchy_for_type_8.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_type_9.png b/docs/apiref/class_hierarchy_for_type_9.png
deleted file mode 100644
index 3ee2d33..0000000
Binary files a/docs/apiref/class_hierarchy_for_type_9.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_which.png b/docs/apiref/class_hierarchy_for_which.png
deleted file mode 100644
index a87d5ed..0000000
Binary files a/docs/apiref/class_hierarchy_for_which.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_which_2.png b/docs/apiref/class_hierarchy_for_which_2.png
deleted file mode 100644
index a87d5ed..0000000
Binary files a/docs/apiref/class_hierarchy_for_which_2.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_which_3.png b/docs/apiref/class_hierarchy_for_which_3.png
deleted file mode 100644
index a87d5ed..0000000
Binary files a/docs/apiref/class_hierarchy_for_which_3.png and /dev/null differ
diff --git a/docs/apiref/class_hierarchy_for_which_4.png b/docs/apiref/class_hierarchy_for_which_4.png
deleted file mode 100644
index a87d5ed..0000000
Binary files a/docs/apiref/class_hierarchy_for_which_4.png and /dev/null differ
diff --git a/docs/apiref/epydoc.css b/docs/apiref/epydoc.css
index 86d4170..e834248 100644
--- a/docs/apiref/epydoc.css
+++ b/docs/apiref/epydoc.css
@@ -39,8 +39,8 @@ a.link                      { font-family: monospace; }
  *     variables and to show/hide frames; and a page title (using
  *     <h1>).  The page title may be followed by a link to the
  *     corresponding source code (using 'span.codelink').
- *   - The footer consists of a navigation bar, a timestamp, and a
- *     pointer to epydoc's homepage.
+ *   - The footer consists of a navigation bar, a timestamp
+ *     (if --include-timestamp was passed), and a pointer to epydoc's homepage.
  */ 
 h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
 h2.epydoc                   { font-size: +130%; font-weight: bold; }
@@ -162,8 +162,8 @@ table.summary a.summary-sig-name:visited
 
 /* Subclass list
  */
-ul.subclass-list { display: inline; }
-ul.subclass-list li { display: inline; }
+ul.subclass-list { display: inline; margin: 0; padding: 0; }
+ul.subclass-list li { display: inline; margin: 0; padding: 0; }
 
 /* To render variables, classes etc. like functions */
 table.summary .summary-name { color: #006080; font-weight: bold;
diff --git a/docs/apiref/help.html b/docs/apiref/help.html
index 6c71ae5..d169c8d 100644
--- a/docs/apiref/help.html
+++ b/docs/apiref/help.html
@@ -223,8 +223,8 @@ are private objects; but "<code>re.sub</code>",
 if a module defines the "<code>__all__</code>" variable, then its
 contents are used to decide which objects are private. </p>
 
-<p> A timestamp below the bottom navigation bar indicates when each
-page was last updated. </p>
+<p> If --include-timestamp was passed, a timestamp below the bottom navigation bar indicates
+when each page was last updated. </p>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -256,7 +256,7 @@ page was last updated. </p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/identifier-index.html b/docs/apiref/identifier-index.html
index 3dde235..416e64a 100644
--- a/docs/apiref/identifier-index.html
+++ b/docs/apiref/identifier-index.html
@@ -549,45 +549,37 @@
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS.Type-class.html#GD">GD</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS.Type-class.html">Type</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getInterval">getInterval()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getRG">getRG()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.ProblemType-class.html#GENERAL">GENERAL</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP.ProblemType-class.html">ProblemType</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.RG-class.html#getIntervalEndpoints">getIntervalEndpoints()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.RG-class.html">RG</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#getRIILagPreconditioner">getRIILagPreconditioner()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py-module.html#get_include">get_include()</a><br />
-<span class="index-where">(in <a href="slepc4py-module.html">slepc4py</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.ProblemType-class.html#GENERAL">GENERAL</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP.ProblemType-class.html">ProblemType</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getInvariantSubspace">getInvariantSubspace()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getRQCGReset">getRQCGReset()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#getActiveColumns">getActiveColumns()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py-module.html#get_include">get_include()</a><br />
+<span class="index-where">(in <a href="slepc4py-module.html">slepc4py</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getIterationNumber">getIterationNumber()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.FN-class.html#getScale">getScale()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.FN-class.html">FN</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getArnoldiDelayed">getArnoldiDelayed()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#getActiveColumns">getActiveColumns()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#getIterationNumber">getIterationNumber()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getScale">getScale()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getBalance">getBalance()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getArnoldiDelayed">getArnoldiDelayed()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#getIterationNumber">getIterationNumber()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
@@ -595,57 +587,65 @@
 <span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getBasis">getBasis()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getBalance">getBalance()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getIterationNumber">getIterationNumber()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#getSingularTriplet">getSingularTriplet()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getBV">getBV()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getBasis">getBasis()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#getIterationNumber">getIterationNumber()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#getSizes">getSizes()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#getBV">getBV()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getBV">getBV()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getKrylovSchurDetectZeros">getKrylovSchurDetectZeros()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getST">getST()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#getBV">getBV()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#getBV">getBV()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getKrylovSchurDimensions">getKrylovSchurDimensions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getST">getST()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getBV">getBV()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#getBV">getBV()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getKrylovSchurLocking">getKrylovSchurLocking()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#getState">getState()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#getBV">getBV()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getBV">getBV()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getKrylovSchurPartitions">getKrylovSchurPartitions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getTarget">getTarget()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 </tr>
 <tr>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#getBV">getBV()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getKrylovSchurRestart">getKrylovSchurRestart()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getTarget">getTarget()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
+</tr>
+<tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#getColumn">getColumn()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getKrylovSchurRestart">getKrylovSchurRestart()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getKrylovSchurSubcommInfo">getKrylovSchurSubcommInfo()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getTolerances">getTolerances()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
@@ -653,7 +653,7 @@
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#getCompact">getCompact()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getKrylovSchurSubcommInfo">getKrylovSchurSubcommInfo()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getKrylovSchurSubcommMats">getKrylovSchurSubcommMats()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#getTolerances">getTolerances()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
@@ -661,7 +661,7 @@
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.RG-class.html#getComplement">getComplement()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.RG-class.html">RG</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getKrylovSchurSubcommMats">getKrylovSchurSubcommMats()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getKrylovSchurSubcommPairs">getKrylovSchurSubcommPairs()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#getTolerances">getTolerances()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
@@ -669,39 +669,39 @@
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getConverged">getConverged()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getKrylovSchurSubcommPairs">getKrylovSchurSubcommPairs()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#getKSP">getKSP()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getTolerances">getTolerances()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#getConverged">getConverged()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#getKSP">getKSP()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getLanczosReorthogType">getLanczosReorthogType()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#getTolerances">getTolerances()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getConverged">getConverged()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getLanczosReorthogType">getLanczosReorthogType()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#getLeadingDimension">getLeadingDimension()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getTrackAll">getTrackAll()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#getConverged">getConverged()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#getLeadingDimension">getLeadingDimension()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getLinearCompanionForm">getLinearCompanionForm()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#getTrackAll">getTrackAll()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getConvergedReason">getConvergedReason()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getLinearCompanionForm">getLinearCompanionForm()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getLinearEPS">getLinearEPS()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getTrackAll">getTrackAll()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
@@ -709,7 +709,7 @@
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#getConvergedReason">getConvergedReason()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getLinearEPS">getLinearEPS()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getLinearExplicitMatrix">getLinearExplicitMatrix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#getTransform">getTransform()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
@@ -717,15 +717,15 @@
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#getConvergedReason">getConvergedReason()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getLinearExplicitMatrix">getLinearExplicitMatrix()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#getMatMode">getMatMode()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getTrueResidual">getTrueResidual()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getConvergedReason">getConvergedReason()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#getMatMode">getMatMode()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#getMatrices">getMatrices()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#getType">getType()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
@@ -749,40 +749,40 @@
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getConvergenceTest">getConvergenceTest()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#getOperator">getOperator()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getMonitor">getMonitor()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.FN-class.html#getType">getType()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.FN-class.html">FN</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#getCrossEPS">getCrossEPS()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#getOperator">getOperator()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#getOperator">getOperator()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#getType">getType()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#getCyclicEPS">getCyclicEPS()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getOperators">getOperators()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#getOperator">getOperator()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#getType">getType()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#getCyclicExplicitMatrix">getCyclicExplicitMatrix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getOperators">getOperators()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getOperators">getOperators()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getType">getType()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#getDimensions">getDimensions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#getOperators">getOperators()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getOperators">getOperators()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.RG-class.html#getType">getType()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.RG-class.html">RG</a>)</span></td>
 </tr>
@@ -937,6 +937,13 @@
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 <td width="33%" class="link-index"> </td>
 </tr>
+<tr>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#getInterval">getInterval()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#getRG">getRG()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
 </table>
 </td></tr>
 <tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="H">H</a></h2></td>
@@ -1392,209 +1399,209 @@
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.Scale-class.html#SCALAR">SCALAR</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP.Scale-class.html">Scale</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setKrylovSchurRestart">setKrylovSchurRestart()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setKrylovSchurSubintervals">setKrylovSchurSubintervals()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setTransform">setTransform()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setTrackAll">setTrackAll()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.Scale-class.html">Scale</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setKrylovSchurSubintervals">setKrylovSchurSubintervals()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setTRLanczosOneSide">setTRLanczosOneSide()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#scale">scale()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setKSP">setKSP()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setTrueResidual">setTrueResidual()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setTransform">setTransform()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#scaleColumn">scaleColumn()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#scale">scale()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setLanczosOneSide">setLanczosOneSide()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#setType">setType()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setTRLanczosOneSide">setTRLanczosOneSide()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#scaleColumn">scaleColumn()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setLanczosReorthogType">setLanczosReorthogType()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setTrueResidual">setTrueResidual()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP.RefineScheme-class.html#SCHUR">SCHUR</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP.RefineScheme-class.html">RefineScheme</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setLanczosReorthogType">setLanczosReorthogType()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#setType">setType()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setLinearCompanionForm">setLinearCompanionForm()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#setType">setType()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.RefineScheme-class.html#SCHUR">SCHUR</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP.RefineScheme-class.html">RefineScheme</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setLinearCompanionForm">setLinearCompanionForm()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setLinearEPS">setLinearEPS()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setType">setType()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#setType">setType()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS.LanczosReorthogType-class.html#SELECTIVE">SELECTIVE</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS.LanczosReorthogType-class.html">LanczosReorthogType</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setLinearEPS">setLinearEPS()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setLinearExplicitMatrix">setLinearExplicitMatrix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.FN-class.html#setType">setType()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.FN-class.html">FN</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setType">setType()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#setActiveColumns">setActiveColumns()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setLinearExplicitMatrix">setLinearExplicitMatrix()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#setType">setType()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setMatMode">setMatMode()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.FN-class.html#setType">setType()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.FN-class.html">FN</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setArnoldiDelayed">setArnoldiDelayed()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setMatMode">setMatMode()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setMatrices">setMatrices()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setType">setType()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#setType">setType()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setBalance">setBalance()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#setMatrix">setMatrix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setType">setType()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setType">setType()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setBasis">setBasis()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setMatStructure">setMatStructure()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.RG-class.html#setType">setType()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.RG-class.html">RG</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setType">setType()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setBV">setBV()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#setMethod">setMethod()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setType">setType()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.RG-class.html#setType">setType()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.RG-class.html">RG</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#setBV">setBV()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setMonitor">setMonitor()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setType">setType()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setBV">setBV()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#setOperator">setOperator()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setType">setType()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setBV">setBV()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setBV">setBV()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setOperator">setOperator()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setUp">setUp()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setBV">setBV()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setBV">setBV()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setOperators">setOperators()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#setUp">setUp()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setBV">setBV()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setCayleyAntishift">setCayleyAntishift()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setOperators">setOperators()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setUp">setUp()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setCayleyAntishift">setCayleyAntishift()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setOperators">setOperators()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setUp">setUp()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-</tr>
-<tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#setCompact">setCompact()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#setOptionsPrefix">setOptionsPrefix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setUp">setUp()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setUp">setUp()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.RG-class.html#setComplement">setComplement()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.RG-class.html">RG</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#setOptionsPrefix">setOptionsPrefix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setUp">setUp()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setUp">setUp()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setConvergenceTest">setConvergenceTest()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setOptionsPrefix">setOptionsPrefix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setWhichEigenpairs">setWhichEigenpairs()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setUp">setUp()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setConvergenceTest">setConvergenceTest()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.FN-class.html#setOptionsPrefix">setOptionsPrefix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.FN-class.html">FN</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setWhichEigenpairs">setWhichEigenpairs()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setWhichEigenpairs">setWhichEigenpairs()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setCrossEPS">setCrossEPS()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#setOptionsPrefix">setOptionsPrefix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setWhichEigenpairs">setWhichEigenpairs()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setWhichEigenpairs">setWhichEigenpairs()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setCyclicEPS">setCyclicEPS()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setOptionsPrefix">setOptionsPrefix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setWhichSingularTriplets">setWhichSingularTriplets()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setWhichEigenpairs">setWhichEigenpairs()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setCyclicExplicitMatrix">setCyclicExplicitMatrix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setOptionsPrefix">setOptionsPrefix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST.MatMode-class.html#SHELL">SHELL</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.ST.MatMode-class.html">MatMode</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setWhichSingularTriplets">setWhichSingularTriplets()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setDeflationSpace">setDeflationSpace()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.RG-class.html#setOptionsPrefix">setOptionsPrefix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.RG-class.html">RG</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST.Type-class.html#SHELL">SHELL</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.ST.Type-class.html">Type</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST.MatMode-class.html#SHELL">SHELL</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.ST.MatMode-class.html">MatMode</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#setDimensions">setDimensions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setOptionsPrefix">setOptionsPrefix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST.Type-class.html#SHIFT">SHIFT</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST.Type-class.html#SHELL">SHELL</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.ST.Type-class.html">Type</a>)</span></td>
 </tr>
 <tr>
@@ -1602,261 +1609,269 @@
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setOptionsPrefix">setOptionsPrefix()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#shift">shift</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST.Type-class.html#SHIFT">SHIFT</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.ST.Type-class.html">Type</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#setDimensions">setDimensions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#setOrthogonalization">setOrthogonalization()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP.Refine-class.html#SIMPLE">SIMPLE</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.NEP.Refine-class.html">Refine</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#shift">shift</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setDimensions">setDimensions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setPowerShiftType">setPowerShiftType()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.Refine-class.html#SIMPLE">SIMPLE</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP.Refine-class.html">Refine</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP.Refine-class.html#SIMPLE">SIMPLE</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.NEP.Refine-class.html">Refine</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setDimensions">setDimensions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setProblemType">setProblemType()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST.Type-class.html#SINVERT">SINVERT</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.ST.Type-class.html">Type</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.Refine-class.html#SIMPLE">SIMPLE</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP.Refine-class.html">Refine</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setDimensions">setDimensions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setProblemType">setProblemType()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc-module.html">SLEPc</a><br />
-<span class="index-where">(in <a href="slepc4py-module.html">slepc4py</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST.Type-class.html#SINVERT">SINVERT</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.ST.Type-class.html">Type</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setDS">setDS()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#setRandom">setRandom()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py-module.html">slepc4py</a></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc-module.html">SLEPc</a><br />
+<span class="index-where">(in <a href="slepc4py-module.html">slepc4py</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.RG-class.html#setEllipseParameters">setEllipseParameters()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.RG-class.html">RG</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.FN-class.html#setRationalDenominator">setRationalDenominator()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.FN-class.html">FN</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP.Type-class.html#SLP">SLP</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.NEP.Type-class.html">Type</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py-module.html">slepc4py</a></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setExtraction">setExtraction()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.FN-class.html#setRationalNumerator">setRationalNumerator()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.FN-class.html">FN</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD.Which-class.html#SMALLEST">SMALLEST</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.SVD.Which-class.html">Which</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP.Type-class.html#SLP">SLP</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.NEP.Type-class.html">Type</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#setExtraRow">setExtraRow()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setRefine">setRefine()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_IMAGINARY">SMALLEST_IMAGINARY</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS.Which-class.html">Which</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD.Which-class.html#SMALLEST">SMALLEST</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.SVD.Which-class.html">Which</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#setFN">setFN()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#setRefined">setRefined()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP.Which-class.html#SMALLEST_IMAGINARY">SMALLEST_IMAGINARY</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.NEP.Which-class.html">Which</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_IMAGINARY">SMALLEST_IMAGINARY</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS.Which-class.html">Which</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#setFromOptions">setFromOptions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setRG">setRG()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_IMAGINARY">SMALLEST_IMAGINARY</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP.Which-class.html">Which</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP.Which-class.html#SMALLEST_IMAGINARY">SMALLEST_IMAGINARY</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.NEP.Which-class.html">Which</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#setFromOptions">setFromOptions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setRG">setRG()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_MAGNITUDE">SMALLEST_MAGNITUDE</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS.Which-class.html">Which</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_IMAGINARY">SMALLEST_IMAGINARY</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP.Which-class.html">Which</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setFromOptions">setFromOptions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setRG">setRG()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP.Which-class.html#SMALLEST_MAGNITUDE">SMALLEST_MAGNITUDE</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.NEP.Which-class.html">Which</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_MAGNITUDE">SMALLEST_MAGNITUDE</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS.Which-class.html">Which</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.FN-class.html#setFromOptions">setFromOptions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.FN-class.html">FN</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setRIILagPreconditioner">setRIILagPreconditioner()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_MAGNITUDE">SMALLEST_MAGNITUDE</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP.Which-class.html">Which</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP.Which-class.html#SMALLEST_MAGNITUDE">SMALLEST_MAGNITUDE</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.NEP.Which-class.html">Which</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#setFromOptions">setFromOptions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setRQCGReset">setRQCGReset()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_REAL">SMALLEST_REAL</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS.Which-class.html">Which</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_MAGNITUDE">SMALLEST_MAGNITUDE</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP.Which-class.html">Which</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setFromOptions">setFromOptions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.FN-class.html#setScale">setScale()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.FN-class.html">FN</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP.Which-class.html#SMALLEST_REAL">SMALLEST_REAL</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.NEP.Which-class.html">Which</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_REAL">SMALLEST_REAL</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS.Which-class.html">Which</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setFromOptions">setFromOptions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setScale">setScale()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_REAL">SMALLEST_REAL</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP.Which-class.html">Which</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP.Which-class.html#SMALLEST_REAL">SMALLEST_REAL</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.NEP.Which-class.html">Which</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.RG-class.html#setFromOptions">setFromOptions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.RG-class.html">RG</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setShift">setShift()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#solve">solve()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_REAL">SMALLEST_REAL</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP.Which-class.html">Which</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html#setFromOptions">setFromOptions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.ST-class.html">ST</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#setSizes">setSizes()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#solve">solve()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#solve">solve()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setFromOptions">setFromOptions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV-class.html#setSizesFromVec">setSizesFromVec()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV-class.html">BV</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#solve">solve()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#solve">solve()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setFunction">setFunction()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setSplitOperator">setSplitOperator()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#solve">solve()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#solve">solve()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setImplicitTranspose">setImplicitTranspose()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setST">setST()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#solve">solve()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#solve">solve()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setInitialSpace">setInitialSpace()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setST">setST()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.FN.Type-class.html#SQRT">SQRT</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.FN.Type-class.html">Type</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#solve">solve()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setInitialSpace">setInitialSpace()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS-class.html#setState">setState()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#st">st</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.FN.Type-class.html#SQRT">SQRT</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.FN.Type-class.html">Type</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setInitialSpace">setInitialSpace()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setStoppingTest">setStoppingTest()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#st">st</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setInitialSpaces">setInitialSpaces()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setTarget">setTarget()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.ST-class.html">ST</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc-module.html">slepc4py.SLEPc</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setInitialSpace">setInitialSpace()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setTolerances">setTolerances()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setInterval">setInterval()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setTarget">setTarget()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS.StateType-class.html">StateType</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.DS-class.html">DS</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setInterval">setInterval()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.RG-class.html#setIntervalEndpoints">setIntervalEndpoints()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.RG-class.html">RG</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setTolerances">setTolerances()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#setTolerances">setTolerances()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.Type-class.html#STOAR">STOAR</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP.Type-class.html">Type</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.RG-class.html#setIntervalEndpoints">setIntervalEndpoints()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.RG-class.html">RG</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setTolerances">setTolerances()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setJacobian">setJacobian()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.MFN-class.html#setTolerances">setTolerances()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.MFN-class.html">MFN</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP.Extract-class.html#STRUCTURED">STRUCTURED</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.PEP.Extract-class.html">Extract</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setJacobian">setJacobian()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setKrylovSchurDetectZeros">setKrylovSchurDetectZeros()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setTolerances">setTolerances()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setTolerances">setTolerances()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS.Type-class.html#SUBSPACE">SUBSPACE</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS.Type-class.html">Type</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setKrylovSchurDetectZeros">setKrylovSchurDetectZeros()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setKrylovSchurDimensions">setKrylovSchurDimensions()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setTolerances">setTolerances()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setTolerances">setTolerances()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.DS.Type-class.html#SVD">SVD</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.DS.Type-class.html">Type</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setKrylovSchurDimensions">setKrylovSchurDimensions()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setTrackAll">setTrackAll()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setKrylovSchurLocking">setKrylovSchurLocking()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html#setTolerances">setTolerances()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.SVD-class.html">SVD</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.SVD-class.html">SVD</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc-module.html">slepc4py.SLEPc</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setKrylovSchurLocking">setKrylovSchurLocking()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setKrylovSchurPartitions">setKrylovSchurPartitions()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setTrackAll">setTrackAll()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setTrackAll">setTrackAll()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.BV.Type-class.html#SVEC">SVEC</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.BV.Type-class.html">Type</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setKrylovSchurPartitions">setKrylovSchurPartitions()</a><br />
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.EPS-class.html#setKrylovSchurRestart">setKrylovSchurRestart()</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc.EPS-class.html">EPS</a>)</span></td>
-<td width="33%" class="link-index"><a href="slepc4py.SLEPc.PEP-class.html#setTrackAll">setTrackAll()</a><br />
-<span class="index-where">(in <a href="slepc4py.SLEPc.PEP-class.html">PEP</a>)</span></td>
+<td width="33%" class="link-index"><a href="slepc4py.SLEPc.NEP-class.html#setTrackAll">setTrackAll()</a><br />
+<span class="index-where">(in <a href="slepc4py.SLEPc.NEP-class.html">NEP</a>)</span></td>
 <td width="33%" class="link-index"><a href="slepc4py.SLEPc.Sys-class.html">Sys</a><br />
 <span class="index-where">(in <a href="slepc4py.SLEPc-module.html">slepc4py.SLEPc</a>)</span></td>
 </tr>
@@ -2290,7 +2305,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/module-tree.html b/docs/apiref/module-tree.html
index 5f57dde..4f57291 100644
--- a/docs/apiref/module-tree.html
+++ b/docs/apiref/module-tree.html
@@ -98,7 +98,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py-module.html b/docs/apiref/slepc4py-module.html
index 23acf63..48bedeb 100644
--- a/docs/apiref/slepc4py-module.html
+++ b/docs/apiref/slepc4py-module.html
@@ -70,7 +70,7 @@ a large, sparse, rectangular matrix.</p>
 
 <hr />
 <div class="fields">      <p><strong>Version:</strong>
-        3.7.0
+        3.8.0
       </p>
       <p><strong>Author:</strong>
         Lisandro Dalcin
@@ -291,7 +291,7 @@ Extension('extension_name', ...
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc-module.html b/docs/apiref/slepc4py.SLEPc-module.html
index 7ceff60..2b57578 100644
--- a/docs/apiref/slepc4py.SLEPc-module.html
+++ b/docs/apiref/slepc4py.SLEPc-module.html
@@ -81,96 +81,72 @@ Scalable Library for Eigenvalue Problem Computations.
   </td>
 </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.BV-class.html" class="summary-name">BV</a><br />
       BV
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.DS-class.html" class="summary-name">DS</a><br />
       DS
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.EPS-class.html" class="summary-name">EPS</a><br />
       EPS
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.FN-class.html" class="summary-name">FN</a><br />
       FN
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.MFN-class.html" class="summary-name">MFN</a><br />
       MFN
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.NEP-class.html" class="summary-name">NEP</a><br />
       NEP
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.PEP-class.html" class="summary-name">PEP</a><br />
       PEP
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.RG-class.html" class="summary-name">RG</a><br />
       RG
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.ST-class.html" class="summary-name">ST</a><br />
       ST
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.SVD-class.html" class="summary-name">SVD</a><br />
       SVD
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.Sys-class.html" class="summary-name">Sys</a>
     </td>
   </tr>
 <tr class="private">
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc._p_mem-class.html" class="summary-name" onclick="show_private();">_p_mem</a>
     </td>
   </tr>
@@ -246,21 +222,21 @@ Scalable Library for Eigenvalue Problem Computations.
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type"> </span>
     </td><td class="summary">
-        <a name="COMM_NULL"></a><span class="summary-name">COMM_NULL</span> = <code title="<petsc4py.PETSc.Comm object at 0x7f795a9b56d0>"><petsc4py.PETSc.Comm object at 0x7f795a9b56d0></code>
+        <a name="COMM_NULL"></a><span class="summary-name">COMM_NULL</span> = <code title="<petsc4py.PETSc.Comm object at 0x7fd033b5bed0>"><petsc4py.PETSc.Comm object at 0x7fd033b5bed0></code>
     </td>
   </tr>
 <tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type"> </span>
     </td><td class="summary">
-        <a name="COMM_SELF"></a><span class="summary-name">COMM_SELF</span> = <code title="<petsc4py.PETSc.Comm object at 0x7f795a9b5710>"><petsc4py.PETSc.Comm object at 0x7f795a9b5710></code>
+        <a name="COMM_SELF"></a><span class="summary-name">COMM_SELF</span> = <code title="<petsc4py.PETSc.Comm object at 0x7fd033b5bf10>"><petsc4py.PETSc.Comm object at 0x7fd033b5bf10></code>
     </td>
   </tr>
 <tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type"> </span>
     </td><td class="summary">
-        <a name="COMM_WORLD"></a><span class="summary-name">COMM_WORLD</span> = <code title="<petsc4py.PETSc.Comm object at 0x7f795a9b5750>"><petsc4py.PETSc.Comm object at 0x7f795a9b5750></code>
+        <a name="COMM_WORLD"></a><span class="summary-name">COMM_WORLD</span> = <code title="<petsc4py.PETSc.Comm object at 0x7fd033b5bf50>"><petsc4py.PETSc.Comm object at 0x7fd033b5bf50></code>
     </td>
   </tr>
 <tr>
@@ -302,13 +278,13 @@ Scalable Library for Eigenvalue Problem Computations.
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type"> </span>
     </td><td class="summary">
-        <a href="slepc4py.SLEPc-module.html#__pyx_capi__" class="summary-name">__pyx_capi__</a> = <code title="{'PySlepcBV_Get': <capsule object "BV (PyObject *)" at 0x7f795a9ced50>\
+        <a href="slepc4py.SLEPc-module.html#__pyx_capi__" class="summary-name">__pyx_capi__</a> = <code title="{'PySlepcBV_Get': <capsule object "BV (PyObject *)" at 0x7fd033b01960>\
 ,
- 'PySlepcBV_New': <capsule object "PyObject *(BV)" at 0x7f795a9ced20>,
- 'PySlepcDS_Get': <capsule object "DS (PyObject *)" at 0x7f795a9cedb0>\
+ 'PySlepcBV_New': <capsule object "PyObject *(BV)" at 0x7fd033b01930>,
+ 'PySlepcDS_Get': <capsule object "DS (PyObject *)" at 0x7fd033b019c0>\
 ,
- 'PySlepcDS_New': <capsule object "PyObject *(DS)" at 0x7f795a9ced80>,
- 'PySlepcEPS_Get': <capsule object "EPS (PyObject *)" at 0x7f795a9ceed\
+ 'PySlepcDS_New': <capsule object "PyObject *(DS)" at 0x7fd033b01990>,
+ 'PySlepcEPS_Get': <capsule object "EPS (PyObject *)" at 0x7fd033b01ae\
 0>,
 ..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">PySlepcBV_Get</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "BV (PyObject<code class="variable-ellipsis">...</code></code>
     </td>
@@ -344,13 +320,13 @@ Scalable Library for Eigenvalue Problem Computations.
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">PySlepcBV_Get</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "BV (PyObject *)" at 0x7f795a9ced50><code class="variable-op"></code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">PySlepcBV_Get</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "BV (PyObject *)" at 0x7fd033b01960><code class="variable-op"></code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
 <code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">PySlepcBV_New</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "PyObject *(BV)" at 0x7f795a9ced20><code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">PySlepcDS_Get</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "DS (PyObject *)" at 0x7f795a9cedb0><code class="variable-op"></code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ <code class="variable-quote">'</code><code class="variable-string">PySlepcBV_New</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "PyObject *(BV)" at 0x7fd033b01930><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">PySlepcDS_Get</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "DS (PyObject *)" at 0x7fd033b019c0><code class="variable-op"></code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
 <code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">PySlepcDS_New</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "PyObject *(DS)" at 0x7f795a9ced80><code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">PySlepcEPS_Get</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "EPS (PyObject *)" at 0x7f795a9ceed<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ <code class="variable-quote">'</code><code class="variable-string">PySlepcDS_New</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "PyObject *(DS)" at 0x7fd033b01990><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">PySlepcEPS_Get</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "EPS (PyObject *)" at 0x7fd033b01ae<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
 0><code class="variable-op">,</code>
 <code class="variable-ellipsis">...</code>
 </pre></td></tr></table>
@@ -390,7 +366,7 @@ Scalable Library for Eigenvalue Problem Computations.
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.BV-class.html b/docs/apiref/slepc4py.SLEPc.BV-class.html
index 847a0c3..4b1e54e 100644
--- a/docs/apiref/slepc4py.SLEPc.BV-class.html
+++ b/docs/apiref/slepc4py.SLEPc.BV-class.html
@@ -60,15 +60,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class BV</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type BV</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_bv" name="class_hierarchy_for_bv">
-<area shape="rect" id="node1" href="javascript:void(0);" title="petsc4py.PETSc.Object" alt="" coords="5,5,168,31"/>
-<area shape="rect" id="node2" href="slepc4py.SLEPc.BV-class.html" title="BV" alt="" coords="67,60,107,85"/>
-</map>
-  <img src="class_hierarchy_for_bv.png" alt='' usemap="#class_hierarchy_for_bv" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 BV
@@ -91,49 +86,37 @@ BV
   </td>
 </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.BV.BlockType-class.html" class="summary-name">BlockType</a><br />
       BV block-orthogonalization types
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.BV.BlockType-class.html" class="summary-name">OrthogBlockType</a><br />
       BV block-orthogonalization types
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.BV.RefineType-class.html" class="summary-name">OrthogRefineType</a><br />
       BV orthogonalization refinement types
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.BV.OrthogType-class.html" class="summary-name">OrthogType</a><br />
       BV orthogonalization types
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.BV.RefineType-class.html" class="summary-name">RefineType</a><br />
       BV orthogonalization refinement types
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.BV.Type-class.html" class="summary-name">Type</a><br />
       BV type
     </td>
@@ -887,21 +870,8 @@ of a set of vectors).</td>
       <code>setAttr</code>,
       <code>setName</code>,
       <code>setTabLevel</code>,
-      <code>stateIncrease</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
+      <code>stateIncrease</code>,
+      <code>viewFromOptions</code>
       </p>
     </td>
   </tr>
@@ -936,9 +906,6 @@ of a set of vectors).</td>
       <code>refcount</code>,
       <code>type</code>
       </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
     </td>
   </tr>
 </table>
@@ -979,7 +946,7 @@ of a set of vectors).</td>
   <dl class="fields">
     <dt>Returns: a new object with type S, a subtype of T</dt>
     <dt>Overrides:
-        object.__new__
+        petsc4py.PETSc.Object.__new__
     </dt>
   </dl>
 </td></tr></table>
@@ -1710,7 +1677,7 @@ that is, compute the QR decomposition.</p>
 <div class="rst-section" id="rst-parameters">
 <h1 class="heading">Parameters</h1>
 <dl class="rst-docutils">
-<dt>R: Mat or None</dt>
+<dt>R: Mat, optional</dt>
 <dd>A sequential dense matrix.</dd>
 </dl>
 </div>
@@ -1938,7 +1905,7 @@ option.</p>
 <div class="rst-section" id="rst-parameters">
 <h1 class="heading">Parameters</h1>
 <dl class="rst-docutils">
-<dt>mat:  Mat, optional</dt>
+<dt>mat:  Mat or None</dt>
 <dd>The matrix of the inner product.</dd>
 <dt>indef: bool, optional</dt>
 <dd>Whether the matrix is indefinite</dd>
@@ -2216,7 +2183,7 @@ output is used.</dd>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.BV.BlockType-class.html b/docs/apiref/slepc4py.SLEPc.BV.BlockType-class.html
index 5a22734..65ff8f7 100644
--- a/docs/apiref/slepc4py.SLEPc.BV.BlockType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.BV.BlockType-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class BlockType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type BlockType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_blocktype" name="class_hierarchy_for_blocktype">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.BV.BlockType-class.html" title="BlockType" alt="" coords="5,5,89,31"/>
-</map>
-  <img src="class_hierarchy_for_blocktype.png" alt='' usemap="#class_hierarchy_for_blocktype" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>BV block-orthogonalization types</p>
@@ -77,43 +73,6 @@
 <li><a href="slepc4py.SLEPc.BV.BlockType-class.html#CHOL" class="link">CHOL</a>: Cholesky.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -153,31 +112,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -209,7 +143,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.BV.OrthogType-class.html b/docs/apiref/slepc4py.SLEPc.BV.OrthogType-class.html
index 9d8d81a..16236c7 100644
--- a/docs/apiref/slepc4py.SLEPc.BV.OrthogType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.BV.OrthogType-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class OrthogType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type OrthogType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_orthogtype" name="class_hierarchy_for_orthogtype">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.BV.OrthogType-class.html" title="OrthogType" alt="" coords="5,5,96,31"/>
-</map>
-  <img src="class_hierarchy_for_orthogtype.png" alt='' usemap="#class_hierarchy_for_orthogtype" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>BV orthogonalization types</p>
@@ -77,43 +73,6 @@
 <li><a href="slepc4py.SLEPc.BV.OrthogType-class.html#MGS" class="link">MGS</a>: Modified Gram-Schmidt.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -153,31 +112,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -209,7 +143,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.BV.RefineType-class.html b/docs/apiref/slepc4py.SLEPc.BV.RefineType-class.html
index c832cab..07fe2a2 100644
--- a/docs/apiref/slepc4py.SLEPc.BV.RefineType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.BV.RefineType-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class RefineType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type RefineType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_refinetype" name="class_hierarchy_for_refinetype">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.BV.RefineType-class.html" title="RefineType" alt="" coords="5,5,95,31"/>
-</map>
-  <img src="class_hierarchy_for_refinetype.png" alt='' usemap="#class_hierarchy_for_refinetype" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>BV orthogonalization refinement types</p>
@@ -78,43 +74,6 @@
 <li><a href="slepc4py.SLEPc.BV.RefineType-class.html#ALWAYS" class="link">ALWAYS</a>:   Always reorthogonalize.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -161,31 +120,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -217,7 +151,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.BV.Type-class.html b/docs/apiref/slepc4py.SLEPc.BV.Type-class.html
index 980d054..19fb15a 100644
--- a/docs/apiref/slepc4py.SLEPc.BV.Type-class.html
+++ b/docs/apiref/slepc4py.SLEPc.BV.Type-class.html
@@ -61,55 +61,14 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Type</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Type</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_type" name="class_hierarchy_for_type">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.BV.Type-class.html" title="Type" alt="" coords="5,5,56,31"/>
-</map>
-  <img src="class_hierarchy_for_type.png" alt='' usemap="#class_hierarchy_for_type" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 BV type
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -163,31 +122,6 @@ BV type
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -219,7 +153,7 @@ BV type
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.DS-class.html b/docs/apiref/slepc4py.SLEPc.DS-class.html
index a98f6f5..6915202 100644
--- a/docs/apiref/slepc4py.SLEPc.DS-class.html
+++ b/docs/apiref/slepc4py.SLEPc.DS-class.html
@@ -60,15 +60,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class DS</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type DS</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_ds" name="class_hierarchy_for_ds">
-<area shape="rect" id="node1" href="javascript:void(0);" title="petsc4py.PETSc.Object" alt="" coords="5,5,168,31"/>
-<area shape="rect" id="node2" href="slepc4py.SLEPc.DS-class.html" title="DS" alt="" coords="66,60,107,85"/>
-</map>
-  <img src="class_hierarchy_for_ds.png" alt='' usemap="#class_hierarchy_for_ds" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 DS
@@ -91,25 +86,19 @@ DS
   </td>
 </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.DS.MatType-class.html" class="summary-name">MatType</a><br />
       To refer to one of the matrices stored internally in DS
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.DS.StateType-class.html" class="summary-name">StateType</a><br />
       DS state types
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.DS.Type-class.html" class="summary-name">Type</a><br />
       DS type
     </td>
@@ -620,21 +609,8 @@ row gets up-to-date after a call to <code class="link">solve()</code>.</td>
       <code>setAttr</code>,
       <code>setName</code>,
       <code>setTabLevel</code>,
-      <code>stateIncrease</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
+      <code>stateIncrease</code>,
+      <code>viewFromOptions</code>
       </p>
     </td>
   </tr>
@@ -669,9 +645,6 @@ row gets up-to-date after a call to <code class="link">solve()</code>.</td>
       <code>refcount</code>,
       <code>type</code>
       </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
     </td>
   </tr>
 </table>
@@ -712,7 +685,7 @@ row gets up-to-date after a call to <code class="link">solve()</code>.</td>
   <dl class="fields">
     <dt>Returns: a new object with type S, a subtype of T</dt>
     <dt>Overrides:
-        object.__new__
+        petsc4py.PETSc.Object.__new__
     </dt>
   </dl>
 </td></tr></table>
@@ -1441,7 +1414,7 @@ output is used.</dd>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.DS.MatType-class.html b/docs/apiref/slepc4py.SLEPc.DS.MatType-class.html
index cd4c2b5..3722510 100644
--- a/docs/apiref/slepc4py.SLEPc.DS.MatType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.DS.MatType-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class MatType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type MatType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_mattype" name="class_hierarchy_for_mattype">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.DS.MatType-class.html" title="MatType" alt="" coords="5,5,79,31"/>
-</map>
-  <img src="class_hierarchy_for_mattype.png" alt='' usemap="#class_hierarchy_for_mattype" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>To refer to one of the matrices stored internally in DS</p>
@@ -87,43 +83,6 @@
 <li><a href="slepc4py.SLEPc.DS.MatType-class.html#W" class="link">W</a>:  workspace matrix.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -233,31 +192,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -289,7 +223,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.DS.StateType-class.html b/docs/apiref/slepc4py.SLEPc.DS.StateType-class.html
index 7e635f5..93bbd51 100644
--- a/docs/apiref/slepc4py.SLEPc.DS.StateType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.DS.StateType-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class StateType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type StateType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_statetype" name="class_hierarchy_for_statetype">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.DS.StateType-class.html" title="StateType" alt="" coords="5,5,88,31"/>
-</map>
-  <img src="class_hierarchy_for_statetype.png" alt='' usemap="#class_hierarchy_for_statetype" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>DS state types</p>
@@ -79,43 +75,6 @@
 <li><a href="slepc4py.SLEPc.DS.StateType-class.html#TRUNCATED" class="link">TRUNCATED</a>: Condensed form truncated to a smaller size.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -169,31 +128,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -225,7 +159,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.DS.Type-class.html b/docs/apiref/slepc4py.SLEPc.DS.Type-class.html
index 771292b..67bf52d 100644
--- a/docs/apiref/slepc4py.SLEPc.DS.Type-class.html
+++ b/docs/apiref/slepc4py.SLEPc.DS.Type-class.html
@@ -61,55 +61,14 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Type</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Type</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_type_2" name="class_hierarchy_for_type_2">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.DS.Type-class.html" title="Type" alt="" coords="5,5,56,31"/>
-</map>
-  <img src="class_hierarchy_for_type_2.png" alt='' usemap="#class_hierarchy_for_type_2" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 DS type
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -191,31 +150,6 @@ DS type
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -247,7 +181,7 @@ DS type
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.EPS-class.html b/docs/apiref/slepc4py.SLEPc.EPS-class.html
index 3656c47..f51beaf 100644
--- a/docs/apiref/slepc4py.SLEPc.EPS-class.html
+++ b/docs/apiref/slepc4py.SLEPc.EPS-class.html
@@ -60,15 +60,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class EPS</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type EPS</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_eps" name="class_hierarchy_for_eps">
-<area shape="rect" id="node1" href="javascript:void(0);" title="petsc4py.PETSc.Object" alt="" coords="5,5,168,31"/>
-<area shape="rect" id="node2" href="slepc4py.SLEPc.EPS-class.html" title="EPS" alt="" coords="62,60,111,85"/>
-</map>
-  <img src="class_hierarchy_for_eps.png" alt='' usemap="#class_hierarchy_for_eps" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 EPS
@@ -91,81 +86,61 @@ EPS
   </td>
 </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.EPS.Balance-class.html" class="summary-name">Balance</a><br />
       EPS type of balancing used for non-Hermitian problems
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.EPS.Conv-class.html" class="summary-name">Conv</a><br />
       EPS convergence test
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html" class="summary-name">ConvergedReason</a><br />
       EPS convergence reasons
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.EPS.ErrorType-class.html" class="summary-name">ErrorType</a><br />
       EPS error type to assess accuracy of computed solutions
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.EPS.Extraction-class.html" class="summary-name">Extraction</a><br />
       EPS extraction technique
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.EPS.LanczosReorthogType-class.html" class="summary-name">LanczosReorthogType</a><br />
       EPS Lanczos reorthogonalization type
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.EPS.PowerShiftType-class.html" class="summary-name">PowerShiftType</a><br />
       EPS Power shift type.
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.EPS.ProblemType-class.html" class="summary-name">ProblemType</a><br />
       EPS problem type
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.EPS.Type-class.html" class="summary-name">Type</a><br />
       EPS type
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.EPS.Which-class.html" class="summary-name">Which</a><br />
       EPS desired piece of spectrum
     </td>
@@ -769,6 +744,23 @@ iteration.</td>
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
+          <td><span class="summary-sig"><a name="getMonitor"></a><span class="summary-sig-name">getMonitor</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Gets the list of monitor functions.</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
           <td><span class="summary-sig"><a href="slepc4py.SLEPc.EPS-class.html#getOperators" class="summary-sig-name">getOperators</a>(<span class="summary-sig-arg">self</span>)</span><br />
       Gets the matrices associated with the eigenvalue problem.</td>
           <td align="right" valign="top">
@@ -1409,6 +1401,26 @@ iteration.</td>
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
+          <td><span class="summary-sig"><a name="setMonitor"></a><span class="summary-sig-name">setMonitor</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">monitor</span>,
+        <span class="summary-sig-arg">args</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">kargs</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Appends a monitor function to the list of monitors.</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
           <td><span class="summary-sig"><a href="slepc4py.SLEPc.EPS-class.html#setOperators" class="summary-sig-name">setOperators</a>(<span class="summary-sig-arg">self</span>,
         <span class="summary-sig-arg">Mat A</span>,
         <span class="summary-sig-arg">Mat B</span>=<span class="summary-sig-default">None</span>)</span><br />
@@ -1538,6 +1550,26 @@ eigensolver.</td>
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
+          <td><span class="summary-sig"><a name="setStoppingTest"></a><span class="summary-sig-name">setStoppingTest</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">stopping</span>,
+        <span class="summary-sig-arg">args</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">kargs</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Sets a function to decide when to stop the outer iteration of the eigensolver.</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
           <td><span class="summary-sig"><a href="slepc4py.SLEPc.EPS-class.html#setTarget" class="summary-sig-name">setTarget</a>(<span class="summary-sig-arg">self</span>,
         <span class="summary-sig-arg">target</span>)</span><br />
       Sets the value of the target.</td>
@@ -1751,21 +1783,8 @@ to which the calling process belongs.</td>
       <code>setAttr</code>,
       <code>setName</code>,
       <code>setTabLevel</code>,
-      <code>stateIncrease</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
+      <code>stateIncrease</code>,
+      <code>viewFromOptions</code>
       </p>
     </td>
   </tr>
@@ -1856,9 +1875,6 @@ to which the calling process belongs.</td>
       <code>refcount</code>,
       <code>type</code>
       </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
     </td>
   </tr>
 </table>
@@ -1899,7 +1915,7 @@ to which the calling process belongs.</td>
   <dl class="fields">
     <dt>Returns: a new object with type S, a subtype of T</dt>
     <dt>Overrides:
-        object.__new__
+        petsc4py.PETSc.Object.__new__
     </dt>
   </dl>
 </td></tr></table>
@@ -4394,8 +4410,8 @@ measure the set-up time separately from the solve time.</p>
 <p>Not all eigensolvers implemented in EPS account for all the
 possible values. Also, some values make sense only for certain
 types of problems. If SLEPc is compiled for real numbers
-<a href="slepc4py.SLEPc.EPS.Which-class.html#LARGEST_IMAGINARY" class="link">EPS.Which.LARGEST_IMAGINARY</a> and
-<a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_IMAGINARY" class="link">EPS.Which.SMALLEST_IMAGINARY</a> use the absolute value of the
+<a href="slepc4py.SLEPc.EPS.Which-class.html#LARGEST_IMAGINARY" class="link">EPS.Which.LARGEST\_IMAGINARY</a> and
+<a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_IMAGINARY" class="link">EPS.Which.SMALLEST\_IMAGINARY</a> use the absolute value of the
 imaginary part for eigenvalue selection.</p>
 </div>
   <dl class="fields">
@@ -4525,7 +4541,7 @@ output is used.</dd>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.EPS.Balance-class.html b/docs/apiref/slepc4py.SLEPc.EPS.Balance-class.html
index 47a5d5d..2f507fd 100644
--- a/docs/apiref/slepc4py.SLEPc.EPS.Balance-class.html
+++ b/docs/apiref/slepc4py.SLEPc.EPS.Balance-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Balance</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Balance</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_balance" name="class_hierarchy_for_balance">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.EPS.Balance-class.html" title="Balance" alt="" coords="5,5,75,31"/>
-</map>
-  <img src="class_hierarchy_for_balance.png" alt='' usemap="#class_hierarchy_for_balance" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>EPS type of balancing used for non-Hermitian problems</p>
@@ -79,43 +75,6 @@
 <li><a href="slepc4py.SLEPc.EPS.Balance-class.html#USER" class="link">USER</a>:     User-defined.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -169,31 +128,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -225,7 +159,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.EPS.Conv-class.html b/docs/apiref/slepc4py.SLEPc.EPS.Conv-class.html
index a2e9754..9984541 100644
--- a/docs/apiref/slepc4py.SLEPc.EPS.Conv-class.html
+++ b/docs/apiref/slepc4py.SLEPc.EPS.Conv-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Conv</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Conv</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_conv" name="class_hierarchy_for_conv">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.EPS.Conv-class.html" title="Conv" alt="" coords="5,5,59,31"/>
-</map>
-  <img src="class_hierarchy_for_conv.png" alt='' usemap="#class_hierarchy_for_conv" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>EPS convergence test</p>
@@ -79,43 +75,6 @@
 <li><a href="slepc4py.SLEPc.EPS.Conv-class.html#USER" class="link">USER</a>:</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -169,31 +128,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -225,7 +159,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.EPS.ConvergedReason-class.html b/docs/apiref/slepc4py.SLEPc.EPS.ConvergedReason-class.html
index 658dc06..502d713 100644
--- a/docs/apiref/slepc4py.SLEPc.EPS.ConvergedReason-class.html
+++ b/docs/apiref/slepc4py.SLEPc.EPS.ConvergedReason-class.html
@@ -61,63 +61,22 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ConvergedReason</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type ConvergedReason</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_convergedr" name="class_hierarchy_for_convergedr">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.EPS.ConvergedReason-class.html" title="ConvergedReason" alt="" coords="5,5,136,31"/>
-</map>
-  <img src="class_hierarchy_for_convergedr.png" alt='' usemap="#class_hierarchy_for_convergedr" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>EPS convergence reasons</p>
 <ul class="rst-simple">
-<li><a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html#CONVERGED_TOL" class="link">CONVERGED_TOL</a>:</li>
-<li><a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html#CONVERGED_USER" class="link">CONVERGED_USER</a>:</li>
-<li><a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html#DIVERGED_ITS" class="link">DIVERGED_ITS</a>:</li>
-<li><a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html#DIVERGED_BREAKDOWN" class="link">DIVERGED_BREAKDOWN</a>:</li>
-<li><a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html#DIVERGED_SYMMETRY_LOST" class="link">DIVERGED_SYMMETRY_LOST</a>:</li>
-<li><a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html#CONVERGED_ITERATING" class="link">CONVERGED_ITERATING</a>:</li>
+<li><a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html#CONVERGED_TOL" class="link">CONVERGED\_TOL</a>:</li>
+<li><a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html#CONVERGED_USER" class="link">CONVERGED\_USER</a>:</li>
+<li><a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html#DIVERGED_ITS" class="link">DIVERGED\_ITS</a>:</li>
+<li><a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html#DIVERGED_BREAKDOWN" class="link">DIVERGED\_BREAKDOWN</a>:</li>
+<li><a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html#DIVERGED_SYMMETRY_LOST" class="link">DIVERGED\_SYMMETRY\_LOST</a>:</li>
+<li><a href="slepc4py.SLEPc.EPS.ConvergedReason-class.html#CONVERGED_ITERATING" class="link">CONVERGED\_ITERATING</a>:</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -192,31 +151,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -248,7 +182,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.EPS.ErrorType-class.html b/docs/apiref/slepc4py.SLEPc.EPS.ErrorType-class.html
index 707c0db..78f3094 100644
--- a/docs/apiref/slepc4py.SLEPc.EPS.ErrorType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.EPS.ErrorType-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ErrorType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type ErrorType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_errortype" name="class_hierarchy_for_errortype">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.EPS.ErrorType-class.html" title="ErrorType" alt="" coords="5,5,84,31"/>
-</map>
-  <img src="class_hierarchy_for_errortype.png" alt='' usemap="#class_hierarchy_for_errortype" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>EPS error type to assess accuracy of computed solutions</p>
@@ -78,43 +74,6 @@
 <li><a href="slepc4py.SLEPc.EPS.ErrorType-class.html#BACKWARD" class="link">BACKWARD</a>:  Backward error.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -161,31 +120,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -217,7 +151,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.EPS.Extraction-class.html b/docs/apiref/slepc4py.SLEPc.EPS.Extraction-class.html
index 3eadbc8..69815e3 100644
--- a/docs/apiref/slepc4py.SLEPc.EPS.Extraction-class.html
+++ b/docs/apiref/slepc4py.SLEPc.EPS.Extraction-class.html
@@ -61,64 +61,23 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Extraction</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Extraction</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_extraction" name="class_hierarchy_for_extraction">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.EPS.Extraction-class.html" title="Extraction" alt="" coords="5,5,87,31"/>
-</map>
-  <img src="class_hierarchy_for_extraction.png" alt='' usemap="#class_hierarchy_for_extraction" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>EPS extraction technique</p>
 <ul class="rst-simple">
 <li><a href="slepc4py.SLEPc.EPS.Extraction-class.html#RITZ" class="link">RITZ</a>:              Standard Rayleigh-Ritz extraction.</li>
 <li><a href="slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC" class="link">HARMONIC</a>:          Harmonic extraction.</li>
-<li><a href="slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC_RELATIVE" class="link">HARMONIC_RELATIVE</a>: Harmonic extraction relative to the eigenvalue.</li>
-<li><a href="slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC_RIGHT" class="link">HARMONIC_RIGHT</a>:    Harmonic extraction for rightmost eigenvalues.</li>
-<li><a href="slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC_LARGEST" class="link">HARMONIC_LARGEST</a>:  Harmonic extraction for largest magnitude (without target).</li>
+<li><a href="slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC_RELATIVE" class="link">HARMONIC\_RELATIVE</a>: Harmonic extraction relative to the eigenvalue.</li>
+<li><a href="slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC_RIGHT" class="link">HARMONIC\_RIGHT</a>:    Harmonic extraction for rightmost eigenvalues.</li>
+<li><a href="slepc4py.SLEPc.EPS.Extraction-class.html#HARMONIC_LARGEST" class="link">HARMONIC\_LARGEST</a>:  Harmonic extraction for largest magnitude (without target).</li>
 <li><a href="slepc4py.SLEPc.EPS.Extraction-class.html#REFINED" class="link">REFINED</a>:           Refined extraction.</li>
-<li><a href="slepc4py.SLEPc.EPS.Extraction-class.html#REFINED_HARMONIC" class="link">REFINED_HARMONIC</a>:  Refined harmonic extraction.</li>
+<li><a href="slepc4py.SLEPc.EPS.Extraction-class.html#REFINED_HARMONIC" class="link">REFINED\_HARMONIC</a>:  Refined harmonic extraction.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -193,31 +152,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -249,7 +183,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.EPS.LanczosReorthogType-class.html b/docs/apiref/slepc4py.SLEPc.EPS.LanczosReorthogType-class.html
index 21f3a72..c3cc44e 100644
--- a/docs/apiref/slepc4py.SLEPc.EPS.LanczosReorthogType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.EPS.LanczosReorthogType-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class LanczosReorthogType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type LanczosReorthogType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_lanczosreo" name="class_hierarchy_for_lanczosreo">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.EPS.LanczosReorthogType-class.html" title="LanczosReorthogType" alt="" coords="5,5,159,31"/>
-</map>
-  <img src="class_hierarchy_for_lanczosreo.png" alt='' usemap="#class_hierarchy_for_lanczosreo" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>EPS Lanczos reorthogonalization type</p>
@@ -81,43 +77,6 @@
 <li><a href="slepc4py.SLEPc.EPS.LanczosReorthogType-class.html#DELAYED" class="link">DELAYED</a>:</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -185,31 +144,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -241,7 +175,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.EPS.PowerShiftType-class.html b/docs/apiref/slepc4py.SLEPc.EPS.PowerShiftType-class.html
index 817bd60..e104d12 100644
--- a/docs/apiref/slepc4py.SLEPc.EPS.PowerShiftType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.EPS.PowerShiftType-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class PowerShiftType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type PowerShiftType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_powershift" name="class_hierarchy_for_powershift">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.EPS.PowerShiftType-class.html" title="PowerShiftType" alt="" coords="5,5,120,31"/>
-</map>
-  <img src="class_hierarchy_for_powershift.png" alt='' usemap="#class_hierarchy_for_powershift" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>EPS Power shift type.</p>
@@ -78,43 +74,6 @@
 <li><a href="slepc4py.SLEPc.EPS.PowerShiftType-class.html#WILKINSON" class="link">WILKINSON</a>:</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -161,31 +120,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -217,7 +151,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.EPS.ProblemType-class.html b/docs/apiref/slepc4py.SLEPc.EPS.ProblemType-class.html
index 5d7829c..301c594 100644
--- a/docs/apiref/slepc4py.SLEPc.EPS.ProblemType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.EPS.ProblemType-class.html
@@ -61,73 +61,26 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ProblemType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type ProblemType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_problemtyp" name="class_hierarchy_for_problemtyp">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.EPS.ProblemType-class.html" title="ProblemType" alt="" coords="5,5,104,31"/>
-</map>
-  <img src="class_hierarchy_for_problemtyp.png" alt='' usemap="#class_hierarchy_for_problemtyp" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>EPS problem type</p>
-<ul>
-<li><p class="rst-first"><a href="slepc4py.SLEPc.EPS.ProblemType-class.html#HEP" class="link">HEP</a>:    Hermitian eigenproblem.</p>
-</li>
-<li><p class="rst-first"><a href="slepc4py.SLEPc.EPS.ProblemType-class.html#NHEP" class="link">NHEP</a>:   Non-Hermitian eigenproblem.</p>
-</li>
-<li><p class="rst-first"><a href="slepc4py.SLEPc.EPS.ProblemType-class.html#GHEP" class="link">GHEP</a>:   Generalized Hermitian eigenproblem.</p>
-</li>
-<li><p class="rst-first"><a href="slepc4py.SLEPc.EPS.ProblemType-class.html#GNHEP" class="link">GNHEP</a>:  Generalized Non-Hermitian eigenproblem.</p>
-</li>
+<ul class="rst-simple">
+<li><a href="slepc4py.SLEPc.EPS.ProblemType-class.html#HEP" class="link">HEP</a>:    Hermitian eigenproblem.</li>
+<li><a href="slepc4py.SLEPc.EPS.ProblemType-class.html#NHEP" class="link">NHEP</a>:   Non-Hermitian eigenproblem.</li>
+<li><a href="slepc4py.SLEPc.EPS.ProblemType-class.html#GHEP" class="link">GHEP</a>:   Generalized Hermitian eigenproblem.</li>
+<li><a href="slepc4py.SLEPc.EPS.ProblemType-class.html#GNHEP" class="link">GNHEP</a>:  Generalized Non-Hermitian eigenproblem.</li>
 <li><dl class="rst-first rst-docutils">
 <dt><a href="slepc4py.SLEPc.EPS.ProblemType-class.html#PGNHEP" class="link">PGNHEP</a>: Generalized Non-Hermitian eigenproblem</dt>
-<dd><p class="rst-first rst-last">with positive definite <tt class="rst-docutils literal">B</tt>.</p>
-</dd>
+<dd>with positive definite <tt class="rst-docutils literal">B</tt>.</dd>
 </dl>
 </li>
-<li><p class="rst-first"><a href="slepc4py.SLEPc.EPS.ProblemType-class.html#GHIEP" class="link">GHIEP</a>:  Generalized Hermitian-indefinite eigenproblem.</p>
-</li>
+<li><a href="slepc4py.SLEPc.EPS.ProblemType-class.html#GHIEP" class="link">GHIEP</a>:  Generalized Hermitian-indefinite eigenproblem.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -195,31 +148,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -251,7 +179,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.EPS.Type-class.html b/docs/apiref/slepc4py.SLEPc.EPS.Type-class.html
index e2dd71f..a6f1eef 100644
--- a/docs/apiref/slepc4py.SLEPc.EPS.Type-class.html
+++ b/docs/apiref/slepc4py.SLEPc.EPS.Type-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Type</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Type</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_type_3" name="class_hierarchy_for_type_3">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.EPS.Type-class.html" title="Type" alt="" coords="5,5,56,31"/>
-</map>
-  <img src="class_hierarchy_for_type_3.png" alt='' usemap="#class_hierarchy_for_type_3" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>EPS type</p>
@@ -97,43 +93,6 @@
 <li><a href="slepc4py.SLEPc.EPS.Type-class.html#FEAST" class="link">FEAST</a>:</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -278,31 +237,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -334,7 +268,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.EPS.Which-class.html b/docs/apiref/slepc4py.SLEPc.EPS.Which-class.html
index 028315e..3260198 100644
--- a/docs/apiref/slepc4py.SLEPc.EPS.Which-class.html
+++ b/docs/apiref/slepc4py.SLEPc.EPS.Which-class.html
@@ -61,68 +61,27 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Which</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Which</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_which" name="class_hierarchy_for_which">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.EPS.Which-class.html" title="Which" alt="" coords="5,5,64,31"/>
-</map>
-  <img src="class_hierarchy_for_which.png" alt='' usemap="#class_hierarchy_for_which" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>EPS desired piece of spectrum</p>
 <ul class="rst-simple">
-<li><a href="slepc4py.SLEPc.EPS.Which-class.html#LARGEST_MAGNITUDE" class="link">LARGEST_MAGNITUDE</a>:  Largest magnitude (default).</li>
-<li><a href="slepc4py.SLEPc.EPS.Which-class.html#LARGEST_REAL" class="link">LARGEST_REAL</a>:       Largest real parts.</li>
-<li><a href="slepc4py.SLEPc.EPS.Which-class.html#LARGEST_IMAGINARY" class="link">LARGEST_IMAGINARY</a>:  Largest imaginary parts in magnitude.</li>
-<li><a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_MAGNITUDE" class="link">SMALLEST_MAGNITUDE</a>: Smallest magnitude.</li>
-<li><a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_REAL" class="link">SMALLEST_REAL</a>:      Smallest real parts.</li>
-<li><a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_IMAGINARY" class="link">SMALLEST_IMAGINARY</a>: Smallest imaginary parts in magnitude.</li>
-<li><a href="slepc4py.SLEPc.EPS.Which-class.html#TARGET_MAGNITUDE" class="link">TARGET_MAGNITUDE</a>:   Closest to target (in magnitude).</li>
-<li><a href="slepc4py.SLEPc.EPS.Which-class.html#TARGET_REAL" class="link">TARGET_REAL</a>:        Real part closest to target.</li>
-<li><a href="slepc4py.SLEPc.EPS.Which-class.html#TARGET_IMAGINARY" class="link">TARGET_IMAGINARY</a>:   Imaginary part closest to target.</li>
+<li><a href="slepc4py.SLEPc.EPS.Which-class.html#LARGEST_MAGNITUDE" class="link">LARGEST\_MAGNITUDE</a>:  Largest magnitude (default).</li>
+<li><a href="slepc4py.SLEPc.EPS.Which-class.html#LARGEST_REAL" class="link">LARGEST\_REAL</a>:       Largest real parts.</li>
+<li><a href="slepc4py.SLEPc.EPS.Which-class.html#LARGEST_IMAGINARY" class="link">LARGEST\_IMAGINARY</a>:  Largest imaginary parts in magnitude.</li>
+<li><a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_MAGNITUDE" class="link">SMALLEST\_MAGNITUDE</a>: Smallest magnitude.</li>
+<li><a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_REAL" class="link">SMALLEST\_REAL</a>:      Smallest real parts.</li>
+<li><a href="slepc4py.SLEPc.EPS.Which-class.html#SMALLEST_IMAGINARY" class="link">SMALLEST\_IMAGINARY</a>: Smallest imaginary parts in magnitude.</li>
+<li><a href="slepc4py.SLEPc.EPS.Which-class.html#TARGET_MAGNITUDE" class="link">TARGET\_MAGNITUDE</a>:   Closest to target (in magnitude).</li>
+<li><a href="slepc4py.SLEPc.EPS.Which-class.html#TARGET_REAL" class="link">TARGET\_REAL</a>:        Real part closest to target.</li>
+<li><a href="slepc4py.SLEPc.EPS.Which-class.html#TARGET_IMAGINARY" class="link">TARGET\_IMAGINARY</a>:   Imaginary part closest to target.</li>
 <li><a href="slepc4py.SLEPc.EPS.Which-class.html#ALL" class="link">ALL</a>:                All eigenvalues in an interval.</li>
 <li><a href="slepc4py.SLEPc.EPS.Which-class.html#USER" class="link">USER</a>:               User defined ordering.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -225,31 +184,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -281,7 +215,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.FN-class.html b/docs/apiref/slepc4py.SLEPc.FN-class.html
index 2908022..7792354 100644
--- a/docs/apiref/slepc4py.SLEPc.FN-class.html
+++ b/docs/apiref/slepc4py.SLEPc.FN-class.html
@@ -60,15 +60,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class FN</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type FN</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_fn" name="class_hierarchy_for_fn">
-<area shape="rect" id="node1" href="javascript:void(0);" title="petsc4py.PETSc.Object" alt="" coords="5,5,168,31"/>
-<area shape="rect" id="node2" href="slepc4py.SLEPc.FN-class.html" title="FN" alt="" coords="67,60,107,85"/>
-</map>
-  <img src="class_hierarchy_for_fn.png" alt='' usemap="#class_hierarchy_for_fn" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 FN
@@ -91,17 +86,13 @@ FN
   </td>
 </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.FN.CombineType-class.html" class="summary-name">CombineType</a><br />
       FN type of combination of child functions
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.FN.Type-class.html" class="summary-name">Type</a><br />
       FN type
     </td>
@@ -419,21 +410,8 @@ database.</td>
       <code>setAttr</code>,
       <code>setName</code>,
       <code>setTabLevel</code>,
-      <code>stateIncrease</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
+      <code>stateIncrease</code>,
+      <code>viewFromOptions</code>
       </p>
     </td>
   </tr>
@@ -468,9 +446,6 @@ database.</td>
       <code>refcount</code>,
       <code>type</code>
       </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
     </td>
   </tr>
 </table>
@@ -511,7 +486,7 @@ database.</td>
   <dl class="fields">
     <dt>Returns: a new object with type S, a subtype of T</dt>
     <dt>Overrides:
-        object.__new__
+        petsc4py.PETSc.Object.__new__
     </dt>
   </dl>
 </td></tr></table>
@@ -960,7 +935,7 @@ output is used.</dd>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.FN.CombineType-class.html b/docs/apiref/slepc4py.SLEPc.FN.CombineType-class.html
index 2093b93..c350615 100644
--- a/docs/apiref/slepc4py.SLEPc.FN.CombineType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.FN.CombineType-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class CombineType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type CombineType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_combinetyp" name="class_hierarchy_for_combinetyp">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.FN.CombineType-class.html" title="CombineType" alt="" coords="5,5,108,31"/>
-</map>
-  <img src="class_hierarchy_for_combinetyp.png" alt='' usemap="#class_hierarchy_for_combinetyp" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>FN type of combination of child functions</p>
@@ -79,43 +75,6 @@
 <li><a href="slepc4py.SLEPc.FN.CombineType-class.html#COMPOSE" class="link">COMPOSE</a>:   Composition      f(x) = f2(f1(x))</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -169,31 +128,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -225,7 +159,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.FN.Type-class.html b/docs/apiref/slepc4py.SLEPc.FN.Type-class.html
index 22875c4..02151a1 100644
--- a/docs/apiref/slepc4py.SLEPc.FN.Type-class.html
+++ b/docs/apiref/slepc4py.SLEPc.FN.Type-class.html
@@ -61,55 +61,14 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Type</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Type</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_type_4" name="class_hierarchy_for_type_4">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.FN.Type-class.html" title="Type" alt="" coords="5,5,56,31"/>
-</map>
-  <img src="class_hierarchy_for_type_4.png" alt='' usemap="#class_hierarchy_for_type_4" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 FN type
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -184,31 +143,6 @@ FN type
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -240,7 +174,7 @@ FN type
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:41 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.MFN-class.html b/docs/apiref/slepc4py.SLEPc.MFN-class.html
index 789925f..4fd93eb 100644
--- a/docs/apiref/slepc4py.SLEPc.MFN-class.html
+++ b/docs/apiref/slepc4py.SLEPc.MFN-class.html
@@ -60,15 +60,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class MFN</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type MFN</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_mfn" name="class_hierarchy_for_mfn">
-<area shape="rect" id="node1" href="javascript:void(0);" title="petsc4py.PETSc.Object" alt="" coords="5,5,168,31"/>
-<area shape="rect" id="node2" href="slepc4py.SLEPc.MFN-class.html" title="MFN" alt="" coords="61,60,112,85"/>
-</map>
-  <img src="class_hierarchy_for_mfn.png" alt='' usemap="#class_hierarchy_for_mfn" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 MFN
@@ -91,16 +86,12 @@ MFN
   </td>
 </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.MFN.ConvergedReason-class.html" class="summary-name">ConvergedReason</a>
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.MFN.Type-class.html" class="summary-name">Type</a><br />
       MFN type
     </td>
@@ -612,21 +603,8 @@ execution of the eigensolver.</td>
       <code>setAttr</code>,
       <code>setName</code>,
       <code>setTabLevel</code>,
-      <code>stateIncrease</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
+      <code>stateIncrease</code>,
+      <code>viewFromOptions</code>
       </p>
     </td>
   </tr>
@@ -661,9 +639,6 @@ execution of the eigensolver.</td>
       <code>refcount</code>,
       <code>type</code>
       </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
     </td>
   </tr>
 </table>
@@ -704,7 +679,7 @@ execution of the eigensolver.</td>
   <dl class="fields">
     <dt>Returns: a new object with type S, a subtype of T</dt>
     <dt>Overrides:
-        object.__new__
+        petsc4py.PETSc.Object.__new__
     </dt>
   </dl>
 </td></tr></table>
@@ -1350,7 +1325,7 @@ output is used.</dd>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:42 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.MFN.ConvergedReason-class.html b/docs/apiref/slepc4py.SLEPc.MFN.ConvergedReason-class.html
index 8cf8949..2e449b0 100644
--- a/docs/apiref/slepc4py.SLEPc.MFN.ConvergedReason-class.html
+++ b/docs/apiref/slepc4py.SLEPc.MFN.ConvergedReason-class.html
@@ -61,53 +61,12 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ConvergedReason</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type ConvergedReason</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_convergedr_2" name="class_hierarchy_for_convergedr_2">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.MFN.ConvergedReason-class.html" title="ConvergedReason" alt="" coords="5,5,136,31"/>
-</map>
-  <img src="class_hierarchy_for_convergedr_2.png" alt='' usemap="#class_hierarchy_for_convergedr_2" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -136,28 +95,28 @@
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type"> </span>
     </td><td class="summary">
-        <a name="CONVERGED_ITS"></a><span class="summary-name">CONVERGED_ITS</span> = <code title="3">3</code>
+        <a name="CONVERGED_ITS"></a><span class="summary-name">CONVERGED_ITS</span> = <code title="2">2</code>
     </td>
   </tr>
 <tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type"> </span>
     </td><td class="summary">
-        <a name="CONVERGED_TOL"></a><span class="summary-name">CONVERGED_TOL</span> = <code title="2">2</code>
+        <a name="CONVERGED_TOL"></a><span class="summary-name">CONVERGED_TOL</span> = <code title="1">1</code>
     </td>
   </tr>
 <tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type"> </span>
     </td><td class="summary">
-        <a name="DIVERGED_BREAKDOWN"></a><span class="summary-name">DIVERGED_BREAKDOWN</span> = <code title="-4">-4</code>
+        <a name="DIVERGED_BREAKDOWN"></a><span class="summary-name">DIVERGED_BREAKDOWN</span> = <code title="-2">-2</code>
     </td>
   </tr>
 <tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type"> </span>
     </td><td class="summary">
-        <a name="DIVERGED_ITS"></a><span class="summary-name">DIVERGED_ITS</span> = <code title="-3">-3</code>
+        <a name="DIVERGED_ITS"></a><span class="summary-name">DIVERGED_ITS</span> = <code title="-1">-1</code>
     </td>
   </tr>
 <tr>
@@ -175,31 +134,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -231,7 +165,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:42 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.MFN.Type-class.html b/docs/apiref/slepc4py.SLEPc.MFN.Type-class.html
index 0158f1a..e5b9360 100644
--- a/docs/apiref/slepc4py.SLEPc.MFN.Type-class.html
+++ b/docs/apiref/slepc4py.SLEPc.MFN.Type-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Type</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Type</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_type_5" name="class_hierarchy_for_type_5">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.MFN.Type-class.html" title="Type" alt="" coords="5,5,56,31"/>
-</map>
-  <img src="class_hierarchy_for_type_5.png" alt='' usemap="#class_hierarchy_for_type_5" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>MFN type</p>
@@ -78,43 +74,6 @@
 <li><a href="slepc4py.SLEPc.MFN.Type-class.html#EXPOKIT" class="link">EXPOKIT</a>: Implementation of the method in Expokit.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -154,31 +113,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -210,7 +144,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:42 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.NEP-class.html b/docs/apiref/slepc4py.SLEPc.NEP-class.html
index 15f83db..8f3815a 100644
--- a/docs/apiref/slepc4py.SLEPc.NEP-class.html
+++ b/docs/apiref/slepc4py.SLEPc.NEP-class.html
@@ -60,15 +60,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class NEP</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type NEP</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_nep" name="class_hierarchy_for_nep">
-<area shape="rect" id="node1" href="javascript:void(0);" title="petsc4py.PETSc.Object" alt="" coords="5,5,168,31"/>
-<area shape="rect" id="node2" href="slepc4py.SLEPc.NEP-class.html" title="NEP" alt="" coords="61,60,112,85"/>
-</map>
-  <img src="class_hierarchy_for_nep.png" alt='' usemap="#class_hierarchy_for_nep" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 NEP
@@ -91,48 +86,36 @@ NEP
   </td>
 </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.NEP.ConvergedReason-class.html" class="summary-name">ConvergedReason</a>
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.NEP.ErrorType-class.html" class="summary-name">ErrorType</a><br />
       NEP error type to assess accuracy of computed solutions
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.NEP.Refine-class.html" class="summary-name">Refine</a><br />
       NEP refinement strategy
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.NEP.RefineScheme-class.html" class="summary-name">RefineScheme</a><br />
       Scheme for solving linear systems during iterative refinement
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.NEP.Type-class.html" class="summary-name">Type</a><br />
       NEP type
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.NEP.Which-class.html" class="summary-name">Which</a>
     </td>
   </tr>
@@ -899,21 +882,8 @@ execution of the eigensolver.</td>
       <code>setAttr</code>,
       <code>setName</code>,
       <code>setTabLevel</code>,
-      <code>stateIncrease</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
+      <code>stateIncrease</code>,
+      <code>viewFromOptions</code>
       </p>
     </td>
   </tr>
@@ -948,9 +918,6 @@ execution of the eigensolver.</td>
       <code>refcount</code>,
       <code>type</code>
       </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
     </td>
   </tr>
 </table>
@@ -991,7 +958,7 @@ execution of the eigensolver.</td>
   <dl class="fields">
     <dt>Returns: a new object with type S, a subtype of T</dt>
     <dt>Overrides:
-        object.__new__
+        petsc4py.PETSc.Object.__new__
     </dt>
   </dl>
 </td></tr></table>
@@ -2041,7 +2008,7 @@ output is used.</dd>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:42 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.NEP.ConvergedReason-class.html b/docs/apiref/slepc4py.SLEPc.NEP.ConvergedReason-class.html
index 5cfd232..5400a56 100644
--- a/docs/apiref/slepc4py.SLEPc.NEP.ConvergedReason-class.html
+++ b/docs/apiref/slepc4py.SLEPc.NEP.ConvergedReason-class.html
@@ -61,53 +61,12 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ConvergedReason</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type ConvergedReason</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_convergedr_3" name="class_hierarchy_for_convergedr_3">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.NEP.ConvergedReason-class.html" title="ConvergedReason" alt="" coords="5,5,136,31"/>
-</map>
-  <img src="class_hierarchy_for_convergedr_3.png" alt='' usemap="#class_hierarchy_for_convergedr_3" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -182,31 +141,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -238,7 +172,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:42 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.NEP.ErrorType-class.html b/docs/apiref/slepc4py.SLEPc.NEP.ErrorType-class.html
index 35c994a..d18f69f 100644
--- a/docs/apiref/slepc4py.SLEPc.NEP.ErrorType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.NEP.ErrorType-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ErrorType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type ErrorType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_errortype_2" name="class_hierarchy_for_errortype_2">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.NEP.ErrorType-class.html" title="ErrorType" alt="" coords="5,5,84,31"/>
-</map>
-  <img src="class_hierarchy_for_errortype_2.png" alt='' usemap="#class_hierarchy_for_errortype_2" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>NEP error type to assess accuracy of computed solutions</p>
@@ -78,43 +74,6 @@
 <li><a href="slepc4py.SLEPc.NEP.ErrorType-class.html#BACKWARD" class="link">BACKWARD</a>:  Backward error.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -161,31 +120,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -217,7 +151,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:42 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.NEP.Refine-class.html b/docs/apiref/slepc4py.SLEPc.NEP.Refine-class.html
index 2df8996..dafbc5e 100644
--- a/docs/apiref/slepc4py.SLEPc.NEP.Refine-class.html
+++ b/docs/apiref/slepc4py.SLEPc.NEP.Refine-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Refine</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Refine</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_refine" name="class_hierarchy_for_refine">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.NEP.Refine-class.html" title="Refine" alt="" coords="5,5,65,31"/>
-</map>
-  <img src="class_hierarchy_for_refine.png" alt='' usemap="#class_hierarchy_for_refine" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>NEP refinement strategy</p>
@@ -78,43 +74,6 @@
 <li><a href="slepc4py.SLEPc.NEP.Refine-class.html#MULTIPLE" class="link">MULTIPLE</a>: Refine all eigenpairs simultaneously (invariant pair).</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -161,31 +120,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -217,7 +151,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:42 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.NEP.RefineScheme-class.html b/docs/apiref/slepc4py.SLEPc.NEP.RefineScheme-class.html
index 239ac3d..35dbe5d 100644
--- a/docs/apiref/slepc4py.SLEPc.NEP.RefineScheme-class.html
+++ b/docs/apiref/slepc4py.SLEPc.NEP.RefineScheme-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class RefineScheme</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type RefineScheme</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_refinesche" name="class_hierarchy_for_refinesche">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.NEP.RefineScheme-class.html" title="RefineScheme" alt="" coords="5,5,113,31"/>
-</map>
-  <img src="class_hierarchy_for_refinesche.png" alt='' usemap="#class_hierarchy_for_refinesche" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>Scheme for solving linear systems during iterative refinement</p>
@@ -78,43 +74,6 @@
 <li><a href="slepc4py.SLEPc.NEP.RefineScheme-class.html#EXPLICIT" class="link">EXPLICIT</a>: Build the explicit matrix.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -161,31 +120,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -217,7 +151,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:42 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.NEP.Type-class.html b/docs/apiref/slepc4py.SLEPc.NEP.Type-class.html
index 639d307..272d38e 100644
--- a/docs/apiref/slepc4py.SLEPc.NEP.Type-class.html
+++ b/docs/apiref/slepc4py.SLEPc.NEP.Type-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Type</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Type</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_type_6" name="class_hierarchy_for_type_6">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.NEP.Type-class.html" title="Type" alt="" coords="5,5,56,31"/>
-</map>
-  <img src="class_hierarchy_for_type_6.png" alt='' usemap="#class_hierarchy_for_type_6" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>NEP type</p>
@@ -82,43 +78,6 @@
 <li><a href="slepc4py.SLEPc.NEP.Type-class.html#NLEIGS" class="link">NLEIGS</a>:   Fully rational Krylov method for nonlinear eigenproblems.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -186,31 +145,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -242,7 +176,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:42 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.NEP.Which-class.html b/docs/apiref/slepc4py.SLEPc.NEP.Which-class.html
index 22a650d..1e7b0d1 100644
--- a/docs/apiref/slepc4py.SLEPc.NEP.Which-class.html
+++ b/docs/apiref/slepc4py.SLEPc.NEP.Which-class.html
@@ -61,53 +61,12 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Which</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Which</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_which_2" name="class_hierarchy_for_which_2">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.NEP.Which-class.html" title="Which" alt="" coords="5,5,64,31"/>
-</map>
-  <img src="class_hierarchy_for_which_2.png" alt='' usemap="#class_hierarchy_for_which_2" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -210,31 +169,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -266,7 +200,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:42 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.PEP-class.html b/docs/apiref/slepc4py.SLEPc.PEP-class.html
index bc66e8a..544cfc6 100644
--- a/docs/apiref/slepc4py.SLEPc.PEP-class.html
+++ b/docs/apiref/slepc4py.SLEPc.PEP-class.html
@@ -60,15 +60,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class PEP</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type PEP</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_pep" name="class_hierarchy_for_pep">
-<area shape="rect" id="node1" href="javascript:void(0);" title="petsc4py.PETSc.Object" alt="" coords="5,5,168,31"/>
-<area shape="rect" id="node2" href="slepc4py.SLEPc.PEP-class.html" title="PEP" alt="" coords="62,60,111,85"/>
-</map>
-  <img src="class_hierarchy_for_pep.png" alt='' usemap="#class_hierarchy_for_pep" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 PEP
@@ -91,89 +86,67 @@ PEP
   </td>
 </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.PEP.Basis-class.html" class="summary-name">Basis</a>
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.PEP.Conv-class.html" class="summary-name">Conv</a><br />
       PEP convergence test
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html" class="summary-name">ConvergedReason</a><br />
       PEP convergence reasons
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.PEP.ErrorType-class.html" class="summary-name">ErrorType</a><br />
       PEP error type to assess accuracy of computed solutions
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.PEP.Extract-class.html" class="summary-name">Extract</a><br />
       Extraction strategy used to obtain eigenvectors of the PEP from the
 eigenvectors of the linearization
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.PEP.ProblemType-class.html" class="summary-name">ProblemType</a><br />
       PEP problem type
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.PEP.Refine-class.html" class="summary-name">Refine</a><br />
       PEP refinement strategy
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.PEP.RefineScheme-class.html" class="summary-name">RefineScheme</a><br />
       Scheme for solving linear systems during iterative refinement
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.PEP.Scale-class.html" class="summary-name">Scale</a><br />
       PEP scaling strategy
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.PEP.Type-class.html" class="summary-name">Type</a><br />
       PEP type
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.PEP.Which-class.html" class="summary-name">Which</a><br />
       PEP desired part of spectrum
     </td>
@@ -670,6 +643,23 @@ the eigensolver object.</td>
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
+          <td><span class="summary-sig"><a href="slepc4py.SLEPc.PEP-class.html#getTarget" class="summary-sig-name">getTarget</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Gets the value of the target.</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
           <td><span class="summary-sig"><a href="slepc4py.SLEPc.PEP-class.html#getTolerances" class="summary-sig-name">getTolerances</a>(<span class="summary-sig-arg">self</span>)</span><br />
       Gets the tolerance and maximum iteration count used by the
 default PEP convergence tests.</td>
@@ -871,7 +861,7 @@ iterate.</td>
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
           <td><span class="summary-sig"><a href="slepc4py.SLEPc.PEP-class.html#setLinearCompanionForm" class="summary-sig-name">setLinearCompanionForm</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">cform</span>)</span><br />
+        <span class="summary-sig-arg">int cform</span>)</span><br />
       Choose between the two companion forms available for the linearization of
 a quadratic eigenproblem.</td>
           <td align="right" valign="top">
@@ -1065,6 +1055,24 @@ before attempting to solve.</td>
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
+          <td><span class="summary-sig"><a href="slepc4py.SLEPc.PEP-class.html#setTarget" class="summary-sig-name">setTarget</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">target</span>)</span><br />
+      Sets the value of the target.</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
           <td><span class="summary-sig"><a href="slepc4py.SLEPc.PEP-class.html#setTolerances" class="summary-sig-name">setTolerances</a>(<span class="summary-sig-arg">self</span>,
         <span class="summary-sig-arg">tol</span>=<span class="summary-sig-default">None</span>,
         <span class="summary-sig-arg">max_it</span>=<span class="summary-sig-default">None</span>)</span><br />
@@ -1215,21 +1223,8 @@ execution of the eigensolver.</td>
       <code>setAttr</code>,
       <code>setName</code>,
       <code>setTabLevel</code>,
-      <code>stateIncrease</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
+      <code>stateIncrease</code>,
+      <code>viewFromOptions</code>
       </p>
     </td>
   </tr>
@@ -1264,9 +1259,6 @@ execution of the eigensolver.</td>
       <code>refcount</code>,
       <code>type</code>
       </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
     </td>
   </tr>
 </table>
@@ -1307,7 +1299,7 @@ execution of the eigensolver.</td>
   <dl class="fields">
     <dt>Returns: a new object with type S, a subtype of T</dt>
     <dt>Overrides:
-        object.__new__
+        petsc4py.PETSc.Object.__new__
     </dt>
   </dl>
 </td></tr></table>
@@ -2035,6 +2027,36 @@ the eigensolver object.</p>
   </dl>
 </td></tr></table>
 </div>
+<a name="getTarget"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">getTarget</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </tr></table>
+  
+  <p>Gets the value of the target.</p>
+<div class="rst-section" id="rst-returns">
+<h1 class="heading">Returns</h1>
+<dl class="rst-docutils">
+<dt>target: float (real or complex)</dt>
+<dd>The value of the target.</dd>
+</dl>
+</div>
+<div class="rst-section" id="rst-notes">
+<h1 class="heading">Notes</h1>
+<p>If the target was not set by the user, then zero is returned.</p>
+</div>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
 <a name="getTolerances"></a>
 <div>
 <table class="details" border="1" cellpadding="3"
@@ -2325,7 +2347,7 @@ iterate.</p>
   <table width="100%" cellpadding="0" cellspacing="0" border="0">
   <tr valign="top"><td>
   <h3 class="epydoc"><span class="sig"><span class="sig-name">setLinearCompanionForm</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">cform</span>)</span>
+        <span class="sig-arg">int cform</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     > 
@@ -2623,6 +2645,39 @@ before attempting to solve.</p>
   </dl>
 </td></tr></table>
 </div>
+<a name="setTarget"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">setTarget</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">target</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </tr></table>
+  
+  <p>Sets the value of the target.</p>
+<div class="rst-section" id="rst-parameters">
+<h1 class="heading">Parameters</h1>
+<dl class="rst-docutils">
+<dt>target: float (real or complex)</dt>
+<dd>The value of the target.</dd>
+</dl>
+</div>
+<div class="rst-section" id="rst-notes">
+<h1 class="heading">Notes</h1>
+<p>The target is a scalar value used to determine the portion of
+the spectrum of interest. It is used in combination with
+<a href="slepc4py.SLEPc.PEP-class.html#setWhichEigenpairs" class="link">setWhichEigenpairs()</a>.</p>
+</div>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
 <a name="setTolerances"></a>
 <div>
 <table class="details" border="1" cellpadding="3"
@@ -2799,7 +2854,7 @@ output is used.</dd>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:42 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.PEP.Basis-class.html b/docs/apiref/slepc4py.SLEPc.PEP.Basis-class.html
index f2eb403..f756178 100644
--- a/docs/apiref/slepc4py.SLEPc.PEP.Basis-class.html
+++ b/docs/apiref/slepc4py.SLEPc.PEP.Basis-class.html
@@ -61,53 +61,12 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Basis</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Basis</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_basis" name="class_hierarchy_for_basis">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.PEP.Basis-class.html" title="Basis" alt="" coords="5,5,60,31"/>
-</map>
-  <img src="class_hierarchy_for_basis.png" alt='' usemap="#class_hierarchy_for_basis" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -175,31 +134,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -231,7 +165,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:43 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.PEP.Conv-class.html b/docs/apiref/slepc4py.SLEPc.PEP.Conv-class.html
index 32c400e..4aeaff5 100644
--- a/docs/apiref/slepc4py.SLEPc.PEP.Conv-class.html
+++ b/docs/apiref/slepc4py.SLEPc.PEP.Conv-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Conv</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Conv</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_conv_2" name="class_hierarchy_for_conv_2">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.PEP.Conv-class.html" title="Conv" alt="" coords="5,5,59,31"/>
-</map>
-  <img src="class_hierarchy_for_conv_2.png" alt='' usemap="#class_hierarchy_for_conv_2" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>PEP convergence test</p>
@@ -79,43 +75,6 @@
 <li><a href="slepc4py.SLEPc.PEP.Conv-class.html#USER" class="link">USER</a>:</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -169,31 +128,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -225,7 +159,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:43 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.PEP.ConvergedReason-class.html b/docs/apiref/slepc4py.SLEPc.PEP.ConvergedReason-class.html
index 998331d..8f601b8 100644
--- a/docs/apiref/slepc4py.SLEPc.PEP.ConvergedReason-class.html
+++ b/docs/apiref/slepc4py.SLEPc.PEP.ConvergedReason-class.html
@@ -61,63 +61,22 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ConvergedReason</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type ConvergedReason</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_convergedr_4" name="class_hierarchy_for_convergedr_4">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.PEP.ConvergedReason-class.html" title="ConvergedReason" alt="" coords="5,5,136,31"/>
-</map>
-  <img src="class_hierarchy_for_convergedr_4.png" alt='' usemap="#class_hierarchy_for_convergedr_4" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>PEP convergence reasons</p>
 <ul class="rst-simple">
-<li><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html#CONVERGED_TOL" class="link">CONVERGED_TOL</a>:</li>
-<li><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html#CONVERGED_USER" class="link">CONVERGED_USER</a>:</li>
-<li><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html#DIVERGED_ITS" class="link">DIVERGED_ITS</a>:</li>
-<li><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html#DIVERGED_BREAKDOWN" class="link">DIVERGED_BREAKDOWN</a>:</li>
-<li><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html#DIVERGED_SYMMETRY_LOST" class="link">DIVERGED_SYMMETRY_LOST</a>:</li>
-<li><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html#CONVERGED_ITERATING" class="link">CONVERGED_ITERATING</a>:</li>
+<li><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html#CONVERGED_TOL" class="link">CONVERGED\_TOL</a>:</li>
+<li><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html#CONVERGED_USER" class="link">CONVERGED\_USER</a>:</li>
+<li><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html#DIVERGED_ITS" class="link">DIVERGED\_ITS</a>:</li>
+<li><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html#DIVERGED_BREAKDOWN" class="link">DIVERGED\_BREAKDOWN</a>:</li>
+<li><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html#DIVERGED_SYMMETRY_LOST" class="link">DIVERGED\_SYMMETRY\_LOST</a>:</li>
+<li><a href="slepc4py.SLEPc.PEP.ConvergedReason-class.html#CONVERGED_ITERATING" class="link">CONVERGED\_ITERATING</a>:</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -192,31 +151,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -248,7 +182,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:43 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.PEP.ErrorType-class.html b/docs/apiref/slepc4py.SLEPc.PEP.ErrorType-class.html
index 9191566..69d2759 100644
--- a/docs/apiref/slepc4py.SLEPc.PEP.ErrorType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.PEP.ErrorType-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ErrorType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type ErrorType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_errortype_3" name="class_hierarchy_for_errortype_3">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.PEP.ErrorType-class.html" title="ErrorType" alt="" coords="5,5,84,31"/>
-</map>
-  <img src="class_hierarchy_for_errortype_3.png" alt='' usemap="#class_hierarchy_for_errortype_3" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>PEP error type to assess accuracy of computed solutions</p>
@@ -78,43 +74,6 @@
 <li><a href="slepc4py.SLEPc.PEP.ErrorType-class.html#BACKWARD" class="link">BACKWARD</a>:  Backward error.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -161,31 +120,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -217,7 +151,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:43 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.PEP.Extract-class.html b/docs/apiref/slepc4py.SLEPc.PEP.Extract-class.html
index 824fb65..8e0f0fd 100644
--- a/docs/apiref/slepc4py.SLEPc.PEP.Extract-class.html
+++ b/docs/apiref/slepc4py.SLEPc.PEP.Extract-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Extract</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Extract</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_extract" name="class_hierarchy_for_extract">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.PEP.Extract-class.html" title="Extract" alt="" coords="5,5,69,31"/>
-</map>
-  <img src="class_hierarchy_for_extract.png" alt='' usemap="#class_hierarchy_for_extract" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>Extraction strategy used to obtain eigenvectors of the PEP from the
@@ -80,43 +76,6 @@ eigenvectors of the linearization</p>
 <li><a href="slepc4py.SLEPc.PEP.Extract-class.html#STRUCTURED" class="link">STRUCTURED</a>: Combine all blocks in a certain way.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -170,31 +129,6 @@ eigenvectors of the linearization</p>
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -226,7 +160,7 @@ eigenvectors of the linearization</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:43 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.PEP.ProblemType-class.html b/docs/apiref/slepc4py.SLEPc.PEP.ProblemType-class.html
index 23c77e1..29cc120 100644
--- a/docs/apiref/slepc4py.SLEPc.PEP.ProblemType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.PEP.ProblemType-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ProblemType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type ProblemType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_problemtyp_2" name="class_hierarchy_for_problemtyp_2">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.PEP.ProblemType-class.html" title="ProblemType" alt="" coords="5,5,104,31"/>
-</map>
-  <img src="class_hierarchy_for_problemtyp_2.png" alt='' usemap="#class_hierarchy_for_problemtyp_2" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>PEP problem type</p>
@@ -78,43 +74,6 @@
 <li><a href="slepc4py.SLEPc.PEP.ProblemType-class.html#GYROSCOPIC" class="link">GYROSCOPIC</a>:   Hamiltonian structure.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -161,31 +120,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -217,7 +151,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:43 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.PEP.Refine-class.html b/docs/apiref/slepc4py.SLEPc.PEP.Refine-class.html
index bb17598..17827c8 100644
--- a/docs/apiref/slepc4py.SLEPc.PEP.Refine-class.html
+++ b/docs/apiref/slepc4py.SLEPc.PEP.Refine-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Refine</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Refine</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_refine_2" name="class_hierarchy_for_refine_2">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.PEP.Refine-class.html" title="Refine" alt="" coords="5,5,65,31"/>
-</map>
-  <img src="class_hierarchy_for_refine_2.png" alt='' usemap="#class_hierarchy_for_refine_2" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>PEP refinement strategy</p>
@@ -78,43 +74,6 @@
 <li><a href="slepc4py.SLEPc.PEP.Refine-class.html#MULTIPLE" class="link">MULTIPLE</a>: Refine all eigenpairs simultaneously (invariant pair).</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -161,31 +120,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -217,7 +151,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:43 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.PEP.RefineScheme-class.html b/docs/apiref/slepc4py.SLEPc.PEP.RefineScheme-class.html
index 7654d02..0310ea4 100644
--- a/docs/apiref/slepc4py.SLEPc.PEP.RefineScheme-class.html
+++ b/docs/apiref/slepc4py.SLEPc.PEP.RefineScheme-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class RefineScheme</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type RefineScheme</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_refinesche_2" name="class_hierarchy_for_refinesche_2">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.PEP.RefineScheme-class.html" title="RefineScheme" alt="" coords="5,5,113,31"/>
-</map>
-  <img src="class_hierarchy_for_refinesche_2.png" alt='' usemap="#class_hierarchy_for_refinesche_2" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>Scheme for solving linear systems during iterative refinement</p>
@@ -78,43 +74,6 @@
 <li><a href="slepc4py.SLEPc.PEP.RefineScheme-class.html#EXPLICIT" class="link">EXPLICIT</a>: Build the explicit matrix.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -161,31 +120,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -217,7 +151,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:43 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.PEP.Scale-class.html b/docs/apiref/slepc4py.SLEPc.PEP.Scale-class.html
index d65c07d..8f7b70b 100644
--- a/docs/apiref/slepc4py.SLEPc.PEP.Scale-class.html
+++ b/docs/apiref/slepc4py.SLEPc.PEP.Scale-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Scale</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Scale</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_scale" name="class_hierarchy_for_scale">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.PEP.Scale-class.html" title="Scale" alt="" coords="5,5,60,31"/>
-</map>
-  <img src="class_hierarchy_for_scale.png" alt='' usemap="#class_hierarchy_for_scale" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>PEP scaling strategy</p>
@@ -79,43 +75,6 @@
 <li><a href="slepc4py.SLEPc.PEP.Scale-class.html#BOTH" class="link">BOTH</a>:     Both parameter and diagonal scaling.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -169,31 +128,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -225,7 +159,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:43 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.PEP.Type-class.html b/docs/apiref/slepc4py.SLEPc.PEP.Type-class.html
index 4c88c92..fa60514 100644
--- a/docs/apiref/slepc4py.SLEPc.PEP.Type-class.html
+++ b/docs/apiref/slepc4py.SLEPc.PEP.Type-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Type</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Type</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_type_7" name="class_hierarchy_for_type_7">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.PEP.Type-class.html" title="Type" alt="" coords="5,5,56,31"/>
-</map>
-  <img src="class_hierarchy_for_type_7.png" alt='' usemap="#class_hierarchy_for_type_7" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>PEP type</p>
@@ -81,43 +77,6 @@
 <li><a href="slepc4py.SLEPc.PEP.Type-class.html#JD" class="link">JD</a>:           Polynomial Jacobi-Davidson.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -178,31 +137,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -234,7 +168,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:43 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.PEP.Which-class.html b/docs/apiref/slepc4py.SLEPc.PEP.Which-class.html
index 5c24880..69faca8 100644
--- a/docs/apiref/slepc4py.SLEPc.PEP.Which-class.html
+++ b/docs/apiref/slepc4py.SLEPc.PEP.Which-class.html
@@ -61,67 +61,26 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Which</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Which</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_which_3" name="class_hierarchy_for_which_3">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.PEP.Which-class.html" title="Which" alt="" coords="5,5,64,31"/>
-</map>
-  <img src="class_hierarchy_for_which_3.png" alt='' usemap="#class_hierarchy_for_which_3" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>PEP desired part of spectrum</p>
 <ul class="rst-simple">
-<li><a href="slepc4py.SLEPc.PEP.Which-class.html#LARGEST_MAGNITUDE" class="link">LARGEST_MAGNITUDE</a>:  Largest magnitude (default).</li>
-<li><a href="slepc4py.SLEPc.PEP.Which-class.html#LARGEST_REAL" class="link">LARGEST_REAL</a>:       Largest real parts.</li>
-<li><a href="slepc4py.SLEPc.PEP.Which-class.html#LARGEST_IMAGINARY" class="link">LARGEST_IMAGINARY</a>:  Largest imaginary parts in magnitude.</li>
-<li><a href="slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_MAGNITUDE" class="link">SMALLEST_MAGNITUDE</a>: Smallest magnitude.</li>
-<li><a href="slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_REAL" class="link">SMALLEST_REAL</a>:      Smallest real parts.</li>
-<li><a href="slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_IMAGINARY" class="link">SMALLEST_IMAGINARY</a>: Smallest imaginary parts in magnitude.</li>
-<li><a href="slepc4py.SLEPc.PEP.Which-class.html#TARGET_MAGNITUDE" class="link">TARGET_MAGNITUDE</a>:   Closest to target (in magnitude).</li>
-<li><a href="slepc4py.SLEPc.PEP.Which-class.html#TARGET_REAL" class="link">TARGET_REAL</a>:        Real part closest to target.</li>
-<li><a href="slepc4py.SLEPc.PEP.Which-class.html#TARGET_IMAGINARY" class="link">TARGET_IMAGINARY</a>:   Imaginary part closest to target.</li>
+<li><a href="slepc4py.SLEPc.PEP.Which-class.html#LARGEST_MAGNITUDE" class="link">LARGEST\_MAGNITUDE</a>:  Largest magnitude (default).</li>
+<li><a href="slepc4py.SLEPc.PEP.Which-class.html#LARGEST_REAL" class="link">LARGEST\_REAL</a>:       Largest real parts.</li>
+<li><a href="slepc4py.SLEPc.PEP.Which-class.html#LARGEST_IMAGINARY" class="link">LARGEST\_IMAGINARY</a>:  Largest imaginary parts in magnitude.</li>
+<li><a href="slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_MAGNITUDE" class="link">SMALLEST\_MAGNITUDE</a>: Smallest magnitude.</li>
+<li><a href="slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_REAL" class="link">SMALLEST\_REAL</a>:      Smallest real parts.</li>
+<li><a href="slepc4py.SLEPc.PEP.Which-class.html#SMALLEST_IMAGINARY" class="link">SMALLEST\_IMAGINARY</a>: Smallest imaginary parts in magnitude.</li>
+<li><a href="slepc4py.SLEPc.PEP.Which-class.html#TARGET_MAGNITUDE" class="link">TARGET\_MAGNITUDE</a>:   Closest to target (in magnitude).</li>
+<li><a href="slepc4py.SLEPc.PEP.Which-class.html#TARGET_REAL" class="link">TARGET\_REAL</a>:        Real part closest to target.</li>
+<li><a href="slepc4py.SLEPc.PEP.Which-class.html#TARGET_IMAGINARY" class="link">TARGET\_IMAGINARY</a>:   Imaginary part closest to target.</li>
 <li><a href="slepc4py.SLEPc.PEP.Which-class.html#USER" class="link">USER</a>:               User-defined criterion.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -217,31 +176,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -273,7 +207,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:43 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.RG-class.html b/docs/apiref/slepc4py.SLEPc.RG-class.html
index 0ae981b..384b842 100644
--- a/docs/apiref/slepc4py.SLEPc.RG-class.html
+++ b/docs/apiref/slepc4py.SLEPc.RG-class.html
@@ -60,15 +60,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class RG</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type RG</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_rg" name="class_hierarchy_for_rg">
-<area shape="rect" id="node1" href="javascript:void(0);" title="petsc4py.PETSc.Object" alt="" coords="5,5,168,31"/>
-<area shape="rect" id="node2" href="slepc4py.SLEPc.RG-class.html" title="RG" alt="" coords="65,60,108,85"/>
-</map>
-  <img src="class_hierarchy_for_rg.png" alt='' usemap="#class_hierarchy_for_rg" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 RG
@@ -91,9 +86,7 @@ RG
   </td>
 </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.RG.Type-class.html" class="summary-name">Type</a><br />
       RG type
     </td>
@@ -431,21 +424,8 @@ database.</td>
       <code>setAttr</code>,
       <code>setName</code>,
       <code>setTabLevel</code>,
-      <code>stateIncrease</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
+      <code>stateIncrease</code>,
+      <code>viewFromOptions</code>
       </p>
     </td>
   </tr>
@@ -480,9 +460,6 @@ database.</td>
       <code>refcount</code>,
       <code>type</code>
       </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
     </td>
   </tr>
 </table>
@@ -523,7 +500,7 @@ database.</td>
   <dl class="fields">
     <dt>Returns: a new object with type S, a subtype of T</dt>
     <dt>Overrides:
-        object.__new__
+        petsc4py.PETSc.Object.__new__
     </dt>
   </dl>
 </td></tr></table>
@@ -1005,7 +982,7 @@ output is used.</dd>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:43 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.RG.Type-class.html b/docs/apiref/slepc4py.SLEPc.RG.Type-class.html
index c5e926c..d5a8736 100644
--- a/docs/apiref/slepc4py.SLEPc.RG.Type-class.html
+++ b/docs/apiref/slepc4py.SLEPc.RG.Type-class.html
@@ -61,55 +61,14 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Type</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Type</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_type_8" name="class_hierarchy_for_type_8">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.RG.Type-class.html" title="Type" alt="" coords="5,5,56,31"/>
-</map>
-  <img src="class_hierarchy_for_type_8.png" alt='' usemap="#class_hierarchy_for_type_8" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 RG type
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -163,31 +122,6 @@ RG type
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -219,7 +153,7 @@ RG type
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:43 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.ST-class.html b/docs/apiref/slepc4py.SLEPc.ST-class.html
index cec5fc6..0c79e9b 100644
--- a/docs/apiref/slepc4py.SLEPc.ST-class.html
+++ b/docs/apiref/slepc4py.SLEPc.ST-class.html
@@ -60,15 +60,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ST</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type ST</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_st" name="class_hierarchy_for_st">
-<area shape="rect" id="node1" href="javascript:void(0);" title="petsc4py.PETSc.Object" alt="" coords="5,5,168,31"/>
-<area shape="rect" id="node2" href="slepc4py.SLEPc.ST-class.html" title="ST" alt="" coords="67,60,106,85"/>
-</map>
-  <img src="class_hierarchy_for_st.png" alt='' usemap="#class_hierarchy_for_st" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 ST
@@ -91,17 +86,13 @@ ST
   </td>
 </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.ST.MatMode-class.html" class="summary-name">MatMode</a><br />
       ST matrix mode
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.ST.Type-class.html" class="summary-name">Type</a><br />
       ST types
     </td>
@@ -260,7 +251,7 @@ the shift-and-invert and Cayley spectral transformations.</td>
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
-          <td><span class="summary-sig"><a href="slepc4py.SLEPc.ST-class.html#getOperators" class="summary-sig-name">getOperators</a>(<span class="summary-sig-arg">self</span>)</span><br />
+          <td><span class="summary-sig"><a href="slepc4py.SLEPc.ST-class.html#getMatrices" class="summary-sig-name">getMatrices</a>(<span class="summary-sig-arg">self</span>)</span><br />
       Gets the matrices associated with the eigenvalue problem.</td>
           <td align="right" valign="top">
             
@@ -459,7 +450,7 @@ problem.</td>
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
-          <td><span class="summary-sig"><a href="slepc4py.SLEPc.ST-class.html#setOperators" class="summary-sig-name">setOperators</a>(<span class="summary-sig-arg">self</span>,
+          <td><span class="summary-sig"><a href="slepc4py.SLEPc.ST-class.html#setMatrices" class="summary-sig-name">setMatrices</a>(<span class="summary-sig-arg">self</span>,
         <span class="summary-sig-arg">operators</span>)</span><br />
       Sets the matrices associated with the eigenvalue problem.</td>
           <td align="right" valign="top">
@@ -608,21 +599,8 @@ are computed or not.</td>
       <code>setAttr</code>,
       <code>setName</code>,
       <code>setTabLevel</code>,
-      <code>stateIncrease</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
+      <code>stateIncrease</code>,
+      <code>viewFromOptions</code>
       </p>
     </td>
   </tr>
@@ -678,9 +656,6 @@ are computed or not.</td>
       <code>refcount</code>,
       <code>type</code>
       </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
     </td>
   </tr>
 </table>
@@ -721,7 +696,7 @@ are computed or not.</td>
   <dl class="fields">
     <dt>Returns: a new object with type S, a subtype of T</dt>
     <dt>Overrides:
-        object.__new__
+        petsc4py.PETSc.Object.__new__
     </dt>
   </dl>
 </td></tr></table>
@@ -900,14 +875,14 @@ the shift-and-invert and Cayley spectral transformations.</p>
   </dl>
 </td></tr></table>
 </div>
-<a name="getOperators"></a>
+<a name="getMatrices"></a>
 <div>
 <table class="details" border="1" cellpadding="3"
        cellspacing="0" width="100%" bgcolor="white">
 <tr><td>
   <table width="100%" cellpadding="0" cellspacing="0" border="0">
   <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">getOperators</span>(<span class="sig-arg">self</span>)</span>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">getMatrices</span>(<span class="sig-arg">self</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     > 
@@ -1222,14 +1197,14 @@ particular, for internal <em>AXPY()</em> matrix operations).</p>
   </dl>
 </td></tr></table>
 </div>
-<a name="setOperators"></a>
+<a name="setMatrices"></a>
 <div>
 <table class="details" border="1" cellpadding="3"
        cellspacing="0" width="100%" bgcolor="white">
 <tr><td>
   <table width="100%" cellpadding="0" cellspacing="0" border="0">
   <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setOperators</span>(<span class="sig-arg">self</span>,
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">setMatrices</span>(<span class="sig-arg">self</span>,
         <span class="sig-arg">operators</span>)</span>
   </h3>
   </td><td align="right" valign="top"
@@ -1451,7 +1426,7 @@ output is used.</dd>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:44 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.ST.MatMode-class.html b/docs/apiref/slepc4py.SLEPc.ST.MatMode-class.html
index c8adf1d..23f099f 100644
--- a/docs/apiref/slepc4py.SLEPc.ST.MatMode-class.html
+++ b/docs/apiref/slepc4py.SLEPc.ST.MatMode-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class MatMode</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type MatMode</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_matmode" name="class_hierarchy_for_matmode">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.ST.MatMode-class.html" title="MatMode" alt="" coords="5,5,81,31"/>
-</map>
-  <img src="class_hierarchy_for_matmode.png" alt='' usemap="#class_hierarchy_for_matmode" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>ST matrix mode</p>
@@ -79,43 +75,6 @@
 implicit matrix.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -162,31 +121,6 @@ implicit matrix.</li>
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -218,7 +152,7 @@ implicit matrix.</li>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:44 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.ST.Type-class.html b/docs/apiref/slepc4py.SLEPc.ST.Type-class.html
index 6607cea..58e90c0 100644
--- a/docs/apiref/slepc4py.SLEPc.ST.Type-class.html
+++ b/docs/apiref/slepc4py.SLEPc.ST.Type-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Type</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Type</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_type_9" name="class_hierarchy_for_type_9">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.ST.Type-class.html" title="Type" alt="" coords="5,5,56,31"/>
-</map>
-  <img src="class_hierarchy_for_type_9.png" alt='' usemap="#class_hierarchy_for_type_9" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>ST types</p>
@@ -80,43 +76,6 @@
 <li><a href="slepc4py.SLEPc.ST.Type-class.html#PRECOND" class="link">PRECOND</a>: Preconditioner.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -177,31 +136,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -233,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:44 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.SVD-class.html b/docs/apiref/slepc4py.SLEPc.SVD-class.html
index 9de833c..c9995cc 100644
--- a/docs/apiref/slepc4py.SLEPc.SVD-class.html
+++ b/docs/apiref/slepc4py.SLEPc.SVD-class.html
@@ -60,15 +60,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class SVD</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type SVD</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_svd" name="class_hierarchy_for_svd">
-<area shape="rect" id="node1" href="javascript:void(0);" title="petsc4py.PETSc.Object" alt="" coords="5,5,168,31"/>
-<area shape="rect" id="node2" href="slepc4py.SLEPc.SVD-class.html" title="SVD" alt="" coords="61,60,112,85"/>
-</map>
-  <img src="class_hierarchy_for_svd.png" alt='' usemap="#class_hierarchy_for_svd" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 SVD
@@ -91,33 +86,25 @@ SVD
   </td>
 </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.SVD.ConvergedReason-class.html" class="summary-name">ConvergedReason</a><br />
       SVD convergence reasons
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.SVD.ErrorType-class.html" class="summary-name">ErrorType</a><br />
       SVD error type to assess accuracy of computed solutions
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.SVD.Type-class.html" class="summary-name">Type</a><br />
       SVD types
     </td>
   </tr>
 <tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
+    <td class="summary" colspan="2">
         <a href="slepc4py.SLEPc.SVD.Which-class.html" class="summary-name">Which</a><br />
       SVD desired piece of spectrum
     </td>
@@ -729,9 +716,10 @@ associated with the singular value problem.</td>
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
-          <td><span class="summary-sig"><a href="slepc4py.SLEPc.SVD-class.html#setInitialSpace" class="summary-sig-name">setInitialSpace</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">space</span>)</span><br />
-      Sets the initial space from which the SVD solver starts to
+          <td><span class="summary-sig"><a href="slepc4py.SLEPc.SVD-class.html#setInitialSpaces" class="summary-sig-name">setInitialSpaces</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">spaceright</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">spaceleft</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Sets the initial spaces from which the SVD solver starts to
 iterate.</td>
           <td align="right" valign="top">
             
@@ -954,21 +942,8 @@ execution of the singular value solver.</td>
       <code>setAttr</code>,
       <code>setName</code>,
       <code>setTabLevel</code>,
-      <code>stateIncrease</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
+      <code>stateIncrease</code>,
+      <code>viewFromOptions</code>
       </p>
     </td>
   </tr>
@@ -1038,9 +1013,6 @@ execution of the singular value solver.</td>
       <code>refcount</code>,
       <code>type</code>
       </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
     </td>
   </tr>
 </table>
@@ -1081,7 +1053,7 @@ execution of the singular value solver.</td>
   <dl class="fields">
     <dt>Returns: a new object with type S, a subtype of T</dt>
     <dt>Overrides:
-        object.__new__
+        petsc4py.PETSc.Object.__new__
     </dt>
   </dl>
 </td></tr></table>
@@ -2007,28 +1979,31 @@ transpose, but handles it implicitly via MatMultTranspose().</p>
   </dl>
 </td></tr></table>
 </div>
-<a name="setInitialSpace"></a>
+<a name="setInitialSpaces"></a>
 <div>
 <table class="details" border="1" cellpadding="3"
        cellspacing="0" width="100%" bgcolor="white">
 <tr><td>
   <table width="100%" cellpadding="0" cellspacing="0" border="0">
   <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setInitialSpace</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">space</span>)</span>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">setInitialSpaces</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">spaceright</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">spaceleft</span>=<span class="sig-default">None</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     > 
     </td>
   </tr></table>
   
-  <p>Sets the initial space from which the SVD solver starts to
+  <p>Sets the initial spaces from which the SVD solver starts to
 iterate.</p>
 <div class="rst-section" id="rst-parameters">
 <h1 class="heading">Parameters</h1>
 <dl class="rst-docutils">
-<dt>space: an sequence of Vec</dt>
-<dd>The initial space.</dd>
+<dt>spaceright: sequence of Vec</dt>
+<dd>The right initial space.</dd>
+<dt>spaceleft: sequence of Vec</dt>
+<dd>The left initial space.</dd>
 </dl>
 </div>
   <dl class="fields">
@@ -2206,7 +2181,7 @@ default SVD convergence tests.</p>
 </div>
 <div class="rst-section" id="rst-notes">
 <h1 class="heading">Notes</h1>
-<p>Use <a href="slepc4py.SLEPc-module.html#DECIDE" class="link">DECIDE</a> for <a href="slepc4py.SLEPc.SVD-class.html#max_it" class="link">max_it</a> to assign a reasonably good value,
+<p>Use <a href="slepc4py.SLEPc-module.html#DECIDE" class="link">DECIDE</a> for <a href="slepc4py.SLEPc.SVD-class.html#max_it" class="link">max\_it</a> to assign a reasonably good value,
 which is dependent on the solution method.</p>
 </div>
   <dl class="fields">
@@ -2366,7 +2341,7 @@ output is used.</dd>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:44 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.SVD.ConvergedReason-class.html b/docs/apiref/slepc4py.SLEPc.SVD.ConvergedReason-class.html
index 5b62519..84720ca 100644
--- a/docs/apiref/slepc4py.SLEPc.SVD.ConvergedReason-class.html
+++ b/docs/apiref/slepc4py.SLEPc.SVD.ConvergedReason-class.html
@@ -61,62 +61,21 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ConvergedReason</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type ConvergedReason</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_convergedr_5" name="class_hierarchy_for_convergedr_5">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.SVD.ConvergedReason-class.html" title="ConvergedReason" alt="" coords="5,5,136,31"/>
-</map>
-  <img src="class_hierarchy_for_convergedr_5.png" alt='' usemap="#class_hierarchy_for_convergedr_5" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>SVD convergence reasons</p>
 <ul class="rst-simple">
-<li><a href="slepc4py.SLEPc.SVD.ConvergedReason-class.html#CONVERGED_TOL" class="link">CONVERGED_TOL</a>:</li>
-<li><a href="slepc4py.SLEPc.SVD.ConvergedReason-class.html#CONVERGED_USER" class="link">CONVERGED_USER</a>:</li>
-<li><a href="slepc4py.SLEPc.SVD.ConvergedReason-class.html#DIVERGED_ITS" class="link">DIVERGED_ITS</a>:</li>
-<li><a href="slepc4py.SLEPc.SVD.ConvergedReason-class.html#DIVERGED_BREAKDOWN" class="link">DIVERGED_BREAKDOWN</a>:</li>
-<li><a href="slepc4py.SLEPc.SVD.ConvergedReason-class.html#CONVERGED_ITERATING" class="link">CONVERGED_ITERATING</a>:</li>
+<li><a href="slepc4py.SLEPc.SVD.ConvergedReason-class.html#CONVERGED_TOL" class="link">CONVERGED\_TOL</a>:</li>
+<li><a href="slepc4py.SLEPc.SVD.ConvergedReason-class.html#CONVERGED_USER" class="link">CONVERGED\_USER</a>:</li>
+<li><a href="slepc4py.SLEPc.SVD.ConvergedReason-class.html#DIVERGED_ITS" class="link">DIVERGED\_ITS</a>:</li>
+<li><a href="slepc4py.SLEPc.SVD.ConvergedReason-class.html#DIVERGED_BREAKDOWN" class="link">DIVERGED\_BREAKDOWN</a>:</li>
+<li><a href="slepc4py.SLEPc.SVD.ConvergedReason-class.html#CONVERGED_ITERATING" class="link">CONVERGED\_ITERATING</a>:</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -184,31 +143,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -240,7 +174,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:44 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.SVD.ErrorType-class.html b/docs/apiref/slepc4py.SLEPc.SVD.ErrorType-class.html
index a1123f2..f708bd8 100644
--- a/docs/apiref/slepc4py.SLEPc.SVD.ErrorType-class.html
+++ b/docs/apiref/slepc4py.SLEPc.SVD.ErrorType-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class ErrorType</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type ErrorType</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_errortype_4" name="class_hierarchy_for_errortype_4">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.SVD.ErrorType-class.html" title="ErrorType" alt="" coords="5,5,84,31"/>
-</map>
-  <img src="class_hierarchy_for_errortype_4.png" alt='' usemap="#class_hierarchy_for_errortype_4" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>SVD error type to assess accuracy of computed solutions</p>
@@ -77,43 +73,6 @@
 <li><a href="slepc4py.SLEPc.SVD.ErrorType-class.html#RELATIVE" class="link">RELATIVE</a>:  Relative error.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -153,31 +112,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -209,7 +143,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:44 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.SVD.Type-class.html b/docs/apiref/slepc4py.SLEPc.SVD.Type-class.html
index 72e5677..16b2df4 100644
--- a/docs/apiref/slepc4py.SLEPc.SVD.Type-class.html
+++ b/docs/apiref/slepc4py.SLEPc.SVD.Type-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Type</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Type</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_type_10" name="class_hierarchy_for_type_10">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.SVD.Type-class.html" title="Type" alt="" coords="5,5,56,31"/>
-</map>
-  <img src="class_hierarchy_for_type_10.png" alt='' usemap="#class_hierarchy_for_type_10" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>SVD types</p>
@@ -80,43 +76,6 @@
 <li><a href="slepc4py.SLEPc.SVD.Type-class.html#TRLANCZOS" class="link">TRLANCZOS</a>: Thick-restart Lanczos.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -177,31 +136,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -233,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:44 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.SVD.Which-class.html b/docs/apiref/slepc4py.SLEPc.SVD.Which-class.html
index c2c18c0..160b059 100644
--- a/docs/apiref/slepc4py.SLEPc.SVD.Which-class.html
+++ b/docs/apiref/slepc4py.SLEPc.SVD.Which-class.html
@@ -61,14 +61,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Which</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Which</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_which_4" name="class_hierarchy_for_which_4">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.SVD.Which-class.html" title="Which" alt="" coords="5,5,64,31"/>
-</map>
-  <img src="class_hierarchy_for_which_4.png" alt='' usemap="#class_hierarchy_for_which_4" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <p>SVD desired piece of spectrum</p>
@@ -77,43 +73,6 @@
 <li><a href="slepc4py.SLEPc.SVD.Which-class.html#SMALLEST" class="link">SMALLEST</a>: smallest singular values.</li>
 </ul>
 
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== CLASS VARIABLES ==================== -->
 <a name="section-ClassVariables"></a>
 <table class="summary" border="1" cellpadding="3"
@@ -153,31 +112,6 @@
     </td>
   </tr>
 </table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
 <!-- ==================== NAVIGATION BAR ==================== -->
 <table class="navbar" border="0" width="100%" cellpadding="0"
        bgcolor="#a0c0ff" cellspacing="0">
@@ -209,7 +143,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:44 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc.Sys-class.html b/docs/apiref/slepc4py.SLEPc.Sys-class.html
index be6e278..4a77ad0 100644
--- a/docs/apiref/slepc4py.SLEPc.Sys-class.html
+++ b/docs/apiref/slepc4py.SLEPc.Sys-class.html
@@ -60,14 +60,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Sys</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type Sys</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for_sys" name="class_hierarchy_for_sys">
-<area shape="rect" id="node1" href="slepc4py.SLEPc.Sys-class.html" title="Sys" alt="" coords="5,5,51,31"/>
-</map>
-  <img src="class_hierarchy_for_sys.png" alt='' usemap="#class_hierarchy_for_sys" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <!-- ==================== INSTANCE METHODS ==================== -->
@@ -111,7 +107,6 @@
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
           <td><span class="summary-sig"><a name="getVersion"></a><span class="summary-sig-name">getVersion</span>(<span class="summary-sig-arg">type cls</span>,
-        <span class="summary-sig-arg">patch</span>=<span class="summary-sig-default">False</span>,
         <span class="summary-sig-arg">devel</span>=<span class="summary-sig-default">False</span>,
         <span class="summary-sig-arg">date</span>=<span class="summary-sig-default">False</span>,
         <span class="summary-sig-arg">author</span>=<span class="summary-sig-default">False</span>)</span></td>
@@ -140,49 +135,6 @@
       
     </td>
   </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
 </table>
 <!-- ==================== METHOD DETAILS ==================== -->
 <a name="section-MethodDetails"></a>
@@ -258,7 +210,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:44 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.SLEPc._p_mem-class.html b/docs/apiref/slepc4py.SLEPc._p_mem-class.html
index 1a75043..88478da 100644
--- a/docs/apiref/slepc4py.SLEPc._p_mem-class.html
+++ b/docs/apiref/slepc4py.SLEPc._p_mem-class.html
@@ -60,14 +60,10 @@
     </td>
   </tr>
 </table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class _p_mem</h1><p class="nomargin-top"></p>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">type _p_mem</h1><p class="nomargin-top"></p>
 <center>
-<center>  <map id="class_hierarchy_for__p_mem" name="class_hierarchy_for__p_mem">
-<area shape="rect" id="node1" href="slepc4py.SLEPc._p_mem-class.html" title="_p_mem" alt="" coords="5,5,77,31"/>
-</map>
-  <img src="class_hierarchy_for__p_mem.png" alt='' usemap="#class_hierarchy_for__p_mem" ismap="ismap" class="graph-without-title" />
-</center>
+
 </center>
 <hr />
 <!-- ==================== INSTANCE METHODS ==================== -->
@@ -104,49 +100,6 @@
       
     </td>
   </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__init__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
 </table>
 <!-- ==================== METHOD DETAILS ==================== -->
 <a name="section-MethodDetails"></a>
@@ -222,7 +175,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:44 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/apiref/slepc4py.lib-module.html b/docs/apiref/slepc4py.lib-module.html
index e01d016..3ac1e4c 100644
--- a/docs/apiref/slepc4py.lib-module.html
+++ b/docs/apiref/slepc4py.lib-module.html
@@ -181,7 +181,7 @@ environmental variable, or a configuration file.</p>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May 22 14:34:40 2016
+    Generated by Epydoc 3.0.1
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/index.html b/docs/index.html
index a5aed52..c2218a5 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -3,14 +3,14 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
 <title>SLEPc for Python</title>
 <meta name="author" content="Lisandro Dalcin" />
 <style type="text/css">
 
 /*
 :Author: David Goodger (goodger at python.org)
-:Id: $Id: html4css1.css 7614 2013-02-21 15:55:51Z milde $
+:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
 :Copyright: This stylesheet has been placed in the public domain.
 
 Default cascading style sheet for the HTML output of Docutils.
@@ -38,6 +38,14 @@ table.borderless td, table.borderless th {
 .hidden {
   display: none }
 
+.subscript {
+  vertical-align: sub;
+  font-size: smaller }
+
+.superscript {
+  vertical-align: super;
+  font-size: smaller }
+
 a.toc-backref {
   text-decoration: none ;
   color: black }
@@ -162,12 +170,12 @@ h2.subtitle {
 hr.docutils {
   width: 75% }
 
-img.align-left, .figure.align-left, object.align-left {
+img.align-left, .figure.align-left, object.align-left, table.align-left {
   clear: left ;
   float: left ;
   margin-right: 1em }
 
-img.align-right, .figure.align-right, object.align-right {
+img.align-right, .figure.align-right, object.align-right, table.align-right {
   clear: right ;
   float: right ;
   margin-left: 1em }
@@ -178,6 +186,11 @@ img.align-center, .figure.align-center, object.align-center {
   margin-right: auto;
 }
 
+table.align-center {
+  margin-left: auto;
+  margin-right: auto;
+}
+
 .align-left {
   text-align: left }
 
@@ -195,6 +208,15 @@ div.align-right {
 /* div.align-center * { */
 /*   text-align: left } */
 
+.align-top    {
+  vertical-align: top }
+
+.align-middle {
+  vertical-align: middle }
+
+.align-bottom {
+  vertical-align: bottom }
+
 ol.simple, ul.simple {
   margin-bottom: 1em }
 
diff --git a/docs/slepc4py.1 b/docs/slepc4py.1
index 1162a0a..1935800 100644
--- a/docs/slepc4py.1
+++ b/docs/slepc4py.1
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "SLEPC4PY" "1" "May 22, 2016" "3.7" "SLEPc for Python"
+.TH "SLEPC4PY" "1" "Oct 21, 2017" "3.8" "SLEPc for Python"
 .SH NAME
 slepc4py \- SLEPc for Python
 .
@@ -42,7 +42,7 @@ Lisandro Dalcin, Jose E. Roman
 \fI\%https://bitbucket.org/slepc/slepc4py\fP
 .TP
 .B Date
-May 22, 2016
+Oct 21, 2017
 .UNINDENT
 .SS Abstract
 .sp
@@ -811,7 +811,7 @@ $ python setup.py install
 .UNINDENT
 .sp
 The previous steps will install the \fBslepc4py\fP package at standard
-location \fB\fIprefix\fP/lib/python\fIX\fP\&.\fIX\fP/site\-packages\fP\&.
+location \fB\fIprefix\fP\fP\fB/lib/python\fP\fIX\fP\fB\&.\fP\fIX\fP\fB/site\-packages\fP\&.
 .sp
 If you do not have root privileges or you want to install \fISLEPc for
 Python\fP for your private use, just do:
@@ -845,6 +845,6 @@ ACM Transactions on Mathematical Software, 31(3):351\-362, 2005.
 .SH AUTHOR
 Lisandro Dalcin
 .SH COPYRIGHT
-2016, Lisandro Dalcin
+2017, Lisandro Dalcin
 .\" Generated by docutils manpage writer.
 .
diff --git a/docs/slepc4py.info b/docs/slepc4py.info
index f4123ce..1141589 100644
--- a/docs/slepc4py.info
+++ b/docs/slepc4py.info
@@ -1,11 +1,11 @@
-This is slepc4py.info, produced by makeinfo version 6.0 from
+This is slepc4py.info, produced by makeinfo version 6.3 from
 slepc4py.texi.
 
-     SLEPc for Python 3.7.0, May 22, 2016
+     SLEPc for Python 3.8.0, Oct 21, 2017
 
      Lisandro Dalcin
 
-     Copyright © 2016, Lisandro Dalcin
+     Copyright © 2017, Lisandro Dalcin
 
 INFO-DIR-SECTION Miscellaneous
 START-INFO-DIR-ENTRY
@@ -13,7 +13,7 @@ START-INFO-DIR-ENTRY
 END-INFO-DIR-ENTRY
 
 
-   Generated by Sphinx 1.2.3.
+   Generated by Sphinx 1.5.2.
 
 
 File: slepc4py.info,  Node: Top,  Next: Contents,  Up: (dir)
@@ -21,11 +21,11 @@ File: slepc4py.info,  Node: Top,  Next: Contents,  Up: (dir)
 SLEPc for Python
 ****************
 
-     SLEPc for Python 3.7.0, May 22, 2016
+     SLEPc for Python 3.8.0, Oct 21, 2017
 
      Lisandro Dalcin
 
-     Copyright © 2016, Lisandro Dalcin
+     Copyright © 2017, Lisandro Dalcin
 
 
 Authors: Lisandro Dalcin, Jose E. Roman
@@ -37,7 +37,7 @@ Contact: <dalcinl at gmail.com>, <jroman at dsic.upv.es>
 Web Site: ‘https://bitbucket.org/slepc/slepc4py’
 
 
-Date: May 22, 2016
+Date: Oct 21, 2017
 
 Abstract
 ========
@@ -575,20 +575,20 @@ File: slepc4py.info,  Node: Using pip or easy_install,  Next: Using distutils,
 1.3.1 Using `pip' or `easy_install'
 -----------------------------------
 
-You can use `pip' to install ‘slepc4py’ and its dependencies (‘mpi4py’
+You can use ‘pip’ to install ‘slepc4py’ and its dependencies (‘mpi4py’
 is optional but highly recommended):
 
      $ pip install [--user] numpy mpi4py
      $ pip install [--user] petsc petsc4py
      $ pip install [--user] slepc slepc4py
 
-Alternatively, you can use `easy_install' (deprecated):
+Alternatively, you can use ‘easy_install’ (deprecated):
 
      $ easy_install [--user] slepc4py
 
 If you already have working PETSc and SLEPc installs, set environment
 variables ‘SLEPC_DIR’ and ‘PETSC_DIR’ (and perhaps ‘PETSC_ARCH’ for
-non-prefix installs) to appropriate values and next use `pip':
+non-prefix installs) to appropriate values and next use ‘pip’:
 
      $ export SLEPC_DIR=/path/to/slepc
      $ export PETSC_DIR=/path/to/petsc
@@ -654,14 +654,14 @@ File: slepc4py.info,  Node: Downloading,  Next: Building,  Prev: Requirements,
 ...................
 
 The `SLEPc for Python' package is available for download at the project
-website generously hosted by Bitbucket.  You can use `curl' or `wget' to
+website generously hosted by Bitbucket.  You can use ‘curl’ or ‘wget’ to
 get a release tarball.
 
-   * Using `curl':
+   * Using ‘curl’:
 
           $ curl -O https://bitbucket.org/slepc/slepc4py/downloads/slepc4py-X.Y.tar.gz
 
-   * Using `wget':
+   * Using ‘wget’:
 
           $ wget https://bitbucket.org/slepc/slepc4py/downloads/slepc4py-X.Y.tar.gz
 
@@ -691,7 +691,7 @@ the distribution is ready for building.
           $ export ARCHFLAGS='-arch x86_64'
 
 Some environment configuration is needed to inform the location of PETSc
-and SLEPc.  You can set (using `setenv', `export' or what applies to you
+and SLEPc.  You can set (using ‘setenv’, ‘export’ or what applies to you
 shell or system) the environment variables ‘SLEPC_DIR`’, ‘PETSC_DIR’,
 and ‘PETSC_ARCH’ indicating where you have built/installed SLEPc and
 PETSc:
@@ -722,7 +722,7 @@ File: slepc4py.info,  Node: Installing,  Prev: Building,  Up: Using distutils
 After building, the distribution is ready for installation.
 
 If you have root privileges (either by log-in as the root user of by
-using `sudo') and you want to install `SLEPc for Python' in your system
+using ‘sudo’) and you want to install `SLEPc for Python' in your system
 for all users, just do:
 
      $ python setup.py install
@@ -840,35 +840,35 @@ Ref: c18034
 Node: Using pip or easy_install18131
 Ref: install using-pip-or-easy-install18231
 Ref: d18231
-Node: Using distutils19027
-Ref: install using-distutils19127
-Ref: e19127
-Node: Requirements19251
-Ref: install requirements19337
-Ref: f19337
-Ref: Requirements-Footnote-119800
-Ref: Requirements-Footnote-219833
-Ref: Requirements-Footnote-319959
-Ref: Requirements-Footnote-419988
-Ref: Requirements-Footnote-520020
-Ref: Requirements-Footnote-620058
-Ref: Requirements-Footnote-720086
-Ref: Requirements-Footnote-820115
-Node: Downloading20159
-Ref: install downloading20262
-Ref: 1020262
-Node: Building20685
-Ref: install building20786
-Ref: 1120786
-Node: Installing22328
-Ref: install installing22409
-Ref: 1222409
-Node: Citations22984
-Ref: citing citations23061
-Ref: 1323061
-Ref: citing doc23061
-Ref: 1423061
-Node: Index23706
+Node: Using distutils19039
+Ref: install using-distutils19139
+Ref: e19139
+Node: Requirements19263
+Ref: install requirements19349
+Ref: f19349
+Ref: Requirements-Footnote-119812
+Ref: Requirements-Footnote-219845
+Ref: Requirements-Footnote-319971
+Ref: Requirements-Footnote-420000
+Ref: Requirements-Footnote-520032
+Ref: Requirements-Footnote-620070
+Ref: Requirements-Footnote-720098
+Ref: Requirements-Footnote-820127
+Node: Downloading20171
+Ref: install downloading20274
+Ref: 1020274
+Node: Building20713
+Ref: install building20814
+Ref: 1120814
+Node: Installing22364
+Ref: install installing22445
+Ref: 1222445
+Node: Citations23024
+Ref: citing citations23101
+Ref: 1323101
+Ref: citing doc23101
+Ref: 1423101
+Node: Index23746
 
 End Tag Table
 
diff --git a/docs/slepc4py.pdf b/docs/slepc4py.pdf
index 65d6ff2..302ee00 100644
Binary files a/docs/slepc4py.pdf and b/docs/slepc4py.pdf differ
diff --git a/docs/source/Makefile b/docs/source/Makefile
index ba25c7a..0dc0f8f 100644
--- a/docs/source/Makefile
+++ b/docs/source/Makefile
@@ -1,172 +1,20 @@
-# Makefile for Sphinx documentation
+# Minimal makefile for Sphinx documentation
 #
 
 # You can set these variables from the command line.
 SPHINXOPTS    =
-SPHINXBUILD   = sphinx-build
-PAPER         =
+SPHINXBUILD   = python -msphinx
+SPHINXPROJ    = petsc4py
+SOURCEDIR     = .
 BUILDDIR      = _build
 
-# Internal variables.
-PAPEROPT_a4     = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-# the i18n builder cannot share the environment and doctrees with the others
-I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
-
+# Put it first so that "make" without argument is like "make help".
 help:
-	@echo "Please use \`make <target>' where <target> is one of"
-	@echo "  html       to make standalone HTML files"
-	@echo "  dirhtml    to make HTML files named index.html in directories"
-	@echo "  singlehtml to make a single large HTML file"
-	@echo "  pickle     to make pickle files"
-	@echo "  json       to make JSON files"
-	@echo "  htmlhelp   to make HTML files and a HTML help project"
-	@echo "  qthelp     to make HTML files and a qthelp project"
-	@echo "  devhelp    to make HTML files and a Devhelp project"
-	@echo "  epub       to make an epub"
-	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
-	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
-	@echo "  latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
-	@echo "  text       to make text files"
-	@echo "  man        to make manual pages"
-	@echo "  texinfo    to make Texinfo files"
-	@echo "  info       to make Texinfo files and run them through makeinfo"
-	@echo "  gettext    to make PO message catalogs"
-	@echo "  changes    to make an overview of all changed/added/deprecated items"
-	@echo "  xml        to make Docutils-native XML files"
-	@echo "  pseudoxml  to make pseudoxml-XML files for display purposes"
-	@echo "  linkcheck  to check all external links for integrity"
-	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
-
-clean:
-	rm -rf $(BUILDDIR)/*
-
-html:
-	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
-	@echo
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-dirhtml:
-	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
-	@echo
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-singlehtml:
-	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
-	@echo
-	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
-
-pickle:
-	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
-	@echo
-	@echo "Build finished; now you can process the pickle files."
-
-json:
-	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
-	@echo
-	@echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
-	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
-	@echo
-	@echo "Build finished; now you can run HTML Help Workshop with the" \
-	      ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-qthelp:
-	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
-	@echo
-	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
-	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
-	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/slepc4py.qhcp"
-	@echo "To view the help file:"
-	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/slepc4py.qhc"
-
-devhelp:
-	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
-	@echo
-	@echo "Build finished."
-	@echo "To view the help file:"
-	@echo "# mkdir -p $$HOME/.local/share/devhelp/slepc4py"
-	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/slepc4py"
-	@echo "# devhelp"
-
-epub:
-	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
-	@echo
-	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo
-	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
-	@echo "Run \`make' in that directory to run these through (pdf)latex" \
-	      "(use \`make latexpdf' here to do that automatically)."
-
-latexpdf:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo "Running LaTeX files through pdflatex..."
-	$(MAKE) -C $(BUILDDIR)/latex all-pdf
-	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-latexpdfja:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo "Running LaTeX files through platex and dvipdfmx..."
-	$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
-	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-text:
-	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
-	@echo
-	@echo "Build finished. The text files are in $(BUILDDIR)/text."
-
-man:
-	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
-	@echo
-	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-texinfo:
-	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
-	@echo
-	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
-	@echo "Run \`make' in that directory to run these through makeinfo" \
-	      "(use \`make info' here to do that automatically)."
-
-info:
-	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
-	@echo "Running Texinfo files through makeinfo..."
-	make -C $(BUILDDIR)/texinfo info
-	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
-
-gettext:
-	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
-	@echo
-	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
-
-changes:
-	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
-	@echo
-	@echo "The overview file is in $(BUILDDIR)/changes."
-
-linkcheck:
-	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
-	@echo
-	@echo "Link check complete; look for any errors in the above output " \
-	      "or in $(BUILDDIR)/linkcheck/output.txt."
-
-doctest:
-	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
-	@echo "Testing of doctests in the sources finished, look at the " \
-	      "results in $(BUILDDIR)/doctest/output.txt."
+	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
 
-xml:
-	$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
-	@echo
-	@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+.PHONY: help Makefile
 
-pseudoxml:
-	$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
-	@echo
-	@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/docs/source/conf.py b/docs/source/conf.py
index cfcb0de..37387b1 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 #
 # SLEPc for Python documentation build configuration file, created by
-# sphinx-quickstart on Sun Aug 17 12:57:45 2014.
+# sphinx-quickstart on Sun Oct  1 15:52:05 2017.
 #
 # This file is execfile()d with the current directory set to its
 # containing dir.
@@ -12,21 +12,30 @@
 # All configuration values have a default; values that are commented out
 # serve to show the default.
 
-import sys
-import os
-
-try: from slepc4py import __version__ as slepc4py_version
-except: slepc4py_version = 'X.X.X'
-
 # If extensions (or modules to document with autodoc) are in another directory,
 # add these directories to sys.path here. If the directory is relative to the
 # documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
+#
+# import os
+# import sys
+# sys.path.insert(0, os.path.abspath('.'))
+
+def get_version():
+    import sys, os, re
+    here = os.path.dirname(__file__)
+    pardir = [os.path.pardir] * 2
+    topdir = os.path.join(here, *pardir)
+    srcdir = os.path.join(topdir, 'src')
+    with open(os.path.join(srcdir, '__init__.py')) as f:
+        m = re.search(r"__version__\s*=\s*'(.*)'", f.read())
+        return m.groups()[0]
+
+pkg_version = get_version()
 
 # -- General configuration ------------------------------------------------
 
 # If your documentation needs a minimal Sphinx version, state it here.
-#needs_sphinx = '1.0'
+# needs_sphinx = '1.0'
 
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
@@ -34,10 +43,12 @@ except: slepc4py_version = 'X.X.X'
 extensions = []
 
 # Add any paths that contain templates here, relative to this directory.
-#templates_path = ['_templates']
+# templates_path = ['_templates']
 templates_path = []
 
-# The suffix of source filenames.
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+# source_suffix = ['.rst', '.md']
 source_suffix = '.rst'
 
 # The encoding of source files.
@@ -48,56 +59,38 @@ master_doc = 'index'
 
 # General information about the project.
 project = u'SLEPc for Python'
-copyright = u'2016, Lisandro Dalcin'
+copyright = u'2017, Lisandro Dalcin'
+author = u'Lisandro Dalcin'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
 #
 # The short X.Y version.
-version = slepc4py_version[:3]
+version = pkg_version[:3]
 # The full version, including alpha/beta/rc tags.
-release = slepc4py_version
+release = pkg_version
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
 
 # List of patterns, relative to source directory, that match files and
 # directories to ignore when looking for source files.
-exclude_patterns = ['_build']
-
-# The reST default role (used for this markup: `text`) to use for all
-# documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
+# This patterns also effect to html_static_path and html_extra_path
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
 
 # The name of the Pygments (syntax highlighting) style to use.
 pygments_style = 'sphinx'
 
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
+# If true, `todo` and `todoList` produce output, else they produce nothing.
+todo_include_todos = False
 
-# If true, keep warnings as "system message" paragraphs in the built documents.
-#keep_warnings = False
 
-# -- Options for HTML output ---------------------------------------------------
+# -- Options for HTML output ----------------------------------------------
 
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
@@ -106,84 +99,40 @@ html_theme = 'default'
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
 # documentation.
-#html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
-
-# The name for this set of Sphinx documents.  If None, it defaults to
-# "<project> v<release> documentation".
-#html_title = None
-
-# A shorter title for the navigation bar.  Default is the same as html_title.
-#html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
+# html_theme_options = {}
 
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-#html_static_path = ['_static']
+# html_static_path = ['_static']
 html_static_path = []
 
-# Add any extra paths that contain custom files (such as robots.txt or
-# .htaccess) here, relative to this directory. These files are copied
-# directly to the root of the documentation.
-#html_extra_path = []
+# Custom sidebar templates, must be a dictionary that maps document names
+# to template names.
+#
+# This is required for the alabaster theme
+# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars
+# html_sidebars = {
+#     '**': [
+#         'about.html',
+#         'navigation.html',
+#         'relations.html',  # needs 'show_related': True theme option to display
+#         'searchbox.html',
+#         'donate.html',
+#     ]
+# }
 
 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
 # using the given strftime format.
 #html_last_updated_fmt = '%b %d, %Y'
 
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-#html_domain_indices = True
-
-# If false, no index is generated.
-#html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-#html_show_sphinx = True
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it.  The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = None
+# -- Options for HTMLHelp output ------------------------------------------
 
 # Output file base name for HTML help builder.
 htmlhelp_basename = 'slepc4py-man'
 
 
-# -- Options for LaTeX output --------------------------------------------------
+# -- Options for LaTeX output ---------------------------------------------
 
 latex_elements = {
 # The paper size ('letterpaper' or 'a4paper').
@@ -195,141 +144,61 @@ latex_elements = {
 
 # Additional stuff for the LaTeX preamble.
 #'preamble': '',
-'printmodindex': '',
-'printindex': '',
-'preamble' : r'\usepackage{sphinxfix}',
+#'printmodindex': '',
+#'printindex': '',
+#'preamble' : '',
 }
-latex_additional_files = ['sphinxfix.sty']
 
 # Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
+# (source start file, target name, title,
+#  author, documentclass [howto, manual, or own class]).
 latex_documents = [
-  ('manual', 'slepc4py.tex', u'SLEPc for Python',
-   u'Lisandro Dalcin', 'howto'),
+    ('manual', 'slepc4py.tex', project, author, 'howto'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
 # the title page.
 #latex_logo = None
 
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# If true, show page references after internal links.
-#latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-#latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_domain_indices = True
-
-# -- Options for manual page output --------------------------------------------
+# -- Options for manual page output ---------------------------------------
 
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
 man_pages = [
-    ('index', 'slepc4py', u'SLEPc for Python',
-     [u'Lisandro Dalcin'], 1)
+    (master_doc, 'slepc4py', project, [author], 1)
 ]
 
 # If true, show URL addresses after external links.
 #man_show_urls = False
 
-
-# -- Options for Texinfo output ------------------------------------------------
+# -- Options for Texinfo output -------------------------------------------
 
 # Grouping the document tree into Texinfo files. List of tuples
 # (source start file, target name, title, author,
 #  dir menu entry, description, category)
 texinfo_documents = [
-  ('index', 'slepc4py', u'SLEPc for Python',
-   u'Lisandro Dalcin', 'slepc4py', 'SLEPc for Python.',
-   'Miscellaneous'),
+    (master_doc, 'slepc4py', project, author,
+     'slepc4py', project+u'.', 'Miscellaneous'),
 ]
 
-# Documents to append as an appendix to all manuals.
-#texinfo_appendices = []
-
-# If false, no module index is generated.
-#texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#texinfo_show_urls = 'footnote'
-
-# If true, do not generate a @detailmenu in the "Top" node's menu.
-#texinfo_no_detailmenu = False
-
-
 # -- Options for Epub output ----------------------------------------------
 
 # Bibliographic Dublin Core info.
-epub_title = u'slepc4py'
-epub_author = u'Lisandro Dalcin'
-epub_publisher = u'Lisandro Dalcin'
-epub_copyright = u'2016, Lisandro Dalcin'
-
-# The basename for the epub file. It defaults to the project name.
-epub_basename = u'slepc4py'
-
-# The HTML theme for the epub output. Since the default themes are not optimized
-# for small screen space, using the same theme for HTML and epub output is
-# usually not wise. This defaults to 'epub', a theme designed to save visual
-# space.
-#epub_theme = 'epub'
-
-# The language of the text. It defaults to the language option
-# or en if the language is not set.
-#epub_language = ''
-
-# The scheme of the identifier. Typical schemes are ISBN or URL.
-#epub_scheme = ''
+epub_title = project
+epub_author = author
+epub_publisher = author
+epub_copyright = copyright
 
 # The unique identifier of the text. This can be a ISBN number
 # or the project homepage.
-#epub_identifier = ''
+#
+# epub_identifier = ''
 
 # A unique identification for the text.
-#epub_uid = ''
-
-# A tuple containing the cover image and cover page html template filenames.
-#epub_cover = ()
-
-# A sequence of (type, uri, title) tuples for the guide element of content.opf.
-#epub_guide = ()
-
-# HTML files that should be inserted before the pages created by sphinx.
-# The format is a list of tuples containing the path and title.
-#epub_pre_files = []
-
-# HTML files shat should be inserted after the pages created by sphinx.
-# The format is a list of tuples containing the path and title.
-#epub_post_files = []
+#
+# epub_uid = ''
 
 # A list of files that should not be packed into the epub file.
 epub_exclude_files = ['search.html']
 
-# The depth of the table of contents in toc.ncx.
-#epub_tocdepth = 3
-
-# Allow duplicate toc entries.
-#epub_tocdup = True
-
-# Choose between 'default' and 'includehidden'.
-#epub_tocscope = 'default'
-
-# Fix unsupported image types using the PIL.
-#epub_fix_images = False
-
-# Scale large images.
-#epub_max_image_width = 0
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#epub_show_urls = 'inline'
 
-# If false, no index is generated.
-#epub_use_index = True
diff --git a/docs/source/make.bat b/docs/source/make.bat
index 7e72b89..d0cb6f6 100644
--- a/docs/source/make.bat
+++ b/docs/source/make.bat
@@ -1,228 +1,36 @@
 @ECHO OFF
 
+pushd %~dp0
+
 REM Command file for Sphinx documentation
 
 if "%SPHINXBUILD%" == "" (
-	set SPHINXBUILD=sphinx-build
+	set SPHINXBUILD=python -msphinx
 )
+set SOURCEDIR=.
 set BUILDDIR=_build
-set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
-set I18NSPHINXOPTS=%SPHINXOPTS% .
-if NOT "%PAPER%" == "" (
-	set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
-	set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
-)
+set SPHINXPROJ=petsc4py
 
 if "%1" == "" goto help
 
-if "%1" == "help" (
-	:help
-	echo.Please use `make ^<target^>` where ^<target^> is one of
-	echo.  html       to make standalone HTML files
-	echo.  dirhtml    to make HTML files named index.html in directories
-	echo.  singlehtml to make a single large HTML file
-	echo.  pickle     to make pickle files
-	echo.  json       to make JSON files
-	echo.  htmlhelp   to make HTML files and a HTML help project
-	echo.  qthelp     to make HTML files and a qthelp project
-	echo.  devhelp    to make HTML files and a Devhelp project
-	echo.  epub       to make an epub
-	echo.  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter
-	echo.  text       to make text files
-	echo.  man        to make manual pages
-	echo.  texinfo    to make Texinfo files
-	echo.  gettext    to make PO message catalogs
-	echo.  changes    to make an overview over all changed/added/deprecated items
-	echo.  xml        to make Docutils-native XML files
-	echo.  pseudoxml  to make pseudoxml-XML files for display purposes
-	echo.  linkcheck  to check all external links for integrity
-	echo.  doctest    to run all doctests embedded in the documentation if enabled
-	goto end
-)
-
-if "%1" == "clean" (
-	for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
-	del /q /s %BUILDDIR%\*
-	goto end
-)
-
-if "%1" == "html" (
-	%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The HTML pages are in %BUILDDIR%/html.
-	goto end
-)
-
-if "%1" == "dirhtml" (
-	%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
-	goto end
-)
-
-if "%1" == "singlehtml" (
-	%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
-	goto end
-)
-
-if "%1" == "pickle" (
-	%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can process the pickle files.
-	goto end
-)
-
-if "%1" == "json" (
-	%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can process the JSON files.
-	goto end
-)
-
-if "%1" == "htmlhelp" (
-	%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can run HTML Help Workshop with the ^
-.hhp project file in %BUILDDIR%/htmlhelp.
-	goto end
-)
-
-if "%1" == "qthelp" (
-	%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
-	if errorlevel 1 exit /b 1
+%SPHINXBUILD% >NUL 2>NUL
+if errorlevel 9009 (
 	echo.
-	echo.Build finished; now you can run "qcollectiongenerator" with the ^
-.qhcp project file in %BUILDDIR%/qthelp, like this:
-	echo.^> qcollectiongenerator %BUILDDIR%\qthelp\slepc4py.qhcp
-	echo.To view the help file:
-	echo.^> assistant -collectionFile %BUILDDIR%\qthelp\slepc4py.ghc
-	goto end
-)
-
-if "%1" == "devhelp" (
-	%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished.
-	goto end
-)
-
-if "%1" == "epub" (
-	%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
-	if errorlevel 1 exit /b 1
+	echo.The Sphinx module was not found. Make sure you have Sphinx installed,
+	echo.then set the SPHINXBUILD environment variable to point to the full
+	echo.path of the 'sphinx-build' executable. Alternatively you may add the
+	echo.Sphinx directory to PATH.
 	echo.
-	echo.Build finished. The epub file is in %BUILDDIR%/epub.
-	goto end
+	echo.If you don't have Sphinx installed, grab it from
+	echo.http://sphinx-doc.org/
+	exit /b 1
 )
 
-if "%1" == "latex" (
-	%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
-	goto end
-)
+%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+goto end
 
-if "%1" == "latexpdf" (
-	%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
-	cd %BUILDDIR%/latex
-	make all-pdf
-	cd %BUILDDIR%/..
-	echo.
-	echo.Build finished; the PDF files are in %BUILDDIR%/latex.
-	goto end
-)
-
-if "%1" == "latexpdfja" (
-	%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
-	cd %BUILDDIR%/latex
-	make all-pdf-ja
-	cd %BUILDDIR%/..
-	echo.
-	echo.Build finished; the PDF files are in %BUILDDIR%/latex.
-	goto end
-)
-
-if "%1" == "text" (
-	%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The text files are in %BUILDDIR%/text.
-	goto end
-)
-
-if "%1" == "man" (
-	%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The manual pages are in %BUILDDIR%/man.
-	goto end
-)
-
-if "%1" == "texinfo" (
-	%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
-	goto end
-)
-
-if "%1" == "gettext" (
-	%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
-	goto end
-)
-
-if "%1" == "changes" (
-	%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.The overview file is in %BUILDDIR%/changes.
-	goto end
-)
-
-if "%1" == "linkcheck" (
-	%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Link check complete; look for any errors in the above output ^
-or in %BUILDDIR%/linkcheck/output.txt.
-	goto end
-)
-
-if "%1" == "doctest" (
-	%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Testing of doctests in the sources finished, look at the ^
-results in %BUILDDIR%/doctest/output.txt.
-	goto end
-)
-
-if "%1" == "xml" (
-	%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The XML files are in %BUILDDIR%/xml.
-	goto end
-)
-
-if "%1" == "pseudoxml" (
-	%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
-	goto end
-)
+:help
+%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
 
 :end
+popd
diff --git a/docs/source/sphinxfix.sty b/docs/source/sphinxfix.sty
deleted file mode 100644
index b1dc14e..0000000
--- a/docs/source/sphinxfix.sty
+++ /dev/null
@@ -1,34 +0,0 @@
-\setcounter{tocdepth}{2}
-
-\pagenumbering{arabic}
-
-\makeatletter
-\renewcommand{\theindex}{
-  \cleardoublepage
-  \phantomsection
-  \py at OldTheindex
-  \addcontentsline{toc}{section}{\indexname}
-}
-\makeatother
-
-\makeatletter
-\renewcommand{\thebibliography}[1]{
-  \cleardoublepage
-  \phantomsection
-  \py at OldThebibliography{1}
-  \addcontentsline{toc}{section}{\bibname}
-}
-\makeatother
-
-\makeatletter
-\renewcommand{\tableofcontents}{
-  \begingroup
-    \parskip = 0mm
-    \py at OldTableofcontents
-  \endgroup
-  \vfill
-  \rule{\textwidth}{1pt}
-  \newpage
-}
-\makeatother
-
diff --git a/docs/usrman/.buildinfo b/docs/usrman/.buildinfo
index cf50ce4..5975f93 100644
--- a/docs/usrman/.buildinfo
+++ b/docs/usrman/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: f63cdeff1cd3914759980a6d91e1f35e
+config: 349099d4c4af390159ceb54123ee0f22
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/usrman/_sources/citing.txt b/docs/usrman/_sources/citing.rst.txt
similarity index 100%
rename from docs/usrman/_sources/citing.txt
rename to docs/usrman/_sources/citing.rst.txt
diff --git a/docs/usrman/_sources/index.txt b/docs/usrman/_sources/index.rst.txt
similarity index 100%
rename from docs/usrman/_sources/index.txt
rename to docs/usrman/_sources/index.rst.txt
diff --git a/docs/usrman/_sources/install.txt b/docs/usrman/_sources/install.rst.txt
similarity index 100%
rename from docs/usrman/_sources/install.txt
rename to docs/usrman/_sources/install.rst.txt
diff --git a/docs/usrman/_sources/manual.txt b/docs/usrman/_sources/manual.rst.txt
similarity index 100%
rename from docs/usrman/_sources/manual.txt
rename to docs/usrman/_sources/manual.rst.txt
diff --git a/docs/usrman/_sources/overview.txt b/docs/usrman/_sources/overview.rst.txt
similarity index 100%
rename from docs/usrman/_sources/overview.txt
rename to docs/usrman/_sources/overview.rst.txt
diff --git a/docs/usrman/_sources/tutorial.txt b/docs/usrman/_sources/tutorial.rst.txt
similarity index 100%
rename from docs/usrman/_sources/tutorial.txt
rename to docs/usrman/_sources/tutorial.rst.txt
diff --git a/docs/usrman/_static/basic.css b/docs/usrman/_static/basic.css
index 967e36c..7ed0e58 100644
--- a/docs/usrman/_static/basic.css
+++ b/docs/usrman/_static/basic.css
@@ -4,7 +4,7 @@
  *
  * Sphinx stylesheet -- basic theme.
  *
- * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -52,6 +52,8 @@ div.sphinxsidebar {
     width: 230px;
     margin-left: -100%;
     font-size: 90%;
+    word-wrap: break-word;
+    overflow-wrap : break-word;
 }
 
 div.sphinxsidebar ul {
@@ -83,10 +85,6 @@ div.sphinxsidebar #searchbox input[type="text"] {
     width: 170px;
 }
 
-div.sphinxsidebar #searchbox input[type="submit"] {
-    width: 30px;
-}
-
 img {
     border: 0;
     max-width: 100%;
@@ -124,6 +122,8 @@ ul.keywordmatches li.goodmatch a {
 
 table.contentstable {
     width: 90%;
+    margin-left: auto;
+    margin-right: auto;
 }
 
 table.contentstable p.biglink {
@@ -151,9 +151,14 @@ table.indextable td {
     vertical-align: top;
 }
 
-table.indextable dl, table.indextable dd {
+table.indextable ul {
     margin-top: 0;
     margin-bottom: 0;
+    list-style-type: none;
+}
+
+table.indextable > tbody > tr > td > ul {
+    padding-left: 0em;
 }
 
 table.indextable tr.pcap {
@@ -185,8 +190,22 @@ div.genindex-jumpbox {
     padding: 0.4em;
 }
 
+/* -- domain module index --------------------------------------------------- */
+
+table.modindextable td {
+    padding: 2px;
+    border-collapse: collapse;
+}
+
 /* -- general body styles --------------------------------------------------- */
 
+div.body p, div.body dd, div.body li, div.body blockquote {
+    -moz-hyphens: auto;
+    -ms-hyphens: auto;
+    -webkit-hyphens: auto;
+    hyphens: auto;
+}
+
 a.headerlink {
     visibility: hidden;
 }
@@ -197,7 +216,10 @@ h3:hover > a.headerlink,
 h4:hover > a.headerlink,
 h5:hover > a.headerlink,
 h6:hover > a.headerlink,
-dt:hover > a.headerlink {
+dt:hover > a.headerlink,
+caption:hover > a.headerlink,
+p.caption:hover > a.headerlink,
+div.code-block-caption:hover > a.headerlink {
     visibility: visible;
 }
 
@@ -209,10 +231,6 @@ div.body td {
     text-align: left;
 }
 
-.field-list ul {
-    padding-left: 1em;
-}
-
 .first {
     margin-top: 0 !important;
 }
@@ -314,6 +332,13 @@ table.docutils {
     border-collapse: collapse;
 }
 
+table caption span.caption-number {
+    font-style: italic;
+}
+
+table caption span.caption-text {
+}
+
 table.docutils td, table.docutils th {
     padding: 1px 8px 1px 5px;
     border-top: 0;
@@ -322,10 +347,6 @@ table.docutils td, table.docutils th {
     border-bottom: 1px solid #aaa;
 }
 
-table.field-list td, table.field-list th {
-    border: 0 !important;
-}
-
 table.footnote td, table.footnote th {
     border: 0 !important;
 }
@@ -344,6 +365,39 @@ table.citation td {
     border-bottom: none;
 }
 
+/* -- figures --------------------------------------------------------------- */
+
+div.figure {
+    margin: 0.5em;
+    padding: 0.5em;
+}
+
+div.figure p.caption {
+    padding: 0.3em;
+}
+
+div.figure p.caption span.caption-number {
+    font-style: italic;
+}
+
+div.figure p.caption span.caption-text {
+}
+
+/* -- field list styles ----------------------------------------------------- */
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
 /* -- other body styles ----------------------------------------------------- */
 
 ol.arabic {
@@ -393,19 +447,14 @@ dl.glossary dt {
     font-size: 1.1em;
 }
 
-.field-list ul {
-    margin: 0;
-    padding-left: 1em;
-}
-
-.field-list p {
-    margin: 0;
-}
-
 .optional {
     font-size: 1.3em;
 }
 
+.sig-paren {
+    font-size: larger;
+}
+
 .versionmodified {
     font-style: italic;
 }
@@ -456,6 +505,13 @@ pre {
     overflow-y: hidden;  /* fixes display issues on Chrome browsers */
 }
 
+span.pre {
+    -moz-hyphens: none;
+    -ms-hyphens: none;
+    -webkit-hyphens: none;
+    hyphens: none;
+}
+
 td.linenos pre {
     padding: 5px 0px;
     border: 0;
@@ -471,22 +527,51 @@ table.highlighttable td {
     padding: 0 0.5em 0 0.5em;
 }
 
-tt.descname {
+div.code-block-caption {
+    padding: 2px 5px;
+    font-size: small;
+}
+
+div.code-block-caption code {
+    background-color: transparent;
+}
+
+div.code-block-caption + div > div.highlight > pre {
+    margin-top: 0;
+}
+
+div.code-block-caption span.caption-number {
+    padding: 0.1em 0.3em;
+    font-style: italic;
+}
+
+div.code-block-caption span.caption-text {
+}
+
+div.literal-block-wrapper {
+    padding: 1em 1em 0;
+}
+
+div.literal-block-wrapper div.highlight {
+    margin: 0;
+}
+
+code.descname {
     background-color: transparent;
     font-weight: bold;
     font-size: 1.2em;
 }
 
-tt.descclassname {
+code.descclassname {
     background-color: transparent;
 }
 
-tt.xref, a tt {
+code.xref, a code {
     background-color: transparent;
     font-weight: bold;
 }
 
-h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
     background-color: transparent;
 }
 
@@ -518,6 +603,16 @@ span.eqno {
     float: right;
 }
 
+span.eqno a.headerlink {
+    position: relative;
+    left: 0px;
+    z-index: 1;
+}
+
+div.math:hover a.headerlink {
+    visibility: visible;
+}
+
 /* -- printout stylesheet --------------------------------------------------- */
 
 @media print {
diff --git a/docs/usrman/_static/default.css b/docs/usrman/_static/classic.css
similarity index 92%
copy from docs/usrman/_static/default.css
copy to docs/usrman/_static/classic.css
index 5f1399a..20db95e 100644
--- a/docs/usrman/_static/default.css
+++ b/docs/usrman/_static/classic.css
@@ -1,10 +1,10 @@
 /*
- * default.css_t
+ * classic.css_t
  * ~~~~~~~~~~~~~
  *
- * Sphinx stylesheet -- default theme.
+ * Sphinx stylesheet -- classic theme.
  *
- * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -169,7 +169,7 @@ a.headerlink:hover {
     color: white;
 }
 
-div.body p, div.body dd, div.body li {
+div.body p, div.body dd, div.body li, div.body blockquote {
     text-align: justify;
     line-height: 130%;
 }
@@ -227,7 +227,7 @@ pre {
     border-right: none;
 }
 
-tt {
+code {
     background-color: #ecf0f3;
     padding: 0 1px 0 1px;
     font-size: 0.95em;
@@ -237,11 +237,11 @@ th {
     background-color: #ede;
 }
 
-.warning tt {
+.warning code {
     background: #efc2c2;
 }
 
-.note tt {
+.note code {
     background: #d6d6d6;
 }
 
@@ -253,4 +253,9 @@ div.viewcode-block:target {
     background-color: #f4debf;
     border-top: 1px solid #ac9;
     border-bottom: 1px solid #ac9;
+}
+
+div.code-block-caption {
+    color: #efefef;
+    background-color: #1c4e63;
 }
\ No newline at end of file
diff --git a/docs/usrman/_static/comment-bright.png b/docs/usrman/_static/comment-bright.png
index 551517b..15e27ed 100644
Binary files a/docs/usrman/_static/comment-bright.png and b/docs/usrman/_static/comment-bright.png differ
diff --git a/docs/usrman/_static/comment-close.png b/docs/usrman/_static/comment-close.png
index 09b54be..4d91bcf 100644
Binary files a/docs/usrman/_static/comment-close.png and b/docs/usrman/_static/comment-close.png differ
diff --git a/docs/usrman/_static/comment.png b/docs/usrman/_static/comment.png
index 92feb52..dfbc0cb 100644
Binary files a/docs/usrman/_static/comment.png and b/docs/usrman/_static/comment.png differ
diff --git a/docs/usrman/_static/default.css b/docs/usrman/_static/default.css
index 5f1399a..81b9363 100644
--- a/docs/usrman/_static/default.css
+++ b/docs/usrman/_static/default.css
@@ -1,256 +1 @@
-/*
- * default.css_t
- * ~~~~~~~~~~~~~
- *
- * Sphinx stylesheet -- default theme.
- *
- * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
- at import url("basic.css");
-
-/* -- page layout ----------------------------------------------------------- */
-
-body {
-    font-family: sans-serif;
-    font-size: 100%;
-    background-color: #11303d;
-    color: #000;
-    margin: 0;
-    padding: 0;
-}
-
-div.document {
-    background-color: #1c4e63;
-}
-
-div.documentwrapper {
-    float: left;
-    width: 100%;
-}
-
-div.bodywrapper {
-    margin: 0 0 0 230px;
-}
-
-div.body {
-    background-color: #ffffff;
-    color: #000000;
-    padding: 0 20px 30px 20px;
-}
-
-div.footer {
-    color: #ffffff;
-    width: 100%;
-    padding: 9px 0 9px 0;
-    text-align: center;
-    font-size: 75%;
-}
-
-div.footer a {
-    color: #ffffff;
-    text-decoration: underline;
-}
-
-div.related {
-    background-color: #133f52;
-    line-height: 30px;
-    color: #ffffff;
-}
-
-div.related a {
-    color: #ffffff;
-}
-
-div.sphinxsidebar {
-}
-
-div.sphinxsidebar h3 {
-    font-family: 'Trebuchet MS', sans-serif;
-    color: #ffffff;
-    font-size: 1.4em;
-    font-weight: normal;
-    margin: 0;
-    padding: 0;
-}
-
-div.sphinxsidebar h3 a {
-    color: #ffffff;
-}
-
-div.sphinxsidebar h4 {
-    font-family: 'Trebuchet MS', sans-serif;
-    color: #ffffff;
-    font-size: 1.3em;
-    font-weight: normal;
-    margin: 5px 0 0 0;
-    padding: 0;
-}
-
-div.sphinxsidebar p {
-    color: #ffffff;
-}
-
-div.sphinxsidebar p.topless {
-    margin: 5px 10px 10px 10px;
-}
-
-div.sphinxsidebar ul {
-    margin: 10px;
-    padding: 0;
-    color: #ffffff;
-}
-
-div.sphinxsidebar a {
-    color: #98dbcc;
-}
-
-div.sphinxsidebar input {
-    border: 1px solid #98dbcc;
-    font-family: sans-serif;
-    font-size: 1em;
-}
-
-
-
-/* -- hyperlink styles ------------------------------------------------------ */
-
-a {
-    color: #355f7c;
-    text-decoration: none;
-}
-
-a:visited {
-    color: #355f7c;
-    text-decoration: none;
-}
-
-a:hover {
-    text-decoration: underline;
-}
-
-
-
-/* -- body styles ----------------------------------------------------------- */
-
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
-    font-family: 'Trebuchet MS', sans-serif;
-    background-color: #f2f2f2;
-    font-weight: normal;
-    color: #20435c;
-    border-bottom: 1px solid #ccc;
-    margin: 20px -20px 10px -20px;
-    padding: 3px 0 3px 10px;
-}
-
-div.body h1 { margin-top: 0; font-size: 200%; }
-div.body h2 { font-size: 160%; }
-div.body h3 { font-size: 140%; }
-div.body h4 { font-size: 120%; }
-div.body h5 { font-size: 110%; }
-div.body h6 { font-size: 100%; }
-
-a.headerlink {
-    color: #c60f0f;
-    font-size: 0.8em;
-    padding: 0 4px 0 4px;
-    text-decoration: none;
-}
-
-a.headerlink:hover {
-    background-color: #c60f0f;
-    color: white;
-}
-
-div.body p, div.body dd, div.body li {
-    text-align: justify;
-    line-height: 130%;
-}
-
-div.admonition p.admonition-title + p {
-    display: inline;
-}
-
-div.admonition p {
-    margin-bottom: 5px;
-}
-
-div.admonition pre {
-    margin-bottom: 5px;
-}
-
-div.admonition ul, div.admonition ol {
-    margin-bottom: 5px;
-}
-
-div.note {
-    background-color: #eee;
-    border: 1px solid #ccc;
-}
-
-div.seealso {
-    background-color: #ffc;
-    border: 1px solid #ff6;
-}
-
-div.topic {
-    background-color: #eee;
-}
-
-div.warning {
-    background-color: #ffe4e4;
-    border: 1px solid #f66;
-}
-
-p.admonition-title {
-    display: inline;
-}
-
-p.admonition-title:after {
-    content: ":";
-}
-
-pre {
-    padding: 5px;
-    background-color: #eeffcc;
-    color: #333333;
-    line-height: 120%;
-    border: 1px solid #ac9;
-    border-left: none;
-    border-right: none;
-}
-
-tt {
-    background-color: #ecf0f3;
-    padding: 0 1px 0 1px;
-    font-size: 0.95em;
-}
-
-th {
-    background-color: #ede;
-}
-
-.warning tt {
-    background: #efc2c2;
-}
-
-.note tt {
-    background: #d6d6d6;
-}
-
-.viewcode-back {
-    font-family: sans-serif;
-}
-
-div.viewcode-block:target {
-    background-color: #f4debf;
-    border-top: 1px solid #ac9;
-    border-bottom: 1px solid #ac9;
-}
\ No newline at end of file
+ at import url("classic.css");
diff --git a/docs/usrman/_static/doctools.js b/docs/usrman/_static/doctools.js
index c5455c9..8163495 100644
--- a/docs/usrman/_static/doctools.js
+++ b/docs/usrman/_static/doctools.js
@@ -4,7 +4,7 @@
  *
  * Sphinx JavaScript utilities for all documentation.
  *
- * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -91,6 +91,30 @@ jQuery.fn.highlightText = function(text, className) {
   });
 };
 
+/*
+ * backward compatibility for jQuery.browser
+ * This will be supported until firefox bug is fixed.
+ */
+if (!jQuery.browser) {
+  jQuery.uaMatch = function(ua) {
+    ua = ua.toLowerCase();
+
+    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
+      /(webkit)[ \/]([\w.]+)/.exec(ua) ||
+      /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
+      /(msie) ([\w.]+)/.exec(ua) ||
+      ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
+      [];
+
+    return {
+      browser: match[ 1 ] || "",
+      version: match[ 2 ] || "0"
+    };
+  };
+  jQuery.browser = {};
+  jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
+}
+
 /**
  * Small JavaScript module for the documentation.
  */
@@ -100,6 +124,7 @@ var Documentation = {
     this.fixFirefoxAnchorBug();
     this.highlightSearchWords();
     this.initIndexTable();
+    
   },
 
   /**
@@ -152,9 +177,10 @@ var Documentation = {
 
   /**
    * workaround a firefox stupidity
+   * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
    */
   fixFirefoxAnchorBug : function() {
-    if (document.location.hash && $.browser.mozilla)
+    if (document.location.hash)
       window.setTimeout(function() {
         document.location.href += '';
       }, 10);
@@ -227,6 +253,29 @@ var Documentation = {
     });
     var url = parts.join('/');
     return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+  },
+
+  initOnKeyListeners: function() {
+    $(document).keyup(function(event) {
+      var activeElementType = document.activeElement.tagName;
+      // don't navigate when in search box or textarea
+      if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
+        switch (event.keyCode) {
+          case 37: // left
+            var prevHref = $('link[rel="prev"]').prop('href');
+            if (prevHref) {
+              window.location.href = prevHref;
+              return false;
+            }
+          case 39: // right
+            var nextHref = $('link[rel="next"]').prop('href');
+            if (nextHref) {
+              window.location.href = nextHref;
+              return false;
+            }
+        }
+      }
+    });
   }
 };
 
@@ -235,4 +284,4 @@ _ = Documentation.gettext;
 
 $(document).ready(function() {
   Documentation.init();
-});
+});
\ No newline at end of file
diff --git a/docs/usrman/_static/down-pressed.png b/docs/usrman/_static/down-pressed.png
index 6f7ad78..5756c8c 100644
Binary files a/docs/usrman/_static/down-pressed.png and b/docs/usrman/_static/down-pressed.png differ
diff --git a/docs/usrman/_static/down.png b/docs/usrman/_static/down.png
index 3003a88..1b3bdad 100644
Binary files a/docs/usrman/_static/down.png and b/docs/usrman/_static/down.png differ
diff --git a/docs/usrman/_static/file.png b/docs/usrman/_static/file.png
index d18082e..a858a41 100644
Binary files a/docs/usrman/_static/file.png and b/docs/usrman/_static/file.png differ
diff --git a/docs/usrman/_static/jquery-3.1.0.js b/docs/usrman/_static/jquery-3.1.0.js
new file mode 100644
index 0000000..f2fc274
--- /dev/null
+++ b/docs/usrman/_static/jquery-3.1.0.js
@@ -0,0 +1,10074 @@
+/*eslint-disable no-unused-vars*/
+/*!
+ * jQuery JavaScript Library v3.1.0
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2016-07-07T21:44Z
+ */
+( function( global, factory ) {
+
+	"use strict";
+
+	if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+		// For CommonJS and CommonJS-like environments where a proper `window`
+		// is present, execute the factory and get jQuery.
+		// For environments that do not have a `window` with a `document`
+		// (such as Node.js), expose a factory as module.exports.
+		// This accentuates the need for the creation of a real `window`.
+		// e.g. var jQuery = require("jquery")(window);
+		// See ticket #14549 for more info.
+		module.exports = global.document ?
+			factory( global, true ) :
+			function( w ) {
+				if ( !w.document ) {
+					throw new Error( "jQuery requires a window with a document" );
+				}
+				return factory( w );
+			};
+	} else {
+		factory( global );
+	}
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var document = window.document;
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+
+
+	function DOMEval( code, doc ) {
+		doc = doc || document;
+
+		var script = doc.createElement( "script" );
+
+		script.text = code;
+		doc.head.appendChild( script ).parentNode.removeChild( script );
+	}
+/* global Symbol */
+// Defining this global in .eslintrc would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+
+
+var
+	version = "3.1.0",
+
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
+
+		// The jQuery object is actually just the init constructor 'enhanced'
+		// Need init if jQuery is called (just allow error to be thrown if not included)
+		return new jQuery.fn.init( selector, context );
+	},
+
+	// Support: Android <=4.0 only
+	// Make sure we trim BOM and NBSP
+	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+	// Matches dashed string for camelizing
+	rmsPrefix = /^-ms-/,
+	rdashAlpha = /-([a-z])/g,
+
+	// Used by jQuery.camelCase as callback to replace()
+	fcamelCase = function( all, letter ) {
+		return letter.toUpperCase();
+	};
+
+jQuery.fn = jQuery.prototype = {
+
+	// The current version of jQuery being used
+	jquery: version,
+
+	constructor: jQuery,
+
+	// The default length of a jQuery object is 0
+	length: 0,
+
+	toArray: function() {
+		return slice.call( this );
+	},
+
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+		return num != null ?
+
+			// Return just the one element from the set
+			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+			// Return all the elements in a clean array
+			slice.call( this );
+	},
+
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
+
+		// Build a new jQuery matched element set
+		var ret = jQuery.merge( this.constructor(), elems );
+
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+
+		// Return the newly-formed element set
+		return ret;
+	},
+
+	// Execute a callback for every element in the matched set.
+	each: function( callback ) {
+		return jQuery.each( this, callback );
+	},
+
+	map: function( callback ) {
+		return this.pushStack( jQuery.map( this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		} ) );
+	},
+
+	slice: function() {
+		return this.pushStack( slice.apply( this, arguments ) );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	eq: function( i ) {
+		var len = this.length,
+			j = +i + ( i < 0 ? len : 0 );
+		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor();
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: push,
+	sort: arr.sort,
+	splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var options, name, src, copy, copyIsArray, clone,
+		target = arguments[ 0 ] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+
+		// Skip the boolean and the target
+		target = arguments[ i ] || {};
+		i++;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+		target = {};
+	}
+
+	// Extend jQuery itself if only one argument is passed
+	if ( i === length ) {
+		target = this;
+		i--;
+	}
+
+	for ( ; i < length; i++ ) {
+
+		// Only deal with non-null/undefined values
+		if ( ( options = arguments[ i ] ) != null ) {
+
+			// Extend the base object
+			for ( name in options ) {
+				src = target[ name ];
+				copy = options[ name ];
+
+				// Prevent never-ending loop
+				if ( target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+					( copyIsArray = jQuery.isArray( copy ) ) ) ) {
+
+					if ( copyIsArray ) {
+						copyIsArray = false;
+						clone = src && jQuery.isArray( src ) ? src : [];
+
+					} else {
+						clone = src && jQuery.isPlainObject( src ) ? src : {};
+					}
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend( {
+
+	// Unique for each copy of jQuery on the page
+	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+	// Assume jQuery is ready without the ready module
+	isReady: true,
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	noop: function() {},
+
+	isFunction: function( obj ) {
+		return jQuery.type( obj ) === "function";
+	},
+
+	isArray: Array.isArray,
+
+	isWindow: function( obj ) {
+		return obj != null && obj === obj.window;
+	},
+
+	isNumeric: function( obj ) {
+
+		// As of jQuery 3.0, isNumeric is limited to
+		// strings and numbers (primitives or objects)
+		// that can be coerced to finite numbers (gh-2662)
+		var type = jQuery.type( obj );
+		return ( type === "number" || type === "string" ) &&
+
+			// parseFloat NaNs numeric-cast false positives ("")
+			// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+			// subtraction forces infinities to NaN
+			!isNaN( obj - parseFloat( obj ) );
+	},
+
+	isPlainObject: function( obj ) {
+		var proto, Ctor;
+
+		// Detect obvious negatives
+		// Use toString instead of jQuery.type to catch host objects
+		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+			return false;
+		}
+
+		proto = getProto( obj );
+
+		// Objects with no prototype (e.g., `Object.create( null )`) are plain
+		if ( !proto ) {
+			return true;
+		}
+
+		// Objects with prototype are plain iff they were constructed by a global Object function
+		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+	},
+
+	isEmptyObject: function( obj ) {
+
+		/* eslint-disable no-unused-vars */
+		// See https://github.com/eslint/eslint/issues/6125
+		var name;
+
+		for ( name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	type: function( obj ) {
+		if ( obj == null ) {
+			return obj + "";
+		}
+
+		// Support: Android <=2.3 only (functionish RegExp)
+		return typeof obj === "object" || typeof obj === "function" ?
+			class2type[ toString.call( obj ) ] || "object" :
+			typeof obj;
+	},
+
+	// Evaluates a script in a global context
+	globalEval: function( code ) {
+		DOMEval( code );
+	},
+
+	// Convert dashed to camelCase; used by the css and data modules
+	// Support: IE <=9 - 11, Edge 12 - 13
+	// Microsoft forgot to hump their vendor prefix (#9572)
+	camelCase: function( string ) {
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+	},
+
+	nodeName: function( elem, name ) {
+		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+	},
+
+	each: function( obj, callback ) {
+		var length, i = 0;
+
+		if ( isArrayLike( obj ) ) {
+			length = obj.length;
+			for ( ; i < length; i++ ) {
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+					break;
+				}
+			}
+		} else {
+			for ( i in obj ) {
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+					break;
+				}
+			}
+		}
+
+		return obj;
+	},
+
+	// Support: Android <=4.0 only
+	trim: function( text ) {
+		return text == null ?
+			"" :
+			( text + "" ).replace( rtrim, "" );
+	},
+
+	// results is for internal usage only
+	makeArray: function( arr, results ) {
+		var ret = results || [];
+
+		if ( arr != null ) {
+			if ( isArrayLike( Object( arr ) ) ) {
+				jQuery.merge( ret,
+					typeof arr === "string" ?
+					[ arr ] : arr
+				);
+			} else {
+				push.call( ret, arr );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, arr, i ) {
+		return arr == null ? -1 : indexOf.call( arr, elem, i );
+	},
+
+	// Support: Android <=4.0 only, PhantomJS 1 only
+	// push.apply(_, arraylike) throws on ancient WebKit
+	merge: function( first, second ) {
+		var len = +second.length,
+			j = 0,
+			i = first.length;
+
+		for ( ; j < len; j++ ) {
+			first[ i++ ] = second[ j ];
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, invert ) {
+		var callbackInverse,
+			matches = [],
+			i = 0,
+			length = elems.length,
+			callbackExpect = !invert;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( ; i < length; i++ ) {
+			callbackInverse = !callback( elems[ i ], i );
+			if ( callbackInverse !== callbackExpect ) {
+				matches.push( elems[ i ] );
+			}
+		}
+
+		return matches;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var length, value,
+			i = 0,
+			ret = [];
+
+		// Go through the array, translating each of the items to their new values
+		if ( isArrayLike( elems ) ) {
+			length = elems.length;
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+
+		// Go through every key on the object,
+		} else {
+			for ( i in elems ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return concat.apply( [], ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// Bind a function to a context, optionally partially applying any
+	// arguments.
+	proxy: function( fn, context ) {
+		var tmp, args, proxy;
+
+		if ( typeof context === "string" ) {
+			tmp = fn[ context ];
+			context = fn;
+			fn = tmp;
+		}
+
+		// Quick check to determine if target is callable, in the spec
+		// this throws a TypeError, but we will just return undefined.
+		if ( !jQuery.isFunction( fn ) ) {
+			return undefined;
+		}
+
+		// Simulated bind
+		args = slice.call( arguments, 2 );
+		proxy = function() {
+			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+		};
+
+		// Set the guid of unique handler to the same of original handler, so it can be removed
+		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+		return proxy;
+	},
+
+	now: Date.now,
+
+	// jQuery.support is not used in Core but other projects attach their
+	// properties to it so it needs to exist.
+	support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+	// Support: real iOS 8.2 only (not reproducible in simulator)
+	// `in` check used to prevent JIT error (gh-2145)
+	// hasOwn isn't used here due to false negatives
+	// regarding Nodelist length in IE
+	var length = !!obj && "length" in obj && obj.length,
+		type = jQuery.type( obj );
+
+	if ( type === "function" || jQuery.isWindow( obj ) ) {
+		return false;
+	}
+
+	return type === "array" || length === 0 ||
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.3.0
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-01-04
+ */
+(function( window ) {
+
+var i,
+	support,
+	Expr,
+	getText,
+	isXML,
+	tokenize,
+	compile,
+	select,
+	outermostContext,
+	sortInput,
+	hasDuplicate,
+
+	// Local document vars
+	setDocument,
+	document,
+	docElem,
+	documentIsHTML,
+	rbuggyQSA,
+	rbuggyMatches,
+	matches,
+	contains,
+
+	// Instance-specific data
+	expando = "sizzle" + 1 * new Date(),
+	preferredDoc = window.document,
+	dirruns = 0,
+	done = 0,
+	classCache = createCache(),
+	tokenCache = createCache(),
+	compilerCache = createCache(),
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+		}
+		return 0;
+	},
+
+	// Instance methods
+	hasOwn = ({}).hasOwnProperty,
+	arr = [],
+	pop = arr.pop,
+	push_native = arr.push,
+	push = arr.push,
+	slice = arr.slice,
+	// Use a stripped-down indexOf as it's faster than native
+	// https://jsperf.com/thor-indexof-vs-for/5
+	indexOf = function( list, elem ) {
+		var i = 0,
+			len = list.length;
+		for ( ; i < len; i++ ) {
+			if ( list[i] === elem ) {
+				return i;
+			}
+		}
+		return -1;
+	},
+
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+	// Regular expressions
+
+	// http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+
+	// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+
+	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+		// Operator (capture 2)
+		"*([*^$|!~]?=)" + whitespace +
+		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+		"*\\]",
+
+	pseudos = ":(" + identifier + ")(?:\\((" +
+		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+		// 1. quoted (capture 3; capture 4 or capture 5)
+		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+		// 2. simple (capture 6)
+		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+		// 3. anything else (capture 2)
+		".*" +
+		")\\)|)",
+
+	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+	rwhitespace = new RegExp( whitespace + "+", "g" ),
+	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+	rpseudo = new RegExp( pseudos ),
+	ridentifier = new RegExp( "^" + identifier + "$" ),
+
+	matchExpr = {
+		"ID": new RegExp( "^#(" + identifier + ")" ),
+		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
+		"ATTR": new RegExp( "^" + attributes ),
+		"PSEUDO": new RegExp( "^" + pseudos ),
+		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+		// For use in libraries implementing .is()
+		// We use this for POS matching in `select`
+		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+	},
+
+	rinputs = /^(?:input|select|textarea|button)$/i,
+	rheader = /^h\d$/i,
+
+	rnative = /^[^{]+\{\s*\[native \w/,
+
+	// Easily-parseable/retrievable ID or TAG or CLASS selectors
+	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+	rsibling = /[+~]/,
+
+	// CSS escapes
+	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+	funescape = function( _, escaped, escapedWhitespace ) {
+		var high = "0x" + escaped - 0x10000;
+		// NaN means non-codepoint
+		// Support: Firefox<24
+		// Workaround erroneous numeric interpretation of +"0x"
+		return high !== high || escapedWhitespace ?
+			escaped :
+			high < 0 ?
+				// BMP codepoint
+				String.fromCharCode( high + 0x10000 ) :
+				// Supplemental Plane codepoint (surrogate pair)
+				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+	},
+
+	// CSS string/identifier serialization
+	// https://drafts.csswg.org/cssom/#common-serializing-idioms
+	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,
+	fcssescape = function( ch, asCodePoint ) {
+		if ( asCodePoint ) {
+
+			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+			if ( ch === "\0" ) {
+				return "\uFFFD";
+			}
+
+			// Control characters and (dependent upon position) numbers get escaped as code points
+			return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+		}
+
+		// Other potentially-special ASCII characters get backslash-escaped
+		return "\\" + ch;
+	},
+
+	// Used for iframes
+	// See setDocument()
+	// Removing the function wrapper causes a "Permission Denied"
+	// error in IE
+	unloadHandler = function() {
+		setDocument();
+	},
+
+	disabledAncestor = addCombinator(
+		function( elem ) {
+			return elem.disabled === true;
+		},
+		{ dir: "parentNode", next: "legend" }
+	);
+
+// Optimize for push.apply( _, NodeList )
+try {
+	push.apply(
+		(arr = slice.call( preferredDoc.childNodes )),
+		preferredDoc.childNodes
+	);
+	// Support: Android<4.0
+	// Detect silently failing push.apply
+	arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+	push = { apply: arr.length ?
+
+		// Leverage slice if possible
+		function( target, els ) {
+			push_native.apply( target, slice.call(els) );
+		} :
+
+		// Support: IE<9
+		// Otherwise append directly
+		function( target, els ) {
+			var j = target.length,
+				i = 0;
+			// Can't trust NodeList.length
+			while ( (target[j++] = els[i++]) ) {}
+			target.length = j - 1;
+		}
+	};
+}
+
+function Sizzle( selector, context, results, seed ) {
+	var m, i, elem, nid, match, groups, newSelector,
+		newContext = context && context.ownerDocument,
+
+		// nodeType defaults to 9, since context defaults to document
+		nodeType = context ? context.nodeType : 9;
+
+	results = results || [];
+
+	// Return early from calls with invalid selector or context
+	if ( typeof selector !== "string" || !selector ||
+		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+		return results;
+	}
+
+	// Try to shortcut find operations (as opposed to filters) in HTML documents
+	if ( !seed ) {
+
+		if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+			setDocument( context );
+		}
+		context = context || document;
+
+		if ( documentIsHTML ) {
+
+			// If the selector is sufficiently simple, try using a "get*By*" DOM method
+			// (excepting DocumentFragment context, where the methods don't exist)
+			if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+				// ID selector
+				if ( (m = match[1]) ) {
+
+					// Document context
+					if ( nodeType === 9 ) {
+						if ( (elem = context.getElementById( m )) ) {
+
+							// Support: IE, Opera, Webkit
+							// TODO: identify versions
+							// getElementById can match elements by name instead of ID
+							if ( elem.id === m ) {
+								results.push( elem );
+								return results;
+							}
+						} else {
+							return results;
+						}
+
+					// Element context
+					} else {
+
+						// Support: IE, Opera, Webkit
+						// TODO: identify versions
+						// getElementById can match elements by name instead of ID
+						if ( newContext && (elem = newContext.getElementById( m )) &&
+							contains( context, elem ) &&
+							elem.id === m ) {
+
+							results.push( elem );
+							return results;
+						}
+					}
+
+				// Type selector
+				} else if ( match[2] ) {
+					push.apply( results, context.getElementsByTagName( selector ) );
+					return results;
+
+				// Class selector
+				} else if ( (m = match[3]) && support.getElementsByClassName &&
+					context.getElementsByClassName ) {
+
+					push.apply( results, context.getElementsByClassName( m ) );
+					return results;
+				}
+			}
+
+			// Take advantage of querySelectorAll
+			if ( support.qsa &&
+				!compilerCache[ selector + " " ] &&
+				(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+				if ( nodeType !== 1 ) {
+					newContext = context;
+					newSelector = selector;
+
+				// qSA looks outside Element context, which is not what we want
+				// Thanks to Andrew Dupont for this workaround technique
+				// Support: IE <=8
+				// Exclude object elements
+				} else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+					// Capture the context ID, setting it first if necessary
+					if ( (nid = context.getAttribute( "id" )) ) {
+						nid = nid.replace( rcssescape, fcssescape );
+					} else {
+						context.setAttribute( "id", (nid = expando) );
+					}
+
+					// Prefix every selector in the list
+					groups = tokenize( selector );
+					i = groups.length;
+					while ( i-- ) {
+						groups[i] = "#" + nid + " " + toSelector( groups[i] );
+					}
+					newSelector = groups.join( "," );
+
+					// Expand context for sibling selectors
+					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+						context;
+				}
+
+				if ( newSelector ) {
+					try {
+						push.apply( results,
+							newContext.querySelectorAll( newSelector )
+						);
+						return results;
+					} catch ( qsaError ) {
+					} finally {
+						if ( nid === expando ) {
+							context.removeAttribute( "id" );
+						}
+					}
+				}
+			}
+		}
+	}
+
+	// All others
+	return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *	deleting the oldest entry
+ */
+function createCache() {
+	var keys = [];
+
+	function cache( key, value ) {
+		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+		if ( keys.push( key + " " ) > Expr.cacheLength ) {
+			// Only keep the most recent entries
+			delete cache[ keys.shift() ];
+		}
+		return (cache[ key + " " ] = value);
+	}
+	return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+	fn[ expando ] = true;
+	return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+	var el = document.createElement("fieldset");
+
+	try {
+		return !!fn( el );
+	} catch (e) {
+		return false;
+	} finally {
+		// Remove from its parent by default
+		if ( el.parentNode ) {
+			el.parentNode.removeChild( el );
+		}
+		// release memory in IE
+		el = null;
+	}
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+	var arr = attrs.split("|"),
+		i = arr.length;
+
+	while ( i-- ) {
+		Expr.attrHandle[ arr[i] ] = handler;
+	}
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+	var cur = b && a,
+		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+			a.sourceIndex - b.sourceIndex;
+
+	// Use IE sourceIndex if available on both nodes
+	if ( diff ) {
+		return diff;
+	}
+
+	// Check if b follows a
+	if ( cur ) {
+		while ( (cur = cur.nextSibling) ) {
+			if ( cur === b ) {
+				return -1;
+			}
+		}
+	}
+
+	return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return name === "input" && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return (name === "input" || name === "button") && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+	// Known :disabled false positives:
+	// IE: *[disabled]:not(button, input, select, textarea, optgroup, option, menuitem, fieldset)
+	// not IE: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+	return function( elem ) {
+
+		// Check form elements and option elements for explicit disabling
+		return "label" in elem && elem.disabled === disabled ||
+			"form" in elem && elem.disabled === disabled ||
+
+			// Check non-disabled form elements for fieldset[disabled] ancestors
+			"form" in elem && elem.disabled === false && (
+				// Support: IE6-11+
+				// Ancestry is covered for us
+				elem.isDisabled === disabled ||
+
+				// Otherwise, assume any non-<option> under fieldset[disabled] is disabled
+				/* jshint -W018 */
+				elem.isDisabled !== !disabled &&
+					("label" in elem || !disabledAncestor( elem )) !== disabled
+			);
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+	return markFunction(function( argument ) {
+		argument = +argument;
+		return markFunction(function( seed, matches ) {
+			var j,
+				matchIndexes = fn( [], seed.length, argument ),
+				i = matchIndexes.length;
+
+			// Match elements found at the specified indexes
+			while ( i-- ) {
+				if ( seed[ (j = matchIndexes[i]) ] ) {
+					seed[j] = !(matches[j] = seed[j]);
+				}
+			}
+		});
+	});
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+	return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+	// documentElement is verified for cases where it doesn't yet exist
+	// (such as loading iframes in IE - #4833)
+	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+	return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+	var hasCompare, subWindow,
+		doc = node ? node.ownerDocument || node : preferredDoc;
+
+	// Return early if doc is invalid or already selected
+	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+		return document;
+	}
+
+	// Update global variables
+	document = doc;
+	docElem = document.documentElement;
+	documentIsHTML = !isXML( document );
+
+	// Support: IE 9-11, Edge
+	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+	if ( preferredDoc !== document &&
+		(subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+
+		// Support: IE 11, Edge
+		if ( subWindow.addEventListener ) {
+			subWindow.addEventListener( "unload", unloadHandler, false );
+
+		// Support: IE 9 - 10 only
+		} else if ( subWindow.attachEvent ) {
+			subWindow.attachEvent( "onunload", unloadHandler );
+		}
+	}
+
+	/* Attributes
+	---------------------------------------------------------------------- */
+
+	// Support: IE<8
+	// Verify that getAttribute really returns attributes and not properties
+	// (excepting IE8 booleans)
+	support.attributes = assert(function( el ) {
+		el.className = "i";
+		return !el.getAttribute("className");
+	});
+
+	/* getElement(s)By*
+	---------------------------------------------------------------------- */
+
+	// Check if getElementsByTagName("*") returns only elements
+	support.getElementsByTagName = assert(function( el ) {
+		el.appendChild( document.createComment("") );
+		return !el.getElementsByTagName("*").length;
+	});
+
+	// Support: IE<9
+	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+	// Support: IE<10
+	// Check if getElementById returns elements by name
+	// The broken getElementById methods don't pick up programmatically-set names,
+	// so use a roundabout getElementsByName test
+	support.getById = assert(function( el ) {
+		docElem.appendChild( el ).id = expando;
+		return !document.getElementsByName || !document.getElementsByName( expando ).length;
+	});
+
+	// ID find and filter
+	if ( support.getById ) {
+		Expr.find["ID"] = function( id, context ) {
+			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+				var m = context.getElementById( id );
+				return m ? [ m ] : [];
+			}
+		};
+		Expr.filter["ID"] = function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				return elem.getAttribute("id") === attrId;
+			};
+		};
+	} else {
+		// Support: IE6/7
+		// getElementById is not reliable as a find shortcut
+		delete Expr.find["ID"];
+
+		Expr.filter["ID"] =  function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				var node = typeof elem.getAttributeNode !== "undefined" &&
+					elem.getAttributeNode("id");
+				return node && node.value === attrId;
+			};
+		};
+	}
+
+	// Tag
+	Expr.find["TAG"] = support.getElementsByTagName ?
+		function( tag, context ) {
+			if ( typeof context.getElementsByTagName !== "undefined" ) {
+				return context.getElementsByTagName( tag );
+
+			// DocumentFragment nodes don't have gEBTN
+			} else if ( support.qsa ) {
+				return context.querySelectorAll( tag );
+			}
+		} :
+
+		function( tag, context ) {
+			var elem,
+				tmp = [],
+				i = 0,
+				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+				results = context.getElementsByTagName( tag );
+
+			// Filter out possible comments
+			if ( tag === "*" ) {
+				while ( (elem = results[i++]) ) {
+					if ( elem.nodeType === 1 ) {
+						tmp.push( elem );
+					}
+				}
+
+				return tmp;
+			}
+			return results;
+		};
+
+	// Class
+	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+			return context.getElementsByClassName( className );
+		}
+	};
+
+	/* QSA/matchesSelector
+	---------------------------------------------------------------------- */
+
+	// QSA and matchesSelector support
+
+	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+	rbuggyMatches = [];
+
+	// qSa(:focus) reports false when true (Chrome 21)
+	// We allow this because of a bug in IE8/9 that throws an error
+	// whenever `document.activeElement` is accessed on an iframe
+	// So, we allow :focus to pass through QSA all the time to avoid the IE error
+	// See https://bugs.jquery.com/ticket/13378
+	rbuggyQSA = [];
+
+	if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+		// Build QSA regex
+		// Regex strategy adopted from Diego Perini
+		assert(function( el ) {
+			// Select is set to empty string on purpose
+			// This is to test IE's treatment of not explicitly
+			// setting a boolean content attribute,
+			// since its presence should be enough
+			// https://bugs.jquery.com/ticket/12359
+			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
+				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
+				"<option selected=''></option></select>";
+
+			// Support: IE8, Opera 11-12.16
+			// Nothing should be selected when empty strings follow ^= or $= or *=
+			// The test attribute must be unknown in Opera but "safe" for WinRT
+			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+			if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+			}
+
+			// Support: IE8
+			// Boolean attributes and "value" are not treated correctly
+			if ( !el.querySelectorAll("[selected]").length ) {
+				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+			}
+
+			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+				rbuggyQSA.push("~=");
+			}
+
+			// Webkit/Opera - :checked should return selected option elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			// IE8 throws error here and will not see later tests
+			if ( !el.querySelectorAll(":checked").length ) {
+				rbuggyQSA.push(":checked");
+			}
+
+			// Support: Safari 8+, iOS 8+
+			// https://bugs.webkit.org/show_bug.cgi?id=136851
+			// In-page `selector#id sibling-combinator selector` fails
+			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+				rbuggyQSA.push(".#.+[+~]");
+			}
+		});
+
+		assert(function( el ) {
+			el.innerHTML = "<a href='' disabled='disabled'></a>" +
+				"<select disabled='disabled'><option/></select>";
+
+			// Support: Windows 8 Native Apps
+			// The type and name attributes are restricted during .innerHTML assignment
+			var input = document.createElement("input");
+			input.setAttribute( "type", "hidden" );
+			el.appendChild( input ).setAttribute( "name", "D" );
+
+			// Support: IE8
+			// Enforce case-sensitivity of name attribute
+			if ( el.querySelectorAll("[name=d]").length ) {
+				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+			}
+
+			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+			// IE8 throws error here and will not see later tests
+			if ( el.querySelectorAll(":enabled").length !== 2 ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Support: IE9-11+
+			// IE's :disabled selector does not pick up the children of disabled fieldsets
+			docElem.appendChild( el ).disabled = true;
+			if ( el.querySelectorAll(":disabled").length !== 2 ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Opera 10-11 does not throw on post-comma invalid pseudos
+			el.querySelectorAll("*,:x");
+			rbuggyQSA.push(",.*:");
+		});
+	}
+
+	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+		docElem.webkitMatchesSelector ||
+		docElem.mozMatchesSelector ||
+		docElem.oMatchesSelector ||
+		docElem.msMatchesSelector) )) ) {
+
+		assert(function( el ) {
+			// Check to see if it's possible to do matchesSelector
+			// on a disconnected node (IE 9)
+			support.disconnectedMatch = matches.call( el, "*" );
+
+			// This should fail with an exception
+			// Gecko does not error, returns false instead
+			matches.call( el, "[s!='']:x" );
+			rbuggyMatches.push( "!=", pseudos );
+		});
+	}
+
+	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+	/* Contains
+	---------------------------------------------------------------------- */
+	hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+	// Element contains another
+	// Purposefully self-exclusive
+	// As in, an element does not contain itself
+	contains = hasCompare || rnative.test( docElem.contains ) ?
+		function( a, b ) {
+			var adown = a.nodeType === 9 ? a.documentElement : a,
+				bup = b && b.parentNode;
+			return a === bup || !!( bup && bup.nodeType === 1 && (
+				adown.contains ?
+					adown.contains( bup ) :
+					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+			));
+		} :
+		function( a, b ) {
+			if ( b ) {
+				while ( (b = b.parentNode) ) {
+					if ( b === a ) {
+						return true;
+					}
+				}
+			}
+			return false;
+		};
+
+	/* Sorting
+	---------------------------------------------------------------------- */
+
+	// Document order sorting
+	sortOrder = hasCompare ?
+	function( a, b ) {
+
+		// Flag for duplicate removal
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		// Sort on method existence if only one input has compareDocumentPosition
+		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+		if ( compare ) {
+			return compare;
+		}
+
+		// Calculate position if both inputs belong to the same document
+		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+			a.compareDocumentPosition( b ) :
+
+			// Otherwise we know they are disconnected
+			1;
+
+		// Disconnected nodes
+		if ( compare & 1 ||
+			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+			// Choose the first element that is related to our preferred document
+			if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+				return -1;
+			}
+			if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+				return 1;
+			}
+
+			// Maintain original order
+			return sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+		}
+
+		return compare & 4 ? -1 : 1;
+	} :
+	function( a, b ) {
+		// Exit early if the nodes are identical
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		var cur,
+			i = 0,
+			aup = a.parentNode,
+			bup = b.parentNode,
+			ap = [ a ],
+			bp = [ b ];
+
+		// Parentless nodes are either documents or disconnected
+		if ( !aup || !bup ) {
+			return a === document ? -1 :
+				b === document ? 1 :
+				aup ? -1 :
+				bup ? 1 :
+				sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+
+		// If the nodes are siblings, we can do a quick check
+		} else if ( aup === bup ) {
+			return siblingCheck( a, b );
+		}
+
+		// Otherwise we need full lists of their ancestors for comparison
+		cur = a;
+		while ( (cur = cur.parentNode) ) {
+			ap.unshift( cur );
+		}
+		cur = b;
+		while ( (cur = cur.parentNode) ) {
+			bp.unshift( cur );
+		}
+
+		// Walk down the tree looking for a discrepancy
+		while ( ap[i] === bp[i] ) {
+			i++;
+		}
+
+		return i ?
+			// Do a sibling check if the nodes have a common ancestor
+			siblingCheck( ap[i], bp[i] ) :
+
+			// Otherwise nodes in our document sort first
+			ap[i] === preferredDoc ? -1 :
+			bp[i] === preferredDoc ? 1 :
+			0;
+	};
+
+	return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+	return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	// Make sure that attribute selectors are quoted
+	expr = expr.replace( rattributeQuotes, "='$1']" );
+
+	if ( support.matchesSelector && documentIsHTML &&
+		!compilerCache[ expr + " " ] &&
+		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+		try {
+			var ret = matches.call( elem, expr );
+
+			// IE 9's matchesSelector returns false on disconnected nodes
+			if ( ret || support.disconnectedMatch ||
+					// As well, disconnected nodes are said to be in a document
+					// fragment in IE 9
+					elem.document && elem.document.nodeType !== 11 ) {
+				return ret;
+			}
+		} catch (e) {}
+	}
+
+	return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+	// Set document vars if needed
+	if ( ( context.ownerDocument || context ) !== document ) {
+		setDocument( context );
+	}
+	return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	var fn = Expr.attrHandle[ name.toLowerCase() ],
+		// Don't get fooled by Object.prototype properties (jQuery #13807)
+		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+			fn( elem, name, !documentIsHTML ) :
+			undefined;
+
+	return val !== undefined ?
+		val :
+		support.attributes || !documentIsHTML ?
+			elem.getAttribute( name ) :
+			(val = elem.getAttributeNode(name)) && val.specified ?
+				val.value :
+				null;
+};
+
+Sizzle.escape = function( sel ) {
+	return (sel + "").replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+	throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+	var elem,
+		duplicates = [],
+		j = 0,
+		i = 0;
+
+	// Unless we *know* we can detect duplicates, assume their presence
+	hasDuplicate = !support.detectDuplicates;
+	sortInput = !support.sortStable && results.slice( 0 );
+	results.sort( sortOrder );
+
+	if ( hasDuplicate ) {
+		while ( (elem = results[i++]) ) {
+			if ( elem === results[ i ] ) {
+				j = duplicates.push( i );
+			}
+		}
+		while ( j-- ) {
+			results.splice( duplicates[ j ], 1 );
+		}
+	}
+
+	// Clear input after sorting to release objects
+	// See https://github.com/jquery/sizzle/pull/225
+	sortInput = null;
+
+	return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+	var node,
+		ret = "",
+		i = 0,
+		nodeType = elem.nodeType;
+
+	if ( !nodeType ) {
+		// If no nodeType, this is expected to be an array
+		while ( (node = elem[i++]) ) {
+			// Do not traverse comment nodes
+			ret += getText( node );
+		}
+	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+		// Use textContent for elements
+		// innerText usage removed for consistency of new lines (jQuery #11153)
+		if ( typeof elem.textContent === "string" ) {
+			return elem.textContent;
+		} else {
+			// Traverse its children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				ret += getText( elem );
+			}
+		}
+	} else if ( nodeType === 3 || nodeType === 4 ) {
+		return elem.nodeValue;
+	}
+	// Do not include comment or processing instruction nodes
+
+	return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+	// Can be adjusted by the user
+	cacheLength: 50,
+
+	createPseudo: markFunction,
+
+	match: matchExpr,
+
+	attrHandle: {},
+
+	find: {},
+
+	relative: {
+		">": { dir: "parentNode", first: true },
+		" ": { dir: "parentNode" },
+		"+": { dir: "previousSibling", first: true },
+		"~": { dir: "previousSibling" }
+	},
+
+	preFilter: {
+		"ATTR": function( match ) {
+			match[1] = match[1].replace( runescape, funescape );
+
+			// Move the given value to match[3] whether quoted or unquoted
+			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+			if ( match[2] === "~=" ) {
+				match[3] = " " + match[3] + " ";
+			}
+
+			return match.slice( 0, 4 );
+		},
+
+		"CHILD": function( match ) {
+			/* matches from matchExpr["CHILD"]
+				1 type (only|nth|...)
+				2 what (child|of-type)
+				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+				4 xn-component of xn+y argument ([+-]?\d*n|)
+				5 sign of xn-component
+				6 x of xn-component
+				7 sign of y-component
+				8 y of y-component
+			*/
+			match[1] = match[1].toLowerCase();
+
+			if ( match[1].slice( 0, 3 ) === "nth" ) {
+				// nth-* requires argument
+				if ( !match[3] ) {
+					Sizzle.error( match[0] );
+				}
+
+				// numeric x and y parameters for Expr.filter.CHILD
+				// remember that false/true cast respectively to 0/1
+				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+			// other types prohibit arguments
+			} else if ( match[3] ) {
+				Sizzle.error( match[0] );
+			}
+
+			return match;
+		},
+
+		"PSEUDO": function( match ) {
+			var excess,
+				unquoted = !match[6] && match[2];
+
+			if ( matchExpr["CHILD"].test( match[0] ) ) {
+				return null;
+			}
+
+			// Accept quoted arguments as-is
+			if ( match[3] ) {
+				match[2] = match[4] || match[5] || "";
+
+			// Strip excess characters from unquoted arguments
+			} else if ( unquoted && rpseudo.test( unquoted ) &&
+				// Get excess from tokenize (recursively)
+				(excess = tokenize( unquoted, true )) &&
+				// advance to the next closing parenthesis
+				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+				// excess is a negative index
+				match[0] = match[0].slice( 0, excess );
+				match[2] = unquoted.slice( 0, excess );
+			}
+
+			// Return only captures needed by the pseudo filter method (type and argument)
+			return match.slice( 0, 3 );
+		}
+	},
+
+	filter: {
+
+		"TAG": function( nodeNameSelector ) {
+			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+			return nodeNameSelector === "*" ?
+				function() { return true; } :
+				function( elem ) {
+					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+				};
+		},
+
+		"CLASS": function( className ) {
+			var pattern = classCache[ className + " " ];
+
+			return pattern ||
+				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+				classCache( className, function( elem ) {
+					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+				});
+		},
+
+		"ATTR": function( name, operator, check ) {
+			return function( elem ) {
+				var result = Sizzle.attr( elem, name );
+
+				if ( result == null ) {
+					return operator === "!=";
+				}
+				if ( !operator ) {
+					return true;
+				}
+
+				result += "";
+
+				return operator === "=" ? result === check :
+					operator === "!=" ? result !== check :
+					operator === "^=" ? check && result.indexOf( check ) === 0 :
+					operator === "*=" ? check && result.indexOf( check ) > -1 :
+					operator === "$=" ? check && result.slice( -check.length ) === check :
+					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+					false;
+			};
+		},
+
+		"CHILD": function( type, what, argument, first, last ) {
+			var simple = type.slice( 0, 3 ) !== "nth",
+				forward = type.slice( -4 ) !== "last",
+				ofType = what === "of-type";
+
+			return first === 1 && last === 0 ?
+
+				// Shortcut for :nth-*(n)
+				function( elem ) {
+					return !!elem.parentNode;
+				} :
+
+				function( elem, context, xml ) {
+					var cache, uniqueCache, outerCache, node, nodeIndex, start,
+						dir = simple !== forward ? "nextSibling" : "previousSibling",
+						parent = elem.parentNode,
+						name = ofType && elem.nodeName.toLowerCase(),
+						useCache = !xml && !ofType,
+						diff = false;
+
+					if ( parent ) {
+
+						// :(first|last|only)-(child|of-type)
+						if ( simple ) {
+							while ( dir ) {
+								node = elem;
+								while ( (node = node[ dir ]) ) {
+									if ( ofType ?
+										node.nodeName.toLowerCase() === name :
+										node.nodeType === 1 ) {
+
+										return false;
+									}
+								}
+								// Reverse direction for :only-* (if we haven't yet done so)
+								start = dir = type === "only" && !start && "nextSibling";
+							}
+							return true;
+						}
+
+						start = [ forward ? parent.firstChild : parent.lastChild ];
+
+						// non-xml :nth-child(...) stores cache data on `parent`
+						if ( forward && useCache ) {
+
+							// Seek `elem` from a previously-cached index
+
+							// ...in a gzip-friendly way
+							node = parent;
+							outerCache = node[ expando ] || (node[ expando ] = {});
+
+							// Support: IE <9 only
+							// Defend against cloned attroperties (jQuery gh-1709)
+							uniqueCache = outerCache[ node.uniqueID ] ||
+								(outerCache[ node.uniqueID ] = {});
+
+							cache = uniqueCache[ type ] || [];
+							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+							diff = nodeIndex && cache[ 2 ];
+							node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+								// Fallback to seeking `elem` from the start
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								// When found, cache indexes on `parent` and break
+								if ( node.nodeType === 1 && ++diff && node === elem ) {
+									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+									break;
+								}
+							}
+
+						} else {
+							// Use previously-cached element index if available
+							if ( useCache ) {
+								// ...in a gzip-friendly way
+								node = elem;
+								outerCache = node[ expando ] || (node[ expando ] = {});
+
+								// Support: IE <9 only
+								// Defend against cloned attroperties (jQuery gh-1709)
+								uniqueCache = outerCache[ node.uniqueID ] ||
+									(outerCache[ node.uniqueID ] = {});
+
+								cache = uniqueCache[ type ] || [];
+								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+								diff = nodeIndex;
+							}
+
+							// xml :nth-child(...)
+							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
+							if ( diff === false ) {
+								// Use the same loop as above to seek `elem` from the start
+								while ( (node = ++nodeIndex && node && node[ dir ] ||
+									(diff = nodeIndex = 0) || start.pop()) ) {
+
+									if ( ( ofType ?
+										node.nodeName.toLowerCase() === name :
+										node.nodeType === 1 ) &&
+										++diff ) {
+
+										// Cache the index of each encountered element
+										if ( useCache ) {
+											outerCache = node[ expando ] || (node[ expando ] = {});
+
+											// Support: IE <9 only
+											// Defend against cloned attroperties (jQuery gh-1709)
+											uniqueCache = outerCache[ node.uniqueID ] ||
+												(outerCache[ node.uniqueID ] = {});
+
+											uniqueCache[ type ] = [ dirruns, diff ];
+										}
+
+										if ( node === elem ) {
+											break;
+										}
+									}
+								}
+							}
+						}
+
+						// Incorporate the offset, then check against cycle size
+						diff -= last;
+						return diff === first || ( diff % first === 0 && diff / first >= 0 );
+					}
+				};
+		},
+
+		"PSEUDO": function( pseudo, argument ) {
+			// pseudo-class names are case-insensitive
+			// http://www.w3.org/TR/selectors/#pseudo-classes
+			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+			// Remember that setFilters inherits from pseudos
+			var args,
+				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+					Sizzle.error( "unsupported pseudo: " + pseudo );
+
+			// The user may use createPseudo to indicate that
+			// arguments are needed to create the filter function
+			// just as Sizzle does
+			if ( fn[ expando ] ) {
+				return fn( argument );
+			}
+
+			// But maintain support for old signatures
+			if ( fn.length > 1 ) {
+				args = [ pseudo, pseudo, "", argument ];
+				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+					markFunction(function( seed, matches ) {
+						var idx,
+							matched = fn( seed, argument ),
+							i = matched.length;
+						while ( i-- ) {
+							idx = indexOf( seed, matched[i] );
+							seed[ idx ] = !( matches[ idx ] = matched[i] );
+						}
+					}) :
+					function( elem ) {
+						return fn( elem, 0, args );
+					};
+			}
+
+			return fn;
+		}
+	},
+
+	pseudos: {
+		// Potentially complex pseudos
+		"not": markFunction(function( selector ) {
+			// Trim the selector passed to compile
+			// to avoid treating leading and trailing
+			// spaces as combinators
+			var input = [],
+				results = [],
+				matcher = compile( selector.replace( rtrim, "$1" ) );
+
+			return matcher[ expando ] ?
+				markFunction(function( seed, matches, context, xml ) {
+					var elem,
+						unmatched = matcher( seed, null, xml, [] ),
+						i = seed.length;
+
+					// Match elements unmatched by `matcher`
+					while ( i-- ) {
+						if ( (elem = unmatched[i]) ) {
+							seed[i] = !(matches[i] = elem);
+						}
+					}
+				}) :
+				function( elem, context, xml ) {
+					input[0] = elem;
+					matcher( input, null, xml, results );
+					// Don't keep the element (issue #299)
+					input[0] = null;
+					return !results.pop();
+				};
+		}),
+
+		"has": markFunction(function( selector ) {
+			return function( elem ) {
+				return Sizzle( selector, elem ).length > 0;
+			};
+		}),
+
+		"contains": markFunction(function( text ) {
+			text = text.replace( runescape, funescape );
+			return function( elem ) {
+				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+			};
+		}),
+
+		// "Whether an element is represented by a :lang() selector
+		// is based solely on the element's language value
+		// being equal to the identifier C,
+		// or beginning with the identifier C immediately followed by "-".
+		// The matching of C against the element's language value is performed case-insensitively.
+		// The identifier C does not have to be a valid language name."
+		// http://www.w3.org/TR/selectors/#lang-pseudo
+		"lang": markFunction( function( lang ) {
+			// lang value must be a valid identifier
+			if ( !ridentifier.test(lang || "") ) {
+				Sizzle.error( "unsupported lang: " + lang );
+			}
+			lang = lang.replace( runescape, funescape ).toLowerCase();
+			return function( elem ) {
+				var elemLang;
+				do {
+					if ( (elemLang = documentIsHTML ?
+						elem.lang :
+						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+						elemLang = elemLang.toLowerCase();
+						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+					}
+				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+				return false;
+			};
+		}),
+
+		// Miscellaneous
+		"target": function( elem ) {
+			var hash = window.location && window.location.hash;
+			return hash && hash.slice( 1 ) === elem.id;
+		},
+
+		"root": function( elem ) {
+			return elem === docElem;
+		},
+
+		"focus": function( elem ) {
+			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+		},
+
+		// Boolean properties
+		"enabled": createDisabledPseudo( false ),
+		"disabled": createDisabledPseudo( true ),
+
+		"checked": function( elem ) {
+			// In CSS3, :checked should return both checked and selected elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			var nodeName = elem.nodeName.toLowerCase();
+			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+		},
+
+		"selected": function( elem ) {
+			// Accessing this property makes selected-by-default
+			// options in Safari work properly
+			if ( elem.parentNode ) {
+				elem.parentNode.selectedIndex;
+			}
+
+			return elem.selected === true;
+		},
+
+		// Contents
+		"empty": function( elem ) {
+			// http://www.w3.org/TR/selectors/#empty-pseudo
+			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+			//   but not by others (comment: 8; processing instruction: 7; etc.)
+			// nodeType < 6 works because attributes (2) do not appear as children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				if ( elem.nodeType < 6 ) {
+					return false;
+				}
+			}
+			return true;
+		},
+
+		"parent": function( elem ) {
+			return !Expr.pseudos["empty"]( elem );
+		},
+
+		// Element/input types
+		"header": function( elem ) {
+			return rheader.test( elem.nodeName );
+		},
+
+		"input": function( elem ) {
+			return rinputs.test( elem.nodeName );
+		},
+
+		"button": function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return name === "input" && elem.type === "button" || name === "button";
+		},
+
+		"text": function( elem ) {
+			var attr;
+			return elem.nodeName.toLowerCase() === "input" &&
+				elem.type === "text" &&
+
+				// Support: IE<8
+				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+		},
+
+		// Position-in-collection
+		"first": createPositionalPseudo(function() {
+			return [ 0 ];
+		}),
+
+		"last": createPositionalPseudo(function( matchIndexes, length ) {
+			return [ length - 1 ];
+		}),
+
+		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			return [ argument < 0 ? argument + length : argument ];
+		}),
+
+		"even": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 0;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"odd": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 1;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; --i >= 0; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; ++i < length; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		})
+	}
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+	Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+	Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+	var matched, match, tokens, type,
+		soFar, groups, preFilters,
+		cached = tokenCache[ selector + " " ];
+
+	if ( cached ) {
+		return parseOnly ? 0 : cached.slice( 0 );
+	}
+
+	soFar = selector;
+	groups = [];
+	preFilters = Expr.preFilter;
+
+	while ( soFar ) {
+
+		// Comma and first run
+		if ( !matched || (match = rcomma.exec( soFar )) ) {
+			if ( match ) {
+				// Don't consume trailing commas as valid
+				soFar = soFar.slice( match[0].length ) || soFar;
+			}
+			groups.push( (tokens = []) );
+		}
+
+		matched = false;
+
+		// Combinators
+		if ( (match = rcombinators.exec( soFar )) ) {
+			matched = match.shift();
+			tokens.push({
+				value: matched,
+				// Cast descendant combinators to space
+				type: match[0].replace( rtrim, " " )
+			});
+			soFar = soFar.slice( matched.length );
+		}
+
+		// Filters
+		for ( type in Expr.filter ) {
+			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+				(match = preFilters[ type ]( match ))) ) {
+				matched = match.shift();
+				tokens.push({
+					value: matched,
+					type: type,
+					matches: match
+				});
+				soFar = soFar.slice( matched.length );
+			}
+		}
+
+		if ( !matched ) {
+			break;
+		}
+	}
+
+	// Return the length of the invalid excess
+	// if we're just parsing
+	// Otherwise, throw an error or return tokens
+	return parseOnly ?
+		soFar.length :
+		soFar ?
+			Sizzle.error( selector ) :
+			// Cache the tokens
+			tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+	var i = 0,
+		len = tokens.length,
+		selector = "";
+	for ( ; i < len; i++ ) {
+		selector += tokens[i].value;
+	}
+	return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+	var dir = combinator.dir,
+		skip = combinator.next,
+		key = skip || dir,
+		checkNonElements = base && key === "parentNode",
+		doneName = done++;
+
+	return combinator.first ?
+		// Check against closest ancestor/preceding element
+		function( elem, context, xml ) {
+			while ( (elem = elem[ dir ]) ) {
+				if ( elem.nodeType === 1 || checkNonElements ) {
+					return matcher( elem, context, xml );
+				}
+			}
+		} :
+
+		// Check against all ancestor/preceding elements
+		function( elem, context, xml ) {
+			var oldCache, uniqueCache, outerCache,
+				newCache = [ dirruns, doneName ];
+
+			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+			if ( xml ) {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						if ( matcher( elem, context, xml ) ) {
+							return true;
+						}
+					}
+				}
+			} else {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+						// Support: IE <9 only
+						// Defend against cloned attroperties (jQuery gh-1709)
+						uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+						if ( skip && skip === elem.nodeName.toLowerCase() ) {
+							elem = elem[ dir ] || elem;
+						} else if ( (oldCache = uniqueCache[ key ]) &&
+							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+							// Assign to newCache so results back-propagate to previous elements
+							return (newCache[ 2 ] = oldCache[ 2 ]);
+						} else {
+							// Reuse newcache so results back-propagate to previous elements
+							uniqueCache[ key ] = newCache;
+
+							// A match means we're done; a fail means we have to keep checking
+							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+								return true;
+							}
+						}
+					}
+				}
+			}
+		};
+}
+
+function elementMatcher( matchers ) {
+	return matchers.length > 1 ?
+		function( elem, context, xml ) {
+			var i = matchers.length;
+			while ( i-- ) {
+				if ( !matchers[i]( elem, context, xml ) ) {
+					return false;
+				}
+			}
+			return true;
+		} :
+		matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+	var i = 0,
+		len = contexts.length;
+	for ( ; i < len; i++ ) {
+		Sizzle( selector, contexts[i], results );
+	}
+	return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+	var elem,
+		newUnmatched = [],
+		i = 0,
+		len = unmatched.length,
+		mapped = map != null;
+
+	for ( ; i < len; i++ ) {
+		if ( (elem = unmatched[i]) ) {
+			if ( !filter || filter( elem, context, xml ) ) {
+				newUnmatched.push( elem );
+				if ( mapped ) {
+					map.push( i );
+				}
+			}
+		}
+	}
+
+	return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+	if ( postFilter && !postFilter[ expando ] ) {
+		postFilter = setMatcher( postFilter );
+	}
+	if ( postFinder && !postFinder[ expando ] ) {
+		postFinder = setMatcher( postFinder, postSelector );
+	}
+	return markFunction(function( seed, results, context, xml ) {
+		var temp, i, elem,
+			preMap = [],
+			postMap = [],
+			preexisting = results.length,
+
+			// Get initial elements from seed or context
+			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+			// Prefilter to get matcher input, preserving a map for seed-results synchronization
+			matcherIn = preFilter && ( seed || !selector ) ?
+				condense( elems, preMap, preFilter, context, xml ) :
+				elems,
+
+			matcherOut = matcher ?
+				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+					// ...intermediate processing is necessary
+					[] :
+
+					// ...otherwise use results directly
+					results :
+				matcherIn;
+
+		// Find primary matches
+		if ( matcher ) {
+			matcher( matcherIn, matcherOut, context, xml );
+		}
+
+		// Apply postFilter
+		if ( postFilter ) {
+			temp = condense( matcherOut, postMap );
+			postFilter( temp, [], context, xml );
+
+			// Un-match failing elements by moving them back to matcherIn
+			i = temp.length;
+			while ( i-- ) {
+				if ( (elem = temp[i]) ) {
+					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+				}
+			}
+		}
+
+		if ( seed ) {
+			if ( postFinder || preFilter ) {
+				if ( postFinder ) {
+					// Get the final matcherOut by condensing this intermediate into postFinder contexts
+					temp = [];
+					i = matcherOut.length;
+					while ( i-- ) {
+						if ( (elem = matcherOut[i]) ) {
+							// Restore matcherIn since elem is not yet a final match
+							temp.push( (matcherIn[i] = elem) );
+						}
+					}
+					postFinder( null, (matcherOut = []), temp, xml );
+				}
+
+				// Move matched elements from seed to results to keep them synchronized
+				i = matcherOut.length;
+				while ( i-- ) {
+					if ( (elem = matcherOut[i]) &&
+						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+						seed[temp] = !(results[temp] = elem);
+					}
+				}
+			}
+
+		// Add elements to results, through postFinder if defined
+		} else {
+			matcherOut = condense(
+				matcherOut === results ?
+					matcherOut.splice( preexisting, matcherOut.length ) :
+					matcherOut
+			);
+			if ( postFinder ) {
+				postFinder( null, results, matcherOut, xml );
+			} else {
+				push.apply( results, matcherOut );
+			}
+		}
+	});
+}
+
+function matcherFromTokens( tokens ) {
+	var checkContext, matcher, j,
+		len = tokens.length,
+		leadingRelative = Expr.relative[ tokens[0].type ],
+		implicitRelative = leadingRelative || Expr.relative[" "],
+		i = leadingRelative ? 1 : 0,
+
+		// The foundational matcher ensures that elements are reachable from top-level context(s)
+		matchContext = addCombinator( function( elem ) {
+			return elem === checkContext;
+		}, implicitRelative, true ),
+		matchAnyContext = addCombinator( function( elem ) {
+			return indexOf( checkContext, elem ) > -1;
+		}, implicitRelative, true ),
+		matchers = [ function( elem, context, xml ) {
+			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+				(checkContext = context).nodeType ?
+					matchContext( elem, context, xml ) :
+					matchAnyContext( elem, context, xml ) );
+			// Avoid hanging onto element (issue #299)
+			checkContext = null;
+			return ret;
+		} ];
+
+	for ( ; i < len; i++ ) {
+		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+		} else {
+			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+			// Return special upon seeing a positional matcher
+			if ( matcher[ expando ] ) {
+				// Find the next relative operator (if any) for proper handling
+				j = ++i;
+				for ( ; j < len; j++ ) {
+					if ( Expr.relative[ tokens[j].type ] ) {
+						break;
+					}
+				}
+				return setMatcher(
+					i > 1 && elementMatcher( matchers ),
+					i > 1 && toSelector(
+						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
+						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+					).replace( rtrim, "$1" ),
+					matcher,
+					i < j && matcherFromTokens( tokens.slice( i, j ) ),
+					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+					j < len && toSelector( tokens )
+				);
+			}
+			matchers.push( matcher );
+		}
+	}
+
+	return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+	var bySet = setMatchers.length > 0,
+		byElement = elementMatchers.length > 0,
+		superMatcher = function( seed, context, xml, results, outermost ) {
+			var elem, j, matcher,
+				matchedCount = 0,
+				i = "0",
+				unmatched = seed && [],
+				setMatched = [],
+				contextBackup = outermostContext,
+				// We must always have either seed elements or outermost context
+				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+				// Use integer dirruns iff this is the outermost matcher
+				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+				len = elems.length;
+
+			if ( outermost ) {
+				outermostContext = context === document || context || outermost;
+			}
+
+			// Add elements passing elementMatchers directly to results
+			// Support: IE<9, Safari
+			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+				if ( byElement && elem ) {
+					j = 0;
+					if ( !context && elem.ownerDocument !== document ) {
+						setDocument( elem );
+						xml = !documentIsHTML;
+					}
+					while ( (matcher = elementMatchers[j++]) ) {
+						if ( matcher( elem, context || document, xml) ) {
+							results.push( elem );
+							break;
+						}
+					}
+					if ( outermost ) {
+						dirruns = dirrunsUnique;
+					}
+				}
+
+				// Track unmatched elements for set filters
+				if ( bySet ) {
+					// They will have gone through all possible matchers
+					if ( (elem = !matcher && elem) ) {
+						matchedCount--;
+					}
+
+					// Lengthen the array for every element, matched or not
+					if ( seed ) {
+						unmatched.push( elem );
+					}
+				}
+			}
+
+			// `i` is now the count of elements visited above, and adding it to `matchedCount`
+			// makes the latter nonnegative.
+			matchedCount += i;
+
+			// Apply set filters to unmatched elements
+			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+			// no element matchers and no seed.
+			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
+			// numerically zero.
+			if ( bySet && i !== matchedCount ) {
+				j = 0;
+				while ( (matcher = setMatchers[j++]) ) {
+					matcher( unmatched, setMatched, context, xml );
+				}
+
+				if ( seed ) {
+					// Reintegrate element matches to eliminate the need for sorting
+					if ( matchedCount > 0 ) {
+						while ( i-- ) {
+							if ( !(unmatched[i] || setMatched[i]) ) {
+								setMatched[i] = pop.call( results );
+							}
+						}
+					}
+
+					// Discard index placeholder values to get only actual matches
+					setMatched = condense( setMatched );
+				}
+
+				// Add matches to results
+				push.apply( results, setMatched );
+
+				// Seedless set matches succeeding multiple successful matchers stipulate sorting
+				if ( outermost && !seed && setMatched.length > 0 &&
+					( matchedCount + setMatchers.length ) > 1 ) {
+
+					Sizzle.uniqueSort( results );
+				}
+			}
+
+			// Override manipulation of globals by nested matchers
+			if ( outermost ) {
+				dirruns = dirrunsUnique;
+				outermostContext = contextBackup;
+			}
+
+			return unmatched;
+		};
+
+	return bySet ?
+		markFunction( superMatcher ) :
+		superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+	var i,
+		setMatchers = [],
+		elementMatchers = [],
+		cached = compilerCache[ selector + " " ];
+
+	if ( !cached ) {
+		// Generate a function of recursive functions that can be used to check each element
+		if ( !match ) {
+			match = tokenize( selector );
+		}
+		i = match.length;
+		while ( i-- ) {
+			cached = matcherFromTokens( match[i] );
+			if ( cached[ expando ] ) {
+				setMatchers.push( cached );
+			} else {
+				elementMatchers.push( cached );
+			}
+		}
+
+		// Cache the compiled function
+		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+		// Save selector and tokenization
+		cached.selector = selector;
+	}
+	return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+	var i, tokens, token, type, find,
+		compiled = typeof selector === "function" && selector,
+		match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+	results = results || [];
+
+	// Try to minimize operations if there is only one selector in the list and no seed
+	// (the latter of which guarantees us context)
+	if ( match.length === 1 ) {
+
+		// Reduce context if the leading compound selector is an ID
+		tokens = match[0] = match[0].slice( 0 );
+		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+				support.getById && context.nodeType === 9 && documentIsHTML &&
+				Expr.relative[ tokens[1].type ] ) {
+
+			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+			if ( !context ) {
+				return results;
+
+			// Precompiled matchers will still verify ancestry, so step up a level
+			} else if ( compiled ) {
+				context = context.parentNode;
+			}
+
+			selector = selector.slice( tokens.shift().value.length );
+		}
+
+		// Fetch a seed set for right-to-left matching
+		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+		while ( i-- ) {
+			token = tokens[i];
+
+			// Abort if we hit a combinator
+			if ( Expr.relative[ (type = token.type) ] ) {
+				break;
+			}
+			if ( (find = Expr.find[ type ]) ) {
+				// Search, expanding context for leading sibling combinators
+				if ( (seed = find(
+					token.matches[0].replace( runescape, funescape ),
+					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+				)) ) {
+
+					// If seed is empty or no tokens remain, we can return early
+					tokens.splice( i, 1 );
+					selector = seed.length && toSelector( tokens );
+					if ( !selector ) {
+						push.apply( results, seed );
+						return results;
+					}
+
+					break;
+				}
+			}
+		}
+	}
+
+	// Compile and execute a filtering function if one is not provided
+	// Provide `match` to avoid retokenization if we modified the selector above
+	( compiled || compile( selector, match ) )(
+		seed,
+		context,
+		!documentIsHTML,
+		results,
+		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+	);
+	return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( el ) {
+	// Should return 1, but returns 4 (following)
+	return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( el ) {
+	el.innerHTML = "<a href='#'></a>";
+	return el.firstChild.getAttribute("href") === "#" ;
+}) ) {
+	addHandle( "type|href|height|width", function( elem, name, isXML ) {
+		if ( !isXML ) {
+			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+		}
+	});
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( el ) {
+	el.innerHTML = "<input/>";
+	el.firstChild.setAttribute( "value", "" );
+	return el.firstChild.getAttribute( "value" ) === "";
+}) ) {
+	addHandle( "value", function( elem, name, isXML ) {
+		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+			return elem.defaultValue;
+		}
+	});
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( el ) {
+	return el.getAttribute("disabled") == null;
+}) ) {
+	addHandle( booleans, function( elem, name, isXML ) {
+		var val;
+		if ( !isXML ) {
+			return elem[ name ] === true ? name.toLowerCase() :
+					(val = elem.getAttributeNode( name )) && val.specified ?
+					val.value :
+				null;
+		}
+	});
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+
+
+
+var dir = function( elem, dir, until ) {
+	var matched = [],
+		truncate = until !== undefined;
+
+	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+		if ( elem.nodeType === 1 ) {
+			if ( truncate && jQuery( elem ).is( until ) ) {
+				break;
+			}
+			matched.push( elem );
+		}
+	}
+	return matched;
+};
+
+
+var siblings = function( n, elem ) {
+	var matched = [];
+
+	for ( ; n; n = n.nextSibling ) {
+		if ( n.nodeType === 1 && n !== elem ) {
+			matched.push( n );
+		}
+	}
+
+	return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+	if ( jQuery.isFunction( qualifier ) ) {
+		return jQuery.grep( elements, function( elem, i ) {
+			return !!qualifier.call( elem, i, elem ) !== not;
+		} );
+
+	}
+
+	if ( qualifier.nodeType ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( elem === qualifier ) !== not;
+		} );
+
+	}
+
+	if ( typeof qualifier === "string" ) {
+		if ( risSimple.test( qualifier ) ) {
+			return jQuery.filter( qualifier, elements, not );
+		}
+
+		qualifier = jQuery.filter( qualifier, elements );
+	}
+
+	return jQuery.grep( elements, function( elem ) {
+		return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
+	} );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+	var elem = elems[ 0 ];
+
+	if ( not ) {
+		expr = ":not(" + expr + ")";
+	}
+
+	return elems.length === 1 && elem.nodeType === 1 ?
+		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+			return elem.nodeType === 1;
+		} ) );
+};
+
+jQuery.fn.extend( {
+	find: function( selector ) {
+		var i, ret,
+			len = this.length,
+			self = this;
+
+		if ( typeof selector !== "string" ) {
+			return this.pushStack( jQuery( selector ).filter( function() {
+				for ( i = 0; i < len; i++ ) {
+					if ( jQuery.contains( self[ i ], this ) ) {
+						return true;
+					}
+				}
+			} ) );
+		}
+
+		ret = this.pushStack( [] );
+
+		for ( i = 0; i < len; i++ ) {
+			jQuery.find( selector, self[ i ], ret );
+		}
+
+		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+	},
+	filter: function( selector ) {
+		return this.pushStack( winnow( this, selector || [], false ) );
+	},
+	not: function( selector ) {
+		return this.pushStack( winnow( this, selector || [], true ) );
+	},
+	is: function( selector ) {
+		return !!winnow(
+			this,
+
+			// If this is a positional/relative selector, check membership in the returned set
+			// so $("p:first").is("p:last") won't return true for a doc with two "p".
+			typeof selector === "string" && rneedsContext.test( selector ) ?
+				jQuery( selector ) :
+				selector || [],
+			false
+		).length;
+	}
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+	// A simple way to check for HTML strings
+	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+	// Strict HTML recognition (#11290: must start with <)
+	// Shortcut simple #id case for speed
+	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+	init = jQuery.fn.init = function( selector, context, root ) {
+		var match, elem;
+
+		// HANDLE: $(""), $(null), $(undefined), $(false)
+		if ( !selector ) {
+			return this;
+		}
+
+		// Method init() accepts an alternate rootjQuery
+		// so migrate can support jQuery.sub (gh-2101)
+		root = root || rootjQuery;
+
+		// Handle HTML strings
+		if ( typeof selector === "string" ) {
+			if ( selector[ 0 ] === "<" &&
+				selector[ selector.length - 1 ] === ">" &&
+				selector.length >= 3 ) {
+
+				// Assume that strings that start and end with <> are HTML and skip the regex check
+				match = [ null, selector, null ];
+
+			} else {
+				match = rquickExpr.exec( selector );
+			}
+
+			// Match html or make sure no context is specified for #id
+			if ( match && ( match[ 1 ] || !context ) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[ 1 ] ) {
+					context = context instanceof jQuery ? context[ 0 ] : context;
+
+					// Option to run scripts is true for back-compat
+					// Intentionally let the error be thrown if parseHTML is not present
+					jQuery.merge( this, jQuery.parseHTML(
+						match[ 1 ],
+						context && context.nodeType ? context.ownerDocument || context : document,
+						true
+					) );
+
+					// HANDLE: $(html, props)
+					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+						for ( match in context ) {
+
+							// Properties of context are called as methods if possible
+							if ( jQuery.isFunction( this[ match ] ) ) {
+								this[ match ]( context[ match ] );
+
+							// ...and otherwise set as attributes
+							} else {
+								this.attr( match, context[ match ] );
+							}
+						}
+					}
+
+					return this;
+
+				// HANDLE: $(#id)
+				} else {
+					elem = document.getElementById( match[ 2 ] );
+
+					if ( elem ) {
+
+						// Inject the element directly into the jQuery object
+						this[ 0 ] = elem;
+						this.length = 1;
+					}
+					return this;
+				}
+
+			// HANDLE: $(expr, $(...))
+			} else if ( !context || context.jquery ) {
+				return ( context || root ).find( selector );
+
+			// HANDLE: $(expr, context)
+			// (which is just equivalent to: $(context).find(expr)
+			} else {
+				return this.constructor( context ).find( selector );
+			}
+
+		// HANDLE: $(DOMElement)
+		} else if ( selector.nodeType ) {
+			this[ 0 ] = selector;
+			this.length = 1;
+			return this;
+
+		// HANDLE: $(function)
+		// Shortcut for document ready
+		} else if ( jQuery.isFunction( selector ) ) {
+			return root.ready !== undefined ?
+				root.ready( selector ) :
+
+				// Execute immediately if ready is not present
+				selector( jQuery );
+		}
+
+		return jQuery.makeArray( selector, this );
+	};
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+	// Methods guaranteed to produce a unique set when starting from a unique set
+	guaranteedUnique = {
+		children: true,
+		contents: true,
+		next: true,
+		prev: true
+	};
+
+jQuery.fn.extend( {
+	has: function( target ) {
+		var targets = jQuery( target, this ),
+			l = targets.length;
+
+		return this.filter( function() {
+			var i = 0;
+			for ( ; i < l; i++ ) {
+				if ( jQuery.contains( this, targets[ i ] ) ) {
+					return true;
+				}
+			}
+		} );
+	},
+
+	closest: function( selectors, context ) {
+		var cur,
+			i = 0,
+			l = this.length,
+			matched = [],
+			targets = typeof selectors !== "string" && jQuery( selectors );
+
+		// Positional selectors never match, since there's no _selection_ context
+		if ( !rneedsContext.test( selectors ) ) {
+			for ( ; i < l; i++ ) {
+				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+					// Always skip document fragments
+					if ( cur.nodeType < 11 && ( targets ?
+						targets.index( cur ) > -1 :
+
+						// Don't pass non-elements to Sizzle
+						cur.nodeType === 1 &&
+							jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+						matched.push( cur );
+						break;
+					}
+				}
+			}
+		}
+
+		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+	},
+
+	// Determine the position of an element within the set
+	index: function( elem ) {
+
+		// No argument, return index in parent
+		if ( !elem ) {
+			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+		}
+
+		// Index in selector
+		if ( typeof elem === "string" ) {
+			return indexOf.call( jQuery( elem ), this[ 0 ] );
+		}
+
+		// Locate the position of the desired element
+		return indexOf.call( this,
+
+			// If it receives a jQuery object, the first element is used
+			elem.jquery ? elem[ 0 ] : elem
+		);
+	},
+
+	add: function( selector, context ) {
+		return this.pushStack(
+			jQuery.uniqueSort(
+				jQuery.merge( this.get(), jQuery( selector, context ) )
+			)
+		);
+	},
+
+	addBack: function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	}
+} );
+
+function sibling( cur, dir ) {
+	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+	return cur;
+}
+
+jQuery.each( {
+	parent: function( elem ) {
+		var parent = elem.parentNode;
+		return parent && parent.nodeType !== 11 ? parent : null;
+	},
+	parents: function( elem ) {
+		return dir( elem, "parentNode" );
+	},
+	parentsUntil: function( elem, i, until ) {
+		return dir( elem, "parentNode", until );
+	},
+	next: function( elem ) {
+		return sibling( elem, "nextSibling" );
+	},
+	prev: function( elem ) {
+		return sibling( elem, "previousSibling" );
+	},
+	nextAll: function( elem ) {
+		return dir( elem, "nextSibling" );
+	},
+	prevAll: function( elem ) {
+		return dir( elem, "previousSibling" );
+	},
+	nextUntil: function( elem, i, until ) {
+		return dir( elem, "nextSibling", until );
+	},
+	prevUntil: function( elem, i, until ) {
+		return dir( elem, "previousSibling", until );
+	},
+	siblings: function( elem ) {
+		return siblings( ( elem.parentNode || {} ).firstChild, elem );
+	},
+	children: function( elem ) {
+		return siblings( elem.firstChild );
+	},
+	contents: function( elem ) {
+		return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+	}
+}, function( name, fn ) {
+	jQuery.fn[ name ] = function( until, selector ) {
+		var matched = jQuery.map( this, fn, until );
+
+		if ( name.slice( -5 ) !== "Until" ) {
+			selector = until;
+		}
+
+		if ( selector && typeof selector === "string" ) {
+			matched = jQuery.filter( selector, matched );
+		}
+
+		if ( this.length > 1 ) {
+
+			// Remove duplicates
+			if ( !guaranteedUnique[ name ] ) {
+				jQuery.uniqueSort( matched );
+			}
+
+			// Reverse order for parents* and prev-derivatives
+			if ( rparentsprev.test( name ) ) {
+				matched.reverse();
+			}
+		}
+
+		return this.pushStack( matched );
+	};
+} );
+var rnotwhite = ( /\S+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+	var object = {};
+	jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+		object[ flag ] = true;
+	} );
+	return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *	options: an optional list of space-separated options that will change how
+ *			the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *	once:			will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *	memory:			will keep track of previous values and will call any callback added
+ *					after the list has been fired right away with the latest "memorized"
+ *					values (like a Deferred)
+ *
+ *	unique:			will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *	stopOnFalse:	interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+	// Convert options from String-formatted to Object-formatted if needed
+	// (we check in cache first)
+	options = typeof options === "string" ?
+		createOptions( options ) :
+		jQuery.extend( {}, options );
+
+	var // Flag to know if list is currently firing
+		firing,
+
+		// Last fire value for non-forgettable lists
+		memory,
+
+		// Flag to know if list was already fired
+		fired,
+
+		// Flag to prevent firing
+		locked,
+
+		// Actual callback list
+		list = [],
+
+		// Queue of execution data for repeatable lists
+		queue = [],
+
+		// Index of currently firing callback (modified by add/remove as needed)
+		firingIndex = -1,
+
+		// Fire callbacks
+		fire = function() {
+
+			// Enforce single-firing
+			locked = options.once;
+
+			// Execute callbacks for all pending executions,
+			// respecting firingIndex overrides and runtime changes
+			fired = firing = true;
+			for ( ; queue.length; firingIndex = -1 ) {
+				memory = queue.shift();
+				while ( ++firingIndex < list.length ) {
+
+					// Run callback and check for early termination
+					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+						options.stopOnFalse ) {
+
+						// Jump to end and forget the data so .add doesn't re-fire
+						firingIndex = list.length;
+						memory = false;
+					}
+				}
+			}
+
+			// Forget the data if we're done with it
+			if ( !options.memory ) {
+				memory = false;
+			}
+
+			firing = false;
+
+			// Clean up if we're done firing for good
+			if ( locked ) {
+
+				// Keep an empty list if we have data for future add calls
+				if ( memory ) {
+					list = [];
+
+				// Otherwise, this object is spent
+				} else {
+					list = "";
+				}
+			}
+		},
+
+		// Actual Callbacks object
+		self = {
+
+			// Add a callback or a collection of callbacks to the list
+			add: function() {
+				if ( list ) {
+
+					// If we have memory from a past run, we should fire after adding
+					if ( memory && !firing ) {
+						firingIndex = list.length - 1;
+						queue.push( memory );
+					}
+
+					( function add( args ) {
+						jQuery.each( args, function( _, arg ) {
+							if ( jQuery.isFunction( arg ) ) {
+								if ( !options.unique || !self.has( arg ) ) {
+									list.push( arg );
+								}
+							} else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
+
+								// Inspect recursively
+								add( arg );
+							}
+						} );
+					} )( arguments );
+
+					if ( memory && !firing ) {
+						fire();
+					}
+				}
+				return this;
+			},
+
+			// Remove a callback from the list
+			remove: function() {
+				jQuery.each( arguments, function( _, arg ) {
+					var index;
+					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+						list.splice( index, 1 );
+
+						// Handle firing indexes
+						if ( index <= firingIndex ) {
+							firingIndex--;
+						}
+					}
+				} );
+				return this;
+			},
+
+			// Check if a given callback is in the list.
+			// If no argument is given, return whether or not list has callbacks attached.
+			has: function( fn ) {
+				return fn ?
+					jQuery.inArray( fn, list ) > -1 :
+					list.length > 0;
+			},
+
+			// Remove all callbacks from the list
+			empty: function() {
+				if ( list ) {
+					list = [];
+				}
+				return this;
+			},
+
+			// Disable .fire and .add
+			// Abort any current/pending executions
+			// Clear all callbacks and values
+			disable: function() {
+				locked = queue = [];
+				list = memory = "";
+				return this;
+			},
+			disabled: function() {
+				return !list;
+			},
+
+			// Disable .fire
+			// Also disable .add unless we have memory (since it would have no effect)
+			// Abort any pending executions
+			lock: function() {
+				locked = queue = [];
+				if ( !memory && !firing ) {
+					list = memory = "";
+				}
+				return this;
+			},
+			locked: function() {
+				return !!locked;
+			},
+
+			// Call all callbacks with the given context and arguments
+			fireWith: function( context, args ) {
+				if ( !locked ) {
+					args = args || [];
+					args = [ context, args.slice ? args.slice() : args ];
+					queue.push( args );
+					if ( !firing ) {
+						fire();
+					}
+				}
+				return this;
+			},
+
+			// Call all the callbacks with the given arguments
+			fire: function() {
+				self.fireWith( this, arguments );
+				return this;
+			},
+
+			// To know if the callbacks have already been called at least once
+			fired: function() {
+				return !!fired;
+			}
+		};
+
+	return self;
+};
+
+
+function Identity( v ) {
+	return v;
+}
+function Thrower( ex ) {
+	throw ex;
+}
+
+function adoptValue( value, resolve, reject ) {
+	var method;
+
+	try {
+
+		// Check for promise aspect first to privilege synchronous behavior
+		if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
+			method.call( value ).done( resolve ).fail( reject );
+
+		// Other thenables
+		} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
+			method.call( value, resolve, reject );
+
+		// Other non-thenables
+		} else {
+
+			// Support: Android 4.0 only
+			// Strict mode functions invoked without .call/.apply get global-object context
+			resolve.call( undefined, value );
+		}
+
+	// For Promises/A+, convert exceptions into rejections
+	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+	// Deferred#then to conditionally suppress rejection.
+	} catch ( value ) {
+
+		// Support: Android 4.0 only
+		// Strict mode functions invoked without .call/.apply get global-object context
+		reject.call( undefined, value );
+	}
+}
+
+jQuery.extend( {
+
+	Deferred: function( func ) {
+		var tuples = [
+
+				// action, add listener, callbacks,
+				// ... .then handlers, argument index, [final state]
+				[ "notify", "progress", jQuery.Callbacks( "memory" ),
+					jQuery.Callbacks( "memory" ), 2 ],
+				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
+					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
+					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+			],
+			state = "pending",
+			promise = {
+				state: function() {
+					return state;
+				},
+				always: function() {
+					deferred.done( arguments ).fail( arguments );
+					return this;
+				},
+				"catch": function( fn ) {
+					return promise.then( null, fn );
+				},
+
+				// Keep pipe for back-compat
+				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+					var fns = arguments;
+
+					return jQuery.Deferred( function( newDefer ) {
+						jQuery.each( tuples, function( i, tuple ) {
+
+							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
+							var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+							// deferred.progress(function() { bind to newDefer or newDefer.notify })
+							// deferred.done(function() { bind to newDefer or newDefer.resolve })
+							// deferred.fail(function() { bind to newDefer or newDefer.reject })
+							deferred[ tuple[ 1 ] ]( function() {
+								var returned = fn && fn.apply( this, arguments );
+								if ( returned && jQuery.isFunction( returned.promise ) ) {
+									returned.promise()
+										.progress( newDefer.notify )
+										.done( newDefer.resolve )
+										.fail( newDefer.reject );
+								} else {
+									newDefer[ tuple[ 0 ] + "With" ](
+										this,
+										fn ? [ returned ] : arguments
+									);
+								}
+							} );
+						} );
+						fns = null;
+					} ).promise();
+				},
+				then: function( onFulfilled, onRejected, onProgress ) {
+					var maxDepth = 0;
+					function resolve( depth, deferred, handler, special ) {
+						return function() {
+							var that = this,
+								args = arguments,
+								mightThrow = function() {
+									var returned, then;
+
+									// Support: Promises/A+ section 2.3.3.3.3
+									// https://promisesaplus.com/#point-59
+									// Ignore double-resolution attempts
+									if ( depth < maxDepth ) {
+										return;
+									}
+
+									returned = handler.apply( that, args );
+
+									// Support: Promises/A+ section 2.3.1
+									// https://promisesaplus.com/#point-48
+									if ( returned === deferred.promise() ) {
+										throw new TypeError( "Thenable self-resolution" );
+									}
+
+									// Support: Promises/A+ sections 2.3.3.1, 3.5
+									// https://promisesaplus.com/#point-54
+									// https://promisesaplus.com/#point-75
+									// Retrieve `then` only once
+									then = returned &&
+
+										// Support: Promises/A+ section 2.3.4
+										// https://promisesaplus.com/#point-64
+										// Only check objects and functions for thenability
+										( typeof returned === "object" ||
+											typeof returned === "function" ) &&
+										returned.then;
+
+									// Handle a returned thenable
+									if ( jQuery.isFunction( then ) ) {
+
+										// Special processors (notify) just wait for resolution
+										if ( special ) {
+											then.call(
+												returned,
+												resolve( maxDepth, deferred, Identity, special ),
+												resolve( maxDepth, deferred, Thrower, special )
+											);
+
+										// Normal processors (resolve) also hook into progress
+										} else {
+
+											// ...and disregard older resolution values
+											maxDepth++;
+
+											then.call(
+												returned,
+												resolve( maxDepth, deferred, Identity, special ),
+												resolve( maxDepth, deferred, Thrower, special ),
+												resolve( maxDepth, deferred, Identity,
+													deferred.notifyWith )
+											);
+										}
+
+									// Handle all other returned values
+									} else {
+
+										// Only substitute handlers pass on context
+										// and multiple values (non-spec behavior)
+										if ( handler !== Identity ) {
+											that = undefined;
+											args = [ returned ];
+										}
+
+										// Process the value(s)
+										// Default process is resolve
+										( special || deferred.resolveWith )( that, args );
+									}
+								},
+
+								// Only normal processors (resolve) catch and reject exceptions
+								process = special ?
+									mightThrow :
+									function() {
+										try {
+											mightThrow();
+										} catch ( e ) {
+
+											if ( jQuery.Deferred.exceptionHook ) {
+												jQuery.Deferred.exceptionHook( e,
+													process.stackTrace );
+											}
+
+											// Support: Promises/A+ section 2.3.3.3.4.1
+											// https://promisesaplus.com/#point-61
+											// Ignore post-resolution exceptions
+											if ( depth + 1 >= maxDepth ) {
+
+												// Only substitute handlers pass on context
+												// and multiple values (non-spec behavior)
+												if ( handler !== Thrower ) {
+													that = undefined;
+													args = [ e ];
+												}
+
+												deferred.rejectWith( that, args );
+											}
+										}
+									};
+
+							// Support: Promises/A+ section 2.3.3.3.1
+							// https://promisesaplus.com/#point-57
+							// Re-resolve promises immediately to dodge false rejection from
+							// subsequent errors
+							if ( depth ) {
+								process();
+							} else {
+
+								// Call an optional hook to record the stack, in case of exception
+								// since it's otherwise lost when execution goes async
+								if ( jQuery.Deferred.getStackHook ) {
+									process.stackTrace = jQuery.Deferred.getStackHook();
+								}
+								window.setTimeout( process );
+							}
+						};
+					}
+
+					return jQuery.Deferred( function( newDefer ) {
+
+						// progress_handlers.add( ... )
+						tuples[ 0 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								jQuery.isFunction( onProgress ) ?
+									onProgress :
+									Identity,
+								newDefer.notifyWith
+							)
+						);
+
+						// fulfilled_handlers.add( ... )
+						tuples[ 1 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								jQuery.isFunction( onFulfilled ) ?
+									onFulfilled :
+									Identity
+							)
+						);
+
+						// rejected_handlers.add( ... )
+						tuples[ 2 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								jQuery.isFunction( onRejected ) ?
+									onRejected :
+									Thrower
+							)
+						);
+					} ).promise();
+				},
+
+				// Get a promise for this deferred
+				// If obj is provided, the promise aspect is added to the object
+				promise: function( obj ) {
+					return obj != null ? jQuery.extend( obj, promise ) : promise;
+				}
+			},
+			deferred = {};
+
+		// Add list-specific methods
+		jQuery.each( tuples, function( i, tuple ) {
+			var list = tuple[ 2 ],
+				stateString = tuple[ 5 ];
+
+			// promise.progress = list.add
+			// promise.done = list.add
+			// promise.fail = list.add
+			promise[ tuple[ 1 ] ] = list.add;
+
+			// Handle state
+			if ( stateString ) {
+				list.add(
+					function() {
+
+						// state = "resolved" (i.e., fulfilled)
+						// state = "rejected"
+						state = stateString;
+					},
+
+					// rejected_callbacks.disable
+					// fulfilled_callbacks.disable
+					tuples[ 3 - i ][ 2 ].disable,
+
+					// progress_callbacks.lock
+					tuples[ 0 ][ 2 ].lock
+				);
+			}
+
+			// progress_handlers.fire
+			// fulfilled_handlers.fire
+			// rejected_handlers.fire
+			list.add( tuple[ 3 ].fire );
+
+			// deferred.notify = function() { deferred.notifyWith(...) }
+			// deferred.resolve = function() { deferred.resolveWith(...) }
+			// deferred.reject = function() { deferred.rejectWith(...) }
+			deferred[ tuple[ 0 ] ] = function() {
+				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+				return this;
+			};
+
+			// deferred.notifyWith = list.fireWith
+			// deferred.resolveWith = list.fireWith
+			// deferred.rejectWith = list.fireWith
+			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+		} );
+
+		// Make the deferred a promise
+		promise.promise( deferred );
+
+		// Call given func if any
+		if ( func ) {
+			func.call( deferred, deferred );
+		}
+
+		// All done!
+		return deferred;
+	},
+
+	// Deferred helper
+	when: function( singleValue ) {
+		var
+
+			// count of uncompleted subordinates
+			remaining = arguments.length,
+
+			// count of unprocessed arguments
+			i = remaining,
+
+			// subordinate fulfillment data
+			resolveContexts = Array( i ),
+			resolveValues = slice.call( arguments ),
+
+			// the master Deferred
+			master = jQuery.Deferred(),
+
+			// subordinate callback factory
+			updateFunc = function( i ) {
+				return function( value ) {
+					resolveContexts[ i ] = this;
+					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+					if ( !( --remaining ) ) {
+						master.resolveWith( resolveContexts, resolveValues );
+					}
+				};
+			};
+
+		// Single- and empty arguments are adopted like Promise.resolve
+		if ( remaining <= 1 ) {
+			adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );
+
+			// Use .then() to unwrap secondary thenables (cf. gh-3000)
+			if ( master.state() === "pending" ||
+				jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+				return master.then();
+			}
+		}
+
+		// Multiple arguments are aggregated like Promise.all array elements
+		while ( i-- ) {
+			adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+		}
+
+		return master.promise();
+	}
+} );
+
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+	// Support: IE 8 - 9 only
+	// Console exists when dev tools are open, which can happen at any time
+	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+	}
+};
+
+
+
+
+jQuery.readyException = function( error ) {
+	window.setTimeout( function() {
+		throw error;
+	} );
+};
+
+
+
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+	readyList
+		.then( fn )
+
+		// Wrap jQuery.readyException in a function so that the lookup
+		// happens at the time of error handling instead of callback
+		// registration.
+		.catch( function( error ) {
+			jQuery.readyException( error );
+		} );
+
+	return this;
+};
+
+jQuery.extend( {
+
+	// Is the DOM ready to be used? Set to true once it occurs.
+	isReady: false,
+
+	// A counter to track how many items to wait for before
+	// the ready event fires. See #6781
+	readyWait: 1,
+
+	// Hold (or release) the ready event
+	holdReady: function( hold ) {
+		if ( hold ) {
+			jQuery.readyWait++;
+		} else {
+			jQuery.ready( true );
+		}
+	},
+
+	// Handle when the DOM is ready
+	ready: function( wait ) {
+
+		// Abort if there are pending holds or we're already ready
+		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+			return;
+		}
+
+		// Remember that the DOM is ready
+		jQuery.isReady = true;
+
+		// If a normal DOM Ready event fired, decrement, and wait if need be
+		if ( wait !== true && --jQuery.readyWait > 0 ) {
+			return;
+		}
+
+		// If there are functions bound, to execute
+		readyList.resolveWith( document, [ jQuery ] );
+	}
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+	document.removeEventListener( "DOMContentLoaded", completed );
+	window.removeEventListener( "load", completed );
+	jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+	// Handle it asynchronously to allow scripts the opportunity to delay ready
+	window.setTimeout( jQuery.ready );
+
+} else {
+
+	// Use the handy event callback
+	document.addEventListener( "DOMContentLoaded", completed );
+
+	// A fallback to window.onload, that will always work
+	window.addEventListener( "load", completed );
+}
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+	var i = 0,
+		len = elems.length,
+		bulk = key == null;
+
+	// Sets many values
+	if ( jQuery.type( key ) === "object" ) {
+		chainable = true;
+		for ( i in key ) {
+			access( elems, fn, i, key[ i ], true, emptyGet, raw );
+		}
+
+	// Sets one value
+	} else if ( value !== undefined ) {
+		chainable = true;
+
+		if ( !jQuery.isFunction( value ) ) {
+			raw = true;
+		}
+
+		if ( bulk ) {
+
+			// Bulk operations run against the entire set
+			if ( raw ) {
+				fn.call( elems, value );
+				fn = null;
+
+			// ...except when executing function values
+			} else {
+				bulk = fn;
+				fn = function( elem, key, value ) {
+					return bulk.call( jQuery( elem ), value );
+				};
+			}
+		}
+
+		if ( fn ) {
+			for ( ; i < len; i++ ) {
+				fn(
+					elems[ i ], key, raw ?
+					value :
+					value.call( elems[ i ], i, fn( elems[ i ], key ) )
+				);
+			}
+		}
+	}
+
+	return chainable ?
+		elems :
+
+		// Gets
+		bulk ?
+			fn.call( elems ) :
+			len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+var acceptData = function( owner ) {
+
+	// Accepts only:
+	//  - Node
+	//    - Node.ELEMENT_NODE
+	//    - Node.DOCUMENT_NODE
+	//  - Object
+	//    - Any
+	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+	this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+	cache: function( owner ) {
+
+		// Check if the owner object already has a cache
+		var value = owner[ this.expando ];
+
+		// If not, create one
+		if ( !value ) {
+			value = {};
+
+			// We can accept data for non-element nodes in modern browsers,
+			// but we should not, see #8335.
+			// Always return an empty object.
+			if ( acceptData( owner ) ) {
+
+				// If it is a node unlikely to be stringify-ed or looped over
+				// use plain assignment
+				if ( owner.nodeType ) {
+					owner[ this.expando ] = value;
+
+				// Otherwise secure it in a non-enumerable property
+				// configurable must be true to allow the property to be
+				// deleted when data is removed
+				} else {
+					Object.defineProperty( owner, this.expando, {
+						value: value,
+						configurable: true
+					} );
+				}
+			}
+		}
+
+		return value;
+	},
+	set: function( owner, data, value ) {
+		var prop,
+			cache = this.cache( owner );
+
+		// Handle: [ owner, key, value ] args
+		// Always use camelCase key (gh-2257)
+		if ( typeof data === "string" ) {
+			cache[ jQuery.camelCase( data ) ] = value;
+
+		// Handle: [ owner, { properties } ] args
+		} else {
+
+			// Copy the properties one-by-one to the cache object
+			for ( prop in data ) {
+				cache[ jQuery.camelCase( prop ) ] = data[ prop ];
+			}
+		}
+		return cache;
+	},
+	get: function( owner, key ) {
+		return key === undefined ?
+			this.cache( owner ) :
+
+			// Always use camelCase key (gh-2257)
+			owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
+	},
+	access: function( owner, key, value ) {
+
+		// In cases where either:
+		//
+		//   1. No key was specified
+		//   2. A string key was specified, but no value provided
+		//
+		// Take the "read" path and allow the get method to determine
+		// which value to return, respectively either:
+		//
+		//   1. The entire cache object
+		//   2. The data stored at the key
+		//
+		if ( key === undefined ||
+				( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+			return this.get( owner, key );
+		}
+
+		// When the key is not a string, or both a key and value
+		// are specified, set or extend (existing objects) with either:
+		//
+		//   1. An object of properties
+		//   2. A key and value
+		//
+		this.set( owner, key, value );
+
+		// Since the "set" path can have two possible entry points
+		// return the expected data based on which path was taken[*]
+		return value !== undefined ? value : key;
+	},
+	remove: function( owner, key ) {
+		var i,
+			cache = owner[ this.expando ];
+
+		if ( cache === undefined ) {
+			return;
+		}
+
+		if ( key !== undefined ) {
+
+			// Support array or space separated string of keys
+			if ( jQuery.isArray( key ) ) {
+
+				// If key is an array of keys...
+				// We always set camelCase keys, so remove that.
+				key = key.map( jQuery.camelCase );
+			} else {
+				key = jQuery.camelCase( key );
+
+				// If a key with the spaces exists, use it.
+				// Otherwise, create an array by matching non-whitespace
+				key = key in cache ?
+					[ key ] :
+					( key.match( rnotwhite ) || [] );
+			}
+
+			i = key.length;
+
+			while ( i-- ) {
+				delete cache[ key[ i ] ];
+			}
+		}
+
+		// Remove the expando if there's no more data
+		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+			// Support: Chrome <=35 - 45
+			// Webkit & Blink performance suffers when deleting properties
+			// from DOM nodes, so set to undefined instead
+			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+			if ( owner.nodeType ) {
+				owner[ this.expando ] = undefined;
+			} else {
+				delete owner[ this.expando ];
+			}
+		}
+	},
+	hasData: function( owner ) {
+		var cache = owner[ this.expando ];
+		return cache !== undefined && !jQuery.isEmptyObject( cache );
+	}
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+//	Implementation Summary
+//
+//	1. Enforce API surface and semantic compatibility with 1.9.x branch
+//	2. Improve the module's maintainability by reducing the storage
+//		paths to a single mechanism.
+//	3. Use the same single mechanism to support "private" and "user" data.
+//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+//	5. Avoid exposing implementation details on user objects (eg. expando properties)
+//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+	rmultiDash = /[A-Z]/g;
+
+function dataAttr( elem, key, data ) {
+	var name;
+
+	// If nothing was found internally, try to fetch any
+	// data from the HTML5 data-* attribute
+	if ( data === undefined && elem.nodeType === 1 ) {
+		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+		data = elem.getAttribute( name );
+
+		if ( typeof data === "string" ) {
+			try {
+				data = data === "true" ? true :
+					data === "false" ? false :
+					data === "null" ? null :
+
+					// Only convert to a number if it doesn't change the string
+					+data + "" === data ? +data :
+					rbrace.test( data ) ? JSON.parse( data ) :
+					data;
+			} catch ( e ) {}
+
+			// Make sure we set the data so it isn't changed later
+			dataUser.set( elem, key, data );
+		} else {
+			data = undefined;
+		}
+	}
+	return data;
+}
+
+jQuery.extend( {
+	hasData: function( elem ) {
+		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+	},
+
+	data: function( elem, name, data ) {
+		return dataUser.access( elem, name, data );
+	},
+
+	removeData: function( elem, name ) {
+		dataUser.remove( elem, name );
+	},
+
+	// TODO: Now that all calls to _data and _removeData have been replaced
+	// with direct calls to dataPriv methods, these can be deprecated.
+	_data: function( elem, name, data ) {
+		return dataPriv.access( elem, name, data );
+	},
+
+	_removeData: function( elem, name ) {
+		dataPriv.remove( elem, name );
+	}
+} );
+
+jQuery.fn.extend( {
+	data: function( key, value ) {
+		var i, name, data,
+			elem = this[ 0 ],
+			attrs = elem && elem.attributes;
+
+		// Gets all values
+		if ( key === undefined ) {
+			if ( this.length ) {
+				data = dataUser.get( elem );
+
+				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+					i = attrs.length;
+					while ( i-- ) {
+
+						// Support: IE 11 only
+						// The attrs elements can be null (#14894)
+						if ( attrs[ i ] ) {
+							name = attrs[ i ].name;
+							if ( name.indexOf( "data-" ) === 0 ) {
+								name = jQuery.camelCase( name.slice( 5 ) );
+								dataAttr( elem, name, data[ name ] );
+							}
+						}
+					}
+					dataPriv.set( elem, "hasDataAttrs", true );
+				}
+			}
+
+			return data;
+		}
+
+		// Sets multiple values
+		if ( typeof key === "object" ) {
+			return this.each( function() {
+				dataUser.set( this, key );
+			} );
+		}
+
+		return access( this, function( value ) {
+			var data;
+
+			// The calling jQuery object (element matches) is not empty
+			// (and therefore has an element appears at this[ 0 ]) and the
+			// `value` parameter was not undefined. An empty jQuery object
+			// will result in `undefined` for elem = this[ 0 ] which will
+			// throw an exception if an attempt to read a data cache is made.
+			if ( elem && value === undefined ) {
+
+				// Attempt to get data from the cache
+				// The key will always be camelCased in Data
+				data = dataUser.get( elem, key );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// Attempt to "discover" the data in
+				// HTML5 custom data-* attrs
+				data = dataAttr( elem, key );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// We tried really hard, but the data doesn't exist.
+				return;
+			}
+
+			// Set the data...
+			this.each( function() {
+
+				// We always store the camelCased key
+				dataUser.set( this, key, value );
+			} );
+		}, null, value, arguments.length > 1, null, true );
+	},
+
+	removeData: function( key ) {
+		return this.each( function() {
+			dataUser.remove( this, key );
+		} );
+	}
+} );
+
+
+jQuery.extend( {
+	queue: function( elem, type, data ) {
+		var queue;
+
+		if ( elem ) {
+			type = ( type || "fx" ) + "queue";
+			queue = dataPriv.get( elem, type );
+
+			// Speed up dequeue by getting out quickly if this is just a lookup
+			if ( data ) {
+				if ( !queue || jQuery.isArray( data ) ) {
+					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+				} else {
+					queue.push( data );
+				}
+			}
+			return queue || [];
+		}
+	},
+
+	dequeue: function( elem, type ) {
+		type = type || "fx";
+
+		var queue = jQuery.queue( elem, type ),
+			startLength = queue.length,
+			fn = queue.shift(),
+			hooks = jQuery._queueHooks( elem, type ),
+			next = function() {
+				jQuery.dequeue( elem, type );
+			};
+
+		// If the fx queue is dequeued, always remove the progress sentinel
+		if ( fn === "inprogress" ) {
+			fn = queue.shift();
+			startLength--;
+		}
+
+		if ( fn ) {
+
+			// Add a progress sentinel to prevent the fx queue from being
+			// automatically dequeued
+			if ( type === "fx" ) {
+				queue.unshift( "inprogress" );
+			}
+
+			// Clear up the last queue stop function
+			delete hooks.stop;
+			fn.call( elem, next, hooks );
+		}
+
+		if ( !startLength && hooks ) {
+			hooks.empty.fire();
+		}
+	},
+
+	// Not public - generate a queueHooks object, or return the current one
+	_queueHooks: function( elem, type ) {
+		var key = type + "queueHooks";
+		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+			empty: jQuery.Callbacks( "once memory" ).add( function() {
+				dataPriv.remove( elem, [ type + "queue", key ] );
+			} )
+		} );
+	}
+} );
+
+jQuery.fn.extend( {
+	queue: function( type, data ) {
+		var setter = 2;
+
+		if ( typeof type !== "string" ) {
+			data = type;
+			type = "fx";
+			setter--;
+		}
+
+		if ( arguments.length < setter ) {
+			return jQuery.queue( this[ 0 ], type );
+		}
+
+		return data === undefined ?
+			this :
+			this.each( function() {
+				var queue = jQuery.queue( this, type, data );
+
+				// Ensure a hooks for this queue
+				jQuery._queueHooks( this, type );
+
+				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+					jQuery.dequeue( this, type );
+				}
+			} );
+	},
+	dequeue: function( type ) {
+		return this.each( function() {
+			jQuery.dequeue( this, type );
+		} );
+	},
+	clearQueue: function( type ) {
+		return this.queue( type || "fx", [] );
+	},
+
+	// Get a promise resolved when queues of a certain type
+	// are emptied (fx is the type by default)
+	promise: function( type, obj ) {
+		var tmp,
+			count = 1,
+			defer = jQuery.Deferred(),
+			elements = this,
+			i = this.length,
+			resolve = function() {
+				if ( !( --count ) ) {
+					defer.resolveWith( elements, [ elements ] );
+				}
+			};
+
+		if ( typeof type !== "string" ) {
+			obj = type;
+			type = undefined;
+		}
+		type = type || "fx";
+
+		while ( i-- ) {
+			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+			if ( tmp && tmp.empty ) {
+				count++;
+				tmp.empty.add( resolve );
+			}
+		}
+		resolve();
+		return defer.promise( obj );
+	}
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHiddenWithinTree = function( elem, el ) {
+
+		// isHiddenWithinTree might be called from jQuery#filter function;
+		// in that case, element will be second argument
+		elem = el || elem;
+
+		// Inline style trumps all
+		return elem.style.display === "none" ||
+			elem.style.display === "" &&
+
+			// Otherwise, check computed style
+			// Support: Firefox <=43 - 45
+			// Disconnected elements can have computed display: none, so first confirm that elem is
+			// in the document.
+			jQuery.contains( elem.ownerDocument, elem ) &&
+
+			jQuery.css( elem, "display" ) === "none";
+	};
+
+var swap = function( elem, options, callback, args ) {
+	var ret, name,
+		old = {};
+
+	// Remember the old values, and insert the new ones
+	for ( name in options ) {
+		old[ name ] = elem.style[ name ];
+		elem.style[ name ] = options[ name ];
+	}
+
+	ret = callback.apply( elem, args || [] );
+
+	// Revert the old values
+	for ( name in options ) {
+		elem.style[ name ] = old[ name ];
+	}
+
+	return ret;
+};
+
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+	var adjusted,
+		scale = 1,
+		maxIterations = 20,
+		currentValue = tween ?
+			function() {
+				return tween.cur();
+			} :
+			function() {
+				return jQuery.css( elem, prop, "" );
+			},
+		initial = currentValue(),
+		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+		// Starting value computation is required for potential unit mismatches
+		initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+			rcssNum.exec( jQuery.css( elem, prop ) );
+
+	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+		// Trust units reported by jQuery.css
+		unit = unit || initialInUnit[ 3 ];
+
+		// Make sure we update the tween properties later on
+		valueParts = valueParts || [];
+
+		// Iteratively approximate from a nonzero starting point
+		initialInUnit = +initial || 1;
+
+		do {
+
+			// If previous iteration zeroed out, double until we get *something*.
+			// Use string for doubling so we don't accidentally see scale as unchanged below
+			scale = scale || ".5";
+
+			// Adjust and apply
+			initialInUnit = initialInUnit / scale;
+			jQuery.style( elem, prop, initialInUnit + unit );
+
+		// Update scale, tolerating zero or NaN from tween.cur()
+		// Break the loop if scale is unchanged or perfect, or if we've just had enough.
+		} while (
+			scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
+		);
+	}
+
+	if ( valueParts ) {
+		initialInUnit = +initialInUnit || +initial || 0;
+
+		// Apply relative offset (+=/-=) if specified
+		adjusted = valueParts[ 1 ] ?
+			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+			+valueParts[ 2 ];
+		if ( tween ) {
+			tween.unit = unit;
+			tween.start = initialInUnit;
+			tween.end = adjusted;
+		}
+	}
+	return adjusted;
+}
+
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+	var temp,
+		doc = elem.ownerDocument,
+		nodeName = elem.nodeName,
+		display = defaultDisplayMap[ nodeName ];
+
+	if ( display ) {
+		return display;
+	}
+
+	temp = doc.body.appendChild( doc.createElement( nodeName ) ),
+	display = jQuery.css( temp, "display" );
+
+	temp.parentNode.removeChild( temp );
+
+	if ( display === "none" ) {
+		display = "block";
+	}
+	defaultDisplayMap[ nodeName ] = display;
+
+	return display;
+}
+
+function showHide( elements, show ) {
+	var display, elem,
+		values = [],
+		index = 0,
+		length = elements.length;
+
+	// Determine new display value for elements that need to change
+	for ( ; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+
+		display = elem.style.display;
+		if ( show ) {
+
+			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+			// check is required in this first loop unless we have a nonempty display value (either
+			// inline or about-to-be-restored)
+			if ( display === "none" ) {
+				values[ index ] = dataPriv.get( elem, "display" ) || null;
+				if ( !values[ index ] ) {
+					elem.style.display = "";
+				}
+			}
+			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+				values[ index ] = getDefaultDisplay( elem );
+			}
+		} else {
+			if ( display !== "none" ) {
+				values[ index ] = "none";
+
+				// Remember what we're overwriting
+				dataPriv.set( elem, "display", display );
+			}
+		}
+	}
+
+	// Set the display of the elements in a second loop to avoid constant reflow
+	for ( index = 0; index < length; index++ ) {
+		if ( values[ index ] != null ) {
+			elements[ index ].style.display = values[ index ];
+		}
+	}
+
+	return elements;
+}
+
+jQuery.fn.extend( {
+	show: function() {
+		return showHide( this, true );
+	},
+	hide: function() {
+		return showHide( this );
+	},
+	toggle: function( state ) {
+		if ( typeof state === "boolean" ) {
+			return state ? this.show() : this.hide();
+		}
+
+		return this.each( function() {
+			if ( isHiddenWithinTree( this ) ) {
+				jQuery( this ).show();
+			} else {
+				jQuery( this ).hide();
+			}
+		} );
+	}
+} );
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
+
+var rscriptType = ( /^$|\/(?:java|ecma)script/i );
+
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+	// Support: IE <=9 only
+	option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+	// XHTML parsers do not magically insert elements in the
+	// same way that tag soup parsers do. So we cannot shorten
+	// this by omitting <tbody> or other required elements.
+	thead: [ 1, "<table>", "</table>" ],
+	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+	_default: [ 0, "", "" ]
+};
+
+// Support: IE <=9 only
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function getAll( context, tag ) {
+
+	// Support: IE <=9 - 11 only
+	// Use typeof to avoid zero-argument method invocation on host objects (#15151)
+	var ret = typeof context.getElementsByTagName !== "undefined" ?
+			context.getElementsByTagName( tag || "*" ) :
+			typeof context.querySelectorAll !== "undefined" ?
+				context.querySelectorAll( tag || "*" ) :
+			[];
+
+	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+		jQuery.merge( [ context ], ret ) :
+		ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+	var i = 0,
+		l = elems.length;
+
+	for ( ; i < l; i++ ) {
+		dataPriv.set(
+			elems[ i ],
+			"globalEval",
+			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
+		);
+	}
+}
+
+
+var rhtml = /<|&#?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+	var elem, tmp, tag, wrap, contains, j,
+		fragment = context.createDocumentFragment(),
+		nodes = [],
+		i = 0,
+		l = elems.length;
+
+	for ( ; i < l; i++ ) {
+		elem = elems[ i ];
+
+		if ( elem || elem === 0 ) {
+
+			// Add nodes directly
+			if ( jQuery.type( elem ) === "object" ) {
+
+				// Support: Android <=4.0 only, PhantomJS 1 only
+				// push.apply(_, arraylike) throws on ancient WebKit
+				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+			// Convert non-html into a text node
+			} else if ( !rhtml.test( elem ) ) {
+				nodes.push( context.createTextNode( elem ) );
+
+			// Convert html into DOM nodes
+			} else {
+				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+				// Deserialize a standard representation
+				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+				wrap = wrapMap[ tag ] || wrapMap._default;
+				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+				// Descend through wrappers to the right content
+				j = wrap[ 0 ];
+				while ( j-- ) {
+					tmp = tmp.lastChild;
+				}
+
+				// Support: Android <=4.0 only, PhantomJS 1 only
+				// push.apply(_, arraylike) throws on ancient WebKit
+				jQuery.merge( nodes, tmp.childNodes );
+
+				// Remember the top-level container
+				tmp = fragment.firstChild;
+
+				// Ensure the created nodes are orphaned (#12392)
+				tmp.textContent = "";
+			}
+		}
+	}
+
+	// Remove wrapper from fragment
+	fragment.textContent = "";
+
+	i = 0;
+	while ( ( elem = nodes[ i++ ] ) ) {
+
+		// Skip elements already in the context collection (trac-4087)
+		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+			if ( ignored ) {
+				ignored.push( elem );
+			}
+			continue;
+		}
+
+		contains = jQuery.contains( elem.ownerDocument, elem );
+
+		// Append to fragment
+		tmp = getAll( fragment.appendChild( elem ), "script" );
+
+		// Preserve script evaluation history
+		if ( contains ) {
+			setGlobalEval( tmp );
+		}
+
+		// Capture executables
+		if ( scripts ) {
+			j = 0;
+			while ( ( elem = tmp[ j++ ] ) ) {
+				if ( rscriptType.test( elem.type || "" ) ) {
+					scripts.push( elem );
+				}
+			}
+		}
+	}
+
+	return fragment;
+}
+
+
+( function() {
+	var fragment = document.createDocumentFragment(),
+		div = fragment.appendChild( document.createElement( "div" ) ),
+		input = document.createElement( "input" );
+
+	// Support: Android 4.0 - 4.3 only
+	// Check state lost if the name is set (#11217)
+	// Support: Windows Web Apps (WWA)
+	// `name` and `type` must use .setAttribute for WWA (#14901)
+	input.setAttribute( "type", "radio" );
+	input.setAttribute( "checked", "checked" );
+	input.setAttribute( "name", "t" );
+
+	div.appendChild( input );
+
+	// Support: Android <=4.1 only
+	// Older WebKit doesn't clone checked state correctly in fragments
+	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+	// Support: IE <=11 only
+	// Make sure textarea (and checkbox) defaultValue is properly cloned
+	div.innerHTML = "<textarea>x</textarea>";
+	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+var documentElement = document.documentElement;
+
+
+
+var
+	rkeyEvent = /^key/,
+	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+	rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+	return true;
+}
+
+function returnFalse() {
+	return false;
+}
+
+// Support: IE <=9 only
+// See #13393 for more info
+function safeActiveElement() {
+	try {
+		return document.activeElement;
+	} catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+	var origFn, type;
+
+	// Types can be a map of types/handlers
+	if ( typeof types === "object" ) {
+
+		// ( types-Object, selector, data )
+		if ( typeof selector !== "string" ) {
+
+			// ( types-Object, data )
+			data = data || selector;
+			selector = undefined;
+		}
+		for ( type in types ) {
+			on( elem, type, selector, data, types[ type ], one );
+		}
+		return elem;
+	}
+
+	if ( data == null && fn == null ) {
+
+		// ( types, fn )
+		fn = selector;
+		data = selector = undefined;
+	} else if ( fn == null ) {
+		if ( typeof selector === "string" ) {
+
+			// ( types, selector, fn )
+			fn = data;
+			data = undefined;
+		} else {
+
+			// ( types, data, fn )
+			fn = data;
+			data = selector;
+			selector = undefined;
+		}
+	}
+	if ( fn === false ) {
+		fn = returnFalse;
+	} else if ( !fn ) {
+		return elem;
+	}
+
+	if ( one === 1 ) {
+		origFn = fn;
+		fn = function( event ) {
+
+			// Can use an empty set, since event contains the info
+			jQuery().off( event );
+			return origFn.apply( this, arguments );
+		};
+
+		// Use same guid so caller can remove using origFn
+		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+	}
+	return elem.each( function() {
+		jQuery.event.add( this, types, fn, data, selector );
+	} );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+	global: {},
+
+	add: function( elem, types, handler, data, selector ) {
+
+		var handleObjIn, eventHandle, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = dataPriv.get( elem );
+
+		// Don't attach events to noData or text/comment nodes (but allow plain objects)
+		if ( !elemData ) {
+			return;
+		}
+
+		// Caller can pass in an object of custom data in lieu of the handler
+		if ( handler.handler ) {
+			handleObjIn = handler;
+			handler = handleObjIn.handler;
+			selector = handleObjIn.selector;
+		}
+
+		// Ensure that invalid selectors throw exceptions at attach time
+		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
+		if ( selector ) {
+			jQuery.find.matchesSelector( documentElement, selector );
+		}
+
+		// Make sure that the handler has a unique ID, used to find/remove it later
+		if ( !handler.guid ) {
+			handler.guid = jQuery.guid++;
+		}
+
+		// Init the element's event structure and main handler, if this is the first
+		if ( !( events = elemData.events ) ) {
+			events = elemData.events = {};
+		}
+		if ( !( eventHandle = elemData.handle ) ) {
+			eventHandle = elemData.handle = function( e ) {
+
+				// Discard the second event of a jQuery.event.trigger() and
+				// when an event is called after a page has unloaded
+				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+			};
+		}
+
+		// Handle multiple events separated by a space
+		types = ( types || "" ).match( rnotwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[ t ] ) || [];
+			type = origType = tmp[ 1 ];
+			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+			// There *must* be a type, no attaching namespace-only handlers
+			if ( !type ) {
+				continue;
+			}
+
+			// If event changes its type, use the special event handlers for the changed type
+			special = jQuery.event.special[ type ] || {};
+
+			// If selector defined, determine special event api type, otherwise given type
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+
+			// Update special based on newly reset type
+			special = jQuery.event.special[ type ] || {};
+
+			// handleObj is passed to all event handlers
+			handleObj = jQuery.extend( {
+				type: type,
+				origType: origType,
+				data: data,
+				handler: handler,
+				guid: handler.guid,
+				selector: selector,
+				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+				namespace: namespaces.join( "." )
+			}, handleObjIn );
+
+			// Init the event handler queue if we're the first
+			if ( !( handlers = events[ type ] ) ) {
+				handlers = events[ type ] = [];
+				handlers.delegateCount = 0;
+
+				// Only use addEventListener if the special events handler returns false
+				if ( !special.setup ||
+					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+					if ( elem.addEventListener ) {
+						elem.addEventListener( type, eventHandle );
+					}
+				}
+			}
+
+			if ( special.add ) {
+				special.add.call( elem, handleObj );
+
+				if ( !handleObj.handler.guid ) {
+					handleObj.handler.guid = handler.guid;
+				}
+			}
+
+			// Add to the element's handler list, delegates in front
+			if ( selector ) {
+				handlers.splice( handlers.delegateCount++, 0, handleObj );
+			} else {
+				handlers.push( handleObj );
+			}
+
+			// Keep track of which events have ever been used, for event optimization
+			jQuery.event.global[ type ] = true;
+		}
+
+	},
+
+	// Detach an event or set of events from an element
+	remove: function( elem, types, handler, selector, mappedTypes ) {
+
+		var j, origCount, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+		if ( !elemData || !( events = elemData.events ) ) {
+			return;
+		}
+
+		// Once for each type.namespace in types; type may be omitted
+		types = ( types || "" ).match( rnotwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[ t ] ) || [];
+			type = origType = tmp[ 1 ];
+			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+			// Unbind all events (on this namespace, if provided) for the element
+			if ( !type ) {
+				for ( type in events ) {
+					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+				}
+				continue;
+			}
+
+			special = jQuery.event.special[ type ] || {};
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+			handlers = events[ type ] || [];
+			tmp = tmp[ 2 ] &&
+				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+			// Remove matching events
+			origCount = j = handlers.length;
+			while ( j-- ) {
+				handleObj = handlers[ j ];
+
+				if ( ( mappedTypes || origType === handleObj.origType ) &&
+					( !handler || handler.guid === handleObj.guid ) &&
+					( !tmp || tmp.test( handleObj.namespace ) ) &&
+					( !selector || selector === handleObj.selector ||
+						selector === "**" && handleObj.selector ) ) {
+					handlers.splice( j, 1 );
+
+					if ( handleObj.selector ) {
+						handlers.delegateCount--;
+					}
+					if ( special.remove ) {
+						special.remove.call( elem, handleObj );
+					}
+				}
+			}
+
+			// Remove generic event handler if we removed something and no more handlers exist
+			// (avoids potential for endless recursion during removal of special event handlers)
+			if ( origCount && !handlers.length ) {
+				if ( !special.teardown ||
+					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+					jQuery.removeEvent( elem, type, elemData.handle );
+				}
+
+				delete events[ type ];
+			}
+		}
+
+		// Remove data and the expando if it's no longer used
+		if ( jQuery.isEmptyObject( events ) ) {
+			dataPriv.remove( elem, "handle events" );
+		}
+	},
+
+	dispatch: function( nativeEvent ) {
+
+		// Make a writable jQuery.Event from the native event object
+		var event = jQuery.event.fix( nativeEvent );
+
+		var i, j, ret, matched, handleObj, handlerQueue,
+			args = new Array( arguments.length ),
+			handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+			special = jQuery.event.special[ event.type ] || {};
+
+		// Use the fix-ed jQuery.Event rather than the (read-only) native event
+		args[ 0 ] = event;
+
+		for ( i = 1; i < arguments.length; i++ ) {
+			args[ i ] = arguments[ i ];
+		}
+
+		event.delegateTarget = this;
+
+		// Call the preDispatch hook for the mapped type, and let it bail if desired
+		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+			return;
+		}
+
+		// Determine handlers
+		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+		// Run delegates first; they may want to stop propagation beneath us
+		i = 0;
+		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+			event.currentTarget = matched.elem;
+
+			j = 0;
+			while ( ( handleObj = matched.handlers[ j++ ] ) &&
+				!event.isImmediatePropagationStopped() ) {
+
+				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
+				// a subset or equal to those in the bound event (both can have no namespace).
+				if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+					event.handleObj = handleObj;
+					event.data = handleObj.data;
+
+					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+						handleObj.handler ).apply( matched.elem, args );
+
+					if ( ret !== undefined ) {
+						if ( ( event.result = ret ) === false ) {
+							event.preventDefault();
+							event.stopPropagation();
+						}
+					}
+				}
+			}
+		}
+
+		// Call the postDispatch hook for the mapped type
+		if ( special.postDispatch ) {
+			special.postDispatch.call( this, event );
+		}
+
+		return event.result;
+	},
+
+	handlers: function( event, handlers ) {
+		var i, matches, sel, handleObj,
+			handlerQueue = [],
+			delegateCount = handlers.delegateCount,
+			cur = event.target;
+
+		// Support: IE <=9
+		// Find delegate handlers
+		// Black-hole SVG <use> instance trees (#13180)
+		//
+		// Support: Firefox <=42
+		// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
+		if ( delegateCount && cur.nodeType &&
+			( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
+
+			for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+				// Don't check non-elements (#13208)
+				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+				if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) {
+					matches = [];
+					for ( i = 0; i < delegateCount; i++ ) {
+						handleObj = handlers[ i ];
+
+						// Don't conflict with Object.prototype properties (#13203)
+						sel = handleObj.selector + " ";
+
+						if ( matches[ sel ] === undefined ) {
+							matches[ sel ] = handleObj.needsContext ?
+								jQuery( sel, this ).index( cur ) > -1 :
+								jQuery.find( sel, this, null, [ cur ] ).length;
+						}
+						if ( matches[ sel ] ) {
+							matches.push( handleObj );
+						}
+					}
+					if ( matches.length ) {
+						handlerQueue.push( { elem: cur, handlers: matches } );
+					}
+				}
+			}
+		}
+
+		// Add the remaining (directly-bound) handlers
+		if ( delegateCount < handlers.length ) {
+			handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );
+		}
+
+		return handlerQueue;
+	},
+
+	addProp: function( name, hook ) {
+		Object.defineProperty( jQuery.Event.prototype, name, {
+			enumerable: true,
+			configurable: true,
+
+			get: jQuery.isFunction( hook ) ?
+				function() {
+					if ( this.originalEvent ) {
+							return hook( this.originalEvent );
+					}
+				} :
+				function() {
+					if ( this.originalEvent ) {
+							return this.originalEvent[ name ];
+					}
+				},
+
+			set: function( value ) {
+				Object.defineProperty( this, name, {
+					enumerable: true,
+					configurable: true,
+					writable: true,
+					value: value
+				} );
+			}
+		} );
+	},
+
+	fix: function( originalEvent ) {
+		return originalEvent[ jQuery.expando ] ?
+			originalEvent :
+			new jQuery.Event( originalEvent );
+	},
+
+	special: {
+		load: {
+
+			// Prevent triggered image.load events from bubbling to window.load
+			noBubble: true
+		},
+		focus: {
+
+			// Fire native event if possible so blur/focus sequence is correct
+			trigger: function() {
+				if ( this !== safeActiveElement() && this.focus ) {
+					this.focus();
+					return false;
+				}
+			},
+			delegateType: "focusin"
+		},
+		blur: {
+			trigger: function() {
+				if ( this === safeActiveElement() && this.blur ) {
+					this.blur();
+					return false;
+				}
+			},
+			delegateType: "focusout"
+		},
+		click: {
+
+			// For checkbox, fire native event so checked state will be right
+			trigger: function() {
+				if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+					this.click();
+					return false;
+				}
+			},
+
+			// For cross-browser consistency, don't fire native .click() on links
+			_default: function( event ) {
+				return jQuery.nodeName( event.target, "a" );
+			}
+		},
+
+		beforeunload: {
+			postDispatch: function( event ) {
+
+				// Support: Firefox 20+
+				// Firefox doesn't alert if the returnValue field is not set.
+				if ( event.result !== undefined && event.originalEvent ) {
+					event.originalEvent.returnValue = event.result;
+				}
+			}
+		}
+	}
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+	// This "if" is needed for plain objects
+	if ( elem.removeEventListener ) {
+		elem.removeEventListener( type, handle );
+	}
+};
+
+jQuery.Event = function( src, props ) {
+
+	// Allow instantiation without the 'new' keyword
+	if ( !( this instanceof jQuery.Event ) ) {
+		return new jQuery.Event( src, props );
+	}
+
+	// Event object
+	if ( src && src.type ) {
+		this.originalEvent = src;
+		this.type = src.type;
+
+		// Events bubbling up the document may have been marked as prevented
+		// by a handler lower down the tree; reflect the correct value.
+		this.isDefaultPrevented = src.defaultPrevented ||
+				src.defaultPrevented === undefined &&
+
+				// Support: Android <=2.3 only
+				src.returnValue === false ?
+			returnTrue :
+			returnFalse;
+
+		// Create target properties
+		// Support: Safari <=6 - 7 only
+		// Target should not be a text node (#504, #13143)
+		this.target = ( src.target && src.target.nodeType === 3 ) ?
+			src.target.parentNode :
+			src.target;
+
+		this.currentTarget = src.currentTarget;
+		this.relatedTarget = src.relatedTarget;
+
+	// Event type
+	} else {
+		this.type = src;
+	}
+
+	// Put explicitly provided properties onto the event object
+	if ( props ) {
+		jQuery.extend( this, props );
+	}
+
+	// Create a timestamp if incoming event doesn't have one
+	this.timeStamp = src && src.timeStamp || jQuery.now();
+
+	// Mark it as fixed
+	this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+	constructor: jQuery.Event,
+	isDefaultPrevented: returnFalse,
+	isPropagationStopped: returnFalse,
+	isImmediatePropagationStopped: returnFalse,
+	isSimulated: false,
+
+	preventDefault: function() {
+		var e = this.originalEvent;
+
+		this.isDefaultPrevented = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.preventDefault();
+		}
+	},
+	stopPropagation: function() {
+		var e = this.originalEvent;
+
+		this.isPropagationStopped = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.stopPropagation();
+		}
+	},
+	stopImmediatePropagation: function() {
+		var e = this.originalEvent;
+
+		this.isImmediatePropagationStopped = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.stopImmediatePropagation();
+		}
+
+		this.stopPropagation();
+	}
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+	altKey: true,
+	bubbles: true,
+	cancelable: true,
+	changedTouches: true,
+	ctrlKey: true,
+	detail: true,
+	eventPhase: true,
+	metaKey: true,
+	pageX: true,
+	pageY: true,
+	shiftKey: true,
+	view: true,
+	"char": true,
+	charCode: true,
+	key: true,
+	keyCode: true,
+	button: true,
+	buttons: true,
+	clientX: true,
+	clientY: true,
+	offsetX: true,
+	offsetY: true,
+	pointerId: true,
+	pointerType: true,
+	screenX: true,
+	screenY: true,
+	targetTouches: true,
+	toElement: true,
+	touches: true,
+
+	which: function( event ) {
+		var button = event.button;
+
+		// Add which for key events
+		if ( event.which == null && rkeyEvent.test( event.type ) ) {
+			return event.charCode != null ? event.charCode : event.keyCode;
+		}
+
+		// Add which for click: 1 === left; 2 === middle; 3 === right
+		if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+			return ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+		}
+
+		return event.which;
+	}
+}, jQuery.event.addProp );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+	mouseenter: "mouseover",
+	mouseleave: "mouseout",
+	pointerenter: "pointerover",
+	pointerleave: "pointerout"
+}, function( orig, fix ) {
+	jQuery.event.special[ orig ] = {
+		delegateType: fix,
+		bindType: fix,
+
+		handle: function( event ) {
+			var ret,
+				target = this,
+				related = event.relatedTarget,
+				handleObj = event.handleObj;
+
+			// For mouseenter/leave call the handler if related is outside the target.
+			// NB: No relatedTarget if the mouse left/entered the browser window
+			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+				event.type = handleObj.origType;
+				ret = handleObj.handler.apply( this, arguments );
+				event.type = fix;
+			}
+			return ret;
+		}
+	};
+} );
+
+jQuery.fn.extend( {
+
+	on: function( types, selector, data, fn ) {
+		return on( this, types, selector, data, fn );
+	},
+	one: function( types, selector, data, fn ) {
+		return on( this, types, selector, data, fn, 1 );
+	},
+	off: function( types, selector, fn ) {
+		var handleObj, type;
+		if ( types && types.preventDefault && types.handleObj ) {
+
+			// ( event )  dispatched jQuery.Event
+			handleObj = types.handleObj;
+			jQuery( types.delegateTarget ).off(
+				handleObj.namespace ?
+					handleObj.origType + "." + handleObj.namespace :
+					handleObj.origType,
+				handleObj.selector,
+				handleObj.handler
+			);
+			return this;
+		}
+		if ( typeof types === "object" ) {
+
+			// ( types-object [, selector] )
+			for ( type in types ) {
+				this.off( type, selector, types[ type ] );
+			}
+			return this;
+		}
+		if ( selector === false || typeof selector === "function" ) {
+
+			// ( types [, fn] )
+			fn = selector;
+			selector = undefined;
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		}
+		return this.each( function() {
+			jQuery.event.remove( this, types, fn, selector );
+		} );
+	}
+} );
+
+
+var
+
+	/* eslint-disable max-len */
+
+	// See https://github.com/eslint/eslint/issues/3229
+	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
+
+	/* eslint-enable */
+
+	// Support: IE <=10 - 11, Edge 12 - 13
+	// In IE/Edge using regex groups here causes severe slowdowns.
+	// See https://connect.microsoft.com/IE/feedback/details/1736512/
+	rnoInnerhtml = /<script|<style|<link/i,
+
+	// checked="checked" or checked
+	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+	rscriptTypeMasked = /^true\/(.*)/,
+	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
+
+function manipulationTarget( elem, content ) {
+	if ( jQuery.nodeName( elem, "table" ) &&
+		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
+
+		return elem.getElementsByTagName( "tbody" )[ 0 ] || elem;
+	}
+
+	return elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
+	return elem;
+}
+function restoreScript( elem ) {
+	var match = rscriptTypeMasked.exec( elem.type );
+
+	if ( match ) {
+		elem.type = match[ 1 ];
+	} else {
+		elem.removeAttribute( "type" );
+	}
+
+	return elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+	if ( dest.nodeType !== 1 ) {
+		return;
+	}
+
+	// 1. Copy private data: events, handlers, etc.
+	if ( dataPriv.hasData( src ) ) {
+		pdataOld = dataPriv.access( src );
+		pdataCur = dataPriv.set( dest, pdataOld );
+		events = pdataOld.events;
+
+		if ( events ) {
+			delete pdataCur.handle;
+			pdataCur.events = {};
+
+			for ( type in events ) {
+				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+					jQuery.event.add( dest, type, events[ type ][ i ] );
+				}
+			}
+		}
+	}
+
+	// 2. Copy user data
+	if ( dataUser.hasData( src ) ) {
+		udataOld = dataUser.access( src );
+		udataCur = jQuery.extend( {}, udataOld );
+
+		dataUser.set( dest, udataCur );
+	}
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+	var nodeName = dest.nodeName.toLowerCase();
+
+	// Fails to persist the checked state of a cloned checkbox or radio button.
+	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+		dest.checked = src.checked;
+
+	// Fails to return the selected option to the default selected state when cloning options
+	} else if ( nodeName === "input" || nodeName === "textarea" ) {
+		dest.defaultValue = src.defaultValue;
+	}
+}
+
+function domManip( collection, args, callback, ignored ) {
+
+	// Flatten any nested arrays
+	args = concat.apply( [], args );
+
+	var fragment, first, scripts, hasScripts, node, doc,
+		i = 0,
+		l = collection.length,
+		iNoClone = l - 1,
+		value = args[ 0 ],
+		isFunction = jQuery.isFunction( value );
+
+	// We can't cloneNode fragments that contain checked, in WebKit
+	if ( isFunction ||
+			( l > 1 && typeof value === "string" &&
+				!support.checkClone && rchecked.test( value ) ) ) {
+		return collection.each( function( index ) {
+			var self = collection.eq( index );
+			if ( isFunction ) {
+				args[ 0 ] = value.call( this, index, self.html() );
+			}
+			domManip( self, args, callback, ignored );
+		} );
+	}
+
+	if ( l ) {
+		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
+		first = fragment.firstChild;
+
+		if ( fragment.childNodes.length === 1 ) {
+			fragment = first;
+		}
+
+		// Require either new content or an interest in ignored elements to invoke the callback
+		if ( first || ignored ) {
+			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+			hasScripts = scripts.length;
+
+			// Use the original fragment for the last item
+			// instead of the first because it can end up
+			// being emptied incorrectly in certain situations (#8070).
+			for ( ; i < l; i++ ) {
+				node = fragment;
+
+				if ( i !== iNoClone ) {
+					node = jQuery.clone( node, true, true );
+
+					// Keep references to cloned scripts for later restoration
+					if ( hasScripts ) {
+
+						// Support: Android <=4.0 only, PhantomJS 1 only
+						// push.apply(_, arraylike) throws on ancient WebKit
+						jQuery.merge( scripts, getAll( node, "script" ) );
+					}
+				}
+
+				callback.call( collection[ i ], node, i );
+			}
+
+			if ( hasScripts ) {
+				doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+				// Reenable scripts
+				jQuery.map( scripts, restoreScript );
+
+				// Evaluate executable scripts on first document insertion
+				for ( i = 0; i < hasScripts; i++ ) {
+					node = scripts[ i ];
+					if ( rscriptType.test( node.type || "" ) &&
+						!dataPriv.access( node, "globalEval" ) &&
+						jQuery.contains( doc, node ) ) {
+
+						if ( node.src ) {
+
+							// Optional AJAX dependency, but won't run scripts if not present
+							if ( jQuery._evalUrl ) {
+								jQuery._evalUrl( node.src );
+							}
+						} else {
+							DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return collection;
+}
+
+function remove( elem, selector, keepData ) {
+	var node,
+		nodes = selector ? jQuery.filter( selector, elem ) : elem,
+		i = 0;
+
+	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
+		if ( !keepData && node.nodeType === 1 ) {
+			jQuery.cleanData( getAll( node ) );
+		}
+
+		if ( node.parentNode ) {
+			if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
+				setGlobalEval( getAll( node, "script" ) );
+			}
+			node.parentNode.removeChild( node );
+		}
+	}
+
+	return elem;
+}
+
+jQuery.extend( {
+	htmlPrefilter: function( html ) {
+		return html.replace( rxhtmlTag, "<$1></$2>" );
+	},
+
+	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+		var i, l, srcElements, destElements,
+			clone = elem.cloneNode( true ),
+			inPage = jQuery.contains( elem.ownerDocument, elem );
+
+		// Fix IE cloning issues
+		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+				!jQuery.isXMLDoc( elem ) ) {
+
+			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
+			destElements = getAll( clone );
+			srcElements = getAll( elem );
+
+			for ( i = 0, l = srcElements.length; i < l; i++ ) {
+				fixInput( srcElements[ i ], destElements[ i ] );
+			}
+		}
+
+		// Copy the events from the original to the clone
+		if ( dataAndEvents ) {
+			if ( deepDataAndEvents ) {
+				srcElements = srcElements || getAll( elem );
+				destElements = destElements || getAll( clone );
+
+				for ( i = 0, l = srcElements.length; i < l; i++ ) {
+					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+				}
+			} else {
+				cloneCopyEvent( elem, clone );
+			}
+		}
+
+		// Preserve script evaluation history
+		destElements = getAll( clone, "script" );
+		if ( destElements.length > 0 ) {
+			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+		}
+
+		// Return the cloned set
+		return clone;
+	},
+
+	cleanData: function( elems ) {
+		var data, elem, type,
+			special = jQuery.event.special,
+			i = 0;
+
+		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
+			if ( acceptData( elem ) ) {
+				if ( ( data = elem[ dataPriv.expando ] ) ) {
+					if ( data.events ) {
+						for ( type in data.events ) {
+							if ( special[ type ] ) {
+								jQuery.event.remove( elem, type );
+
+							// This is a shortcut to avoid jQuery.event.remove's overhead
+							} else {
+								jQuery.removeEvent( elem, type, data.handle );
+							}
+						}
+					}
+
+					// Support: Chrome <=35 - 45+
+					// Assign undefined instead of using delete, see Data#remove
+					elem[ dataPriv.expando ] = undefined;
+				}
+				if ( elem[ dataUser.expando ] ) {
+
+					// Support: Chrome <=35 - 45+
+					// Assign undefined instead of using delete, see Data#remove
+					elem[ dataUser.expando ] = undefined;
+				}
+			}
+		}
+	}
+} );
+
+jQuery.fn.extend( {
+	detach: function( selector ) {
+		return remove( this, selector, true );
+	},
+
+	remove: function( selector ) {
+		return remove( this, selector );
+	},
+
+	text: function( value ) {
+		return access( this, function( value ) {
+			return value === undefined ?
+				jQuery.text( this ) :
+				this.empty().each( function() {
+					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+						this.textContent = value;
+					}
+				} );
+		}, null, value, arguments.length );
+	},
+
+	append: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.appendChild( elem );
+			}
+		} );
+	},
+
+	prepend: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.insertBefore( elem, target.firstChild );
+			}
+		} );
+	},
+
+	before: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this );
+			}
+		} );
+	},
+
+	after: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this.nextSibling );
+			}
+		} );
+	},
+
+	empty: function() {
+		var elem,
+			i = 0;
+
+		for ( ; ( elem = this[ i ] ) != null; i++ ) {
+			if ( elem.nodeType === 1 ) {
+
+				// Prevent memory leaks
+				jQuery.cleanData( getAll( elem, false ) );
+
+				// Remove any remaining nodes
+				elem.textContent = "";
+			}
+		}
+
+		return this;
+	},
+
+	clone: function( dataAndEvents, deepDataAndEvents ) {
+		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+		return this.map( function() {
+			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+		} );
+	},
+
+	html: function( value ) {
+		return access( this, function( value ) {
+			var elem = this[ 0 ] || {},
+				i = 0,
+				l = this.length;
+
+			if ( value === undefined && elem.nodeType === 1 ) {
+				return elem.innerHTML;
+			}
+
+			// See if we can take a shortcut and just use innerHTML
+			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+				value = jQuery.htmlPrefilter( value );
+
+				try {
+					for ( ; i < l; i++ ) {
+						elem = this[ i ] || {};
+
+						// Remove element nodes and prevent memory leaks
+						if ( elem.nodeType === 1 ) {
+							jQuery.cleanData( getAll( elem, false ) );
+							elem.innerHTML = value;
+						}
+					}
+
+					elem = 0;
+
+				// If using innerHTML throws an exception, use the fallback method
+				} catch ( e ) {}
+			}
+
+			if ( elem ) {
+				this.empty().append( value );
+			}
+		}, null, value, arguments.length );
+	},
+
+	replaceWith: function() {
+		var ignored = [];
+
+		// Make the changes, replacing each non-ignored context element with the new content
+		return domManip( this, arguments, function( elem ) {
+			var parent = this.parentNode;
+
+			if ( jQuery.inArray( this, ignored ) < 0 ) {
+				jQuery.cleanData( getAll( this ) );
+				if ( parent ) {
+					parent.replaceChild( elem, this );
+				}
+			}
+
+		// Force callback invocation
+		}, ignored );
+	}
+} );
+
+jQuery.each( {
+	appendTo: "append",
+	prependTo: "prepend",
+	insertBefore: "before",
+	insertAfter: "after",
+	replaceAll: "replaceWith"
+}, function( name, original ) {
+	jQuery.fn[ name ] = function( selector ) {
+		var elems,
+			ret = [],
+			insert = jQuery( selector ),
+			last = insert.length - 1,
+			i = 0;
+
+		for ( ; i <= last; i++ ) {
+			elems = i === last ? this : this.clone( true );
+			jQuery( insert[ i ] )[ original ]( elems );
+
+			// Support: Android <=4.0 only, PhantomJS 1 only
+			// .get() because push.apply(_, arraylike) throws on ancient WebKit
+			push.apply( ret, elems.get() );
+		}
+
+		return this.pushStack( ret );
+	};
+} );
+var rmargin = ( /^margin/ );
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+
+		// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
+		// IE throws on elements created in popups
+		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+		var view = elem.ownerDocument.defaultView;
+
+		if ( !view || !view.opener ) {
+			view = window;
+		}
+
+		return view.getComputedStyle( elem );
+	};
+
+
+
+( function() {
+
+	// Executing both pixelPosition & boxSizingReliable tests require only one layout
+	// so they're executed at the same time to save the second computation.
+	function computeStyleTests() {
+
+		// This is a singleton, we need to execute it only once
+		if ( !div ) {
+			return;
+		}
+
+		div.style.cssText =
+			"box-sizing:border-box;" +
+			"position:relative;display:block;" +
+			"margin:auto;border:1px;padding:1px;" +
+			"top:1%;width:50%";
+		div.innerHTML = "";
+		documentElement.appendChild( container );
+
+		var divStyle = window.getComputedStyle( div );
+		pixelPositionVal = divStyle.top !== "1%";
+
+		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
+		reliableMarginLeftVal = divStyle.marginLeft === "2px";
+		boxSizingReliableVal = divStyle.width === "4px";
+
+		// Support: Android 4.0 - 4.3 only
+		// Some styles come back with percentage values, even though they shouldn't
+		div.style.marginRight = "50%";
+		pixelMarginRightVal = divStyle.marginRight === "4px";
+
+		documentElement.removeChild( container );
+
+		// Nullify the div so it wouldn't be stored in the memory and
+		// it will also be a sign that checks already performed
+		div = null;
+	}
+
+	var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
+		container = document.createElement( "div" ),
+		div = document.createElement( "div" );
+
+	// Finish early in limited (non-browser) environments
+	if ( !div.style ) {
+		return;
+	}
+
+	// Support: IE <=9 - 11 only
+	// Style of cloned element affects source element cloned (#8908)
+	div.style.backgroundClip = "content-box";
+	div.cloneNode( true ).style.backgroundClip = "";
+	support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+	container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
+		"padding:0;margin-top:1px;position:absolute";
+	container.appendChild( div );
+
+	jQuery.extend( support, {
+		pixelPosition: function() {
+			computeStyleTests();
+			return pixelPositionVal;
+		},
+		boxSizingReliable: function() {
+			computeStyleTests();
+			return boxSizingReliableVal;
+		},
+		pixelMarginRight: function() {
+			computeStyleTests();
+			return pixelMarginRightVal;
+		},
+		reliableMarginLeft: function() {
+			computeStyleTests();
+			return reliableMarginLeftVal;
+		}
+	} );
+} )();
+
+
+function curCSS( elem, name, computed ) {
+	var width, minWidth, maxWidth, ret,
+		style = elem.style;
+
+	computed = computed || getStyles( elem );
+
+	// Support: IE <=9 only
+	// getPropertyValue is only needed for .css('filter') (#12537)
+	if ( computed ) {
+		ret = computed.getPropertyValue( name ) || computed[ name ];
+
+		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+			ret = jQuery.style( elem, name );
+		}
+
+		// A tribute to the "awesome hack by Dean Edwards"
+		// Android Browser returns percentage for some values,
+		// but width seems to be reliably pixels.
+		// This is against the CSSOM draft spec:
+		// https://drafts.csswg.org/cssom/#resolved-values
+		if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+			// Remember the original values
+			width = style.width;
+			minWidth = style.minWidth;
+			maxWidth = style.maxWidth;
+
+			// Put in the new values to get a computed value out
+			style.minWidth = style.maxWidth = style.width = ret;
+			ret = computed.width;
+
+			// Revert the changed values
+			style.width = width;
+			style.minWidth = minWidth;
+			style.maxWidth = maxWidth;
+		}
+	}
+
+	return ret !== undefined ?
+
+		// Support: IE <=9 - 11 only
+		// IE returns zIndex value as an integer.
+		ret + "" :
+		ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+
+	// Define the hook, we'll check on the first run if it's really needed.
+	return {
+		get: function() {
+			if ( conditionFn() ) {
+
+				// Hook not needed (or it's not possible to use it due
+				// to missing dependency), remove it.
+				delete this.get;
+				return;
+			}
+
+			// Hook needed; redefine it so that the support test is not executed again.
+			return ( this.get = hookFn ).apply( this, arguments );
+		}
+	};
+}
+
+
+var
+
+	// Swappable if display is none or starts with table
+	// except "table", "table-cell", or "table-caption"
+	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+	cssNormalTransform = {
+		letterSpacing: "0",
+		fontWeight: "400"
+	},
+
+	cssPrefixes = [ "Webkit", "Moz", "ms" ],
+	emptyStyle = document.createElement( "div" ).style;
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( name ) {
+
+	// Shortcut for names that are not vendor prefixed
+	if ( name in emptyStyle ) {
+		return name;
+	}
+
+	// Check for vendor prefixed names
+	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
+		i = cssPrefixes.length;
+
+	while ( i-- ) {
+		name = cssPrefixes[ i ] + capName;
+		if ( name in emptyStyle ) {
+			return name;
+		}
+	}
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+
+	// Any relative (+/-) values have already been
+	// normalized at this point
+	var matches = rcssNum.exec( value );
+	return matches ?
+
+		// Guard against undefined "subtract", e.g., when used as in cssHooks
+		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
+		value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+	var i = extra === ( isBorderBox ? "border" : "content" ) ?
+
+		// If we already have the right measurement, avoid augmentation
+		4 :
+
+		// Otherwise initialize for horizontal or vertical properties
+		name === "width" ? 1 : 0,
+
+		val = 0;
+
+	for ( ; i < 4; i += 2 ) {
+
+		// Both box models exclude margin, so add it if we want it
+		if ( extra === "margin" ) {
+			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+		}
+
+		if ( isBorderBox ) {
+
+			// border-box includes padding, so remove it if we want content
+			if ( extra === "content" ) {
+				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+			}
+
+			// At this point, extra isn't border nor margin, so remove border
+			if ( extra !== "margin" ) {
+				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		} else {
+
+			// At this point, extra isn't content, so add padding
+			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+			// At this point, extra isn't content nor padding, so add border
+			if ( extra !== "padding" ) {
+				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		}
+	}
+
+	return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+	// Start with offset property, which is equivalent to the border-box value
+	var val,
+		valueIsBorderBox = true,
+		styles = getStyles( elem ),
+		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+	// Support: IE <=11 only
+	// Running getBoundingClientRect on a disconnected node
+	// in IE throws an error.
+	if ( elem.getClientRects().length ) {
+		val = elem.getBoundingClientRect()[ name ];
+	}
+
+	// Some non-html elements return undefined for offsetWidth, so check for null/undefined
+	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+	if ( val <= 0 || val == null ) {
+
+		// Fall back to computed then uncomputed css if necessary
+		val = curCSS( elem, name, styles );
+		if ( val < 0 || val == null ) {
+			val = elem.style[ name ];
+		}
+
+		// Computed unit is not pixels. Stop here and return.
+		if ( rnumnonpx.test( val ) ) {
+			return val;
+		}
+
+		// Check for style in case a browser which returns unreliable values
+		// for getComputedStyle silently falls back to the reliable elem.style
+		valueIsBorderBox = isBorderBox &&
+			( support.boxSizingReliable() || val === elem.style[ name ] );
+
+		// Normalize "", auto, and prepare for extra
+		val = parseFloat( val ) || 0;
+	}
+
+	// Use the active box-sizing model to add/subtract irrelevant styles
+	return ( val +
+		augmentWidthOrHeight(
+			elem,
+			name,
+			extra || ( isBorderBox ? "border" : "content" ),
+			valueIsBorderBox,
+			styles
+		)
+	) + "px";
+}
+
+jQuery.extend( {
+
+	// Add in style property hooks for overriding the default
+	// behavior of getting and setting a style property
+	cssHooks: {
+		opacity: {
+			get: function( elem, computed ) {
+				if ( computed ) {
+
+					// We should always get a number back from opacity
+					var ret = curCSS( elem, "opacity" );
+					return ret === "" ? "1" : ret;
+				}
+			}
+		}
+	},
+
+	// Don't automatically add "px" to these possibly-unitless properties
+	cssNumber: {
+		"animationIterationCount": true,
+		"columnCount": true,
+		"fillOpacity": true,
+		"flexGrow": true,
+		"flexShrink": true,
+		"fontWeight": true,
+		"lineHeight": true,
+		"opacity": true,
+		"order": true,
+		"orphans": true,
+		"widows": true,
+		"zIndex": true,
+		"zoom": true
+	},
+
+	// Add in properties whose names you wish to fix before
+	// setting or getting the value
+	cssProps: {
+		"float": "cssFloat"
+	},
+
+	// Get and set the style property on a DOM Node
+	style: function( elem, name, value, extra ) {
+
+		// Don't set styles on text and comment nodes
+		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+			return;
+		}
+
+		// Make sure that we're working with the right name
+		var ret, type, hooks,
+			origName = jQuery.camelCase( name ),
+			style = elem.style;
+
+		name = jQuery.cssProps[ origName ] ||
+			( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
+
+		// Gets hook for the prefixed version, then unprefixed version
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// Check if we're setting a value
+		if ( value !== undefined ) {
+			type = typeof value;
+
+			// Convert "+=" or "-=" to relative numbers (#7345)
+			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
+				value = adjustCSS( elem, name, ret );
+
+				// Fixes bug #9237
+				type = "number";
+			}
+
+			// Make sure that null and NaN values aren't set (#7116)
+			if ( value == null || value !== value ) {
+				return;
+			}
+
+			// If a number was passed in, add the unit (except for certain CSS properties)
+			if ( type === "number" ) {
+				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
+			}
+
+			// background-* props affect original clone's values
+			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+				style[ name ] = "inherit";
+			}
+
+			// If a hook was provided, use that value, otherwise just set the specified value
+			if ( !hooks || !( "set" in hooks ) ||
+				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
+
+				style[ name ] = value;
+			}
+
+		} else {
+
+			// If a hook was provided get the non-computed value from there
+			if ( hooks && "get" in hooks &&
+				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
+
+				return ret;
+			}
+
+			// Otherwise just get the value from the style object
+			return style[ name ];
+		}
+	},
+
+	css: function( elem, name, extra, styles ) {
+		var val, num, hooks,
+			origName = jQuery.camelCase( name );
+
+		// Make sure that we're working with the right name
+		name = jQuery.cssProps[ origName ] ||
+			( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
+
+		// Try prefixed name followed by the unprefixed name
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// If a hook was provided get the computed value from there
+		if ( hooks && "get" in hooks ) {
+			val = hooks.get( elem, true, extra );
+		}
+
+		// Otherwise, if a way to get the computed value exists, use that
+		if ( val === undefined ) {
+			val = curCSS( elem, name, styles );
+		}
+
+		// Convert "normal" to computed value
+		if ( val === "normal" && name in cssNormalTransform ) {
+			val = cssNormalTransform[ name ];
+		}
+
+		// Make numeric if forced or a qualifier was provided and val looks numeric
+		if ( extra === "" || extra ) {
+			num = parseFloat( val );
+			return extra === true || isFinite( num ) ? num || 0 : val;
+		}
+		return val;
+	}
+} );
+
+jQuery.each( [ "height", "width" ], function( i, name ) {
+	jQuery.cssHooks[ name ] = {
+		get: function( elem, computed, extra ) {
+			if ( computed ) {
+
+				// Certain elements can have dimension info if we invisibly show them
+				// but it must have a current display style that would benefit
+				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
+
+					// Support: Safari 8+
+					// Table columns in Safari have non-zero offsetWidth & zero
+					// getBoundingClientRect().width unless display is changed.
+					// Support: IE <=11 only
+					// Running getBoundingClientRect on a disconnected node
+					// in IE throws an error.
+					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
+						swap( elem, cssShow, function() {
+							return getWidthOrHeight( elem, name, extra );
+						} ) :
+						getWidthOrHeight( elem, name, extra );
+			}
+		},
+
+		set: function( elem, value, extra ) {
+			var matches,
+				styles = extra && getStyles( elem ),
+				subtract = extra && augmentWidthOrHeight(
+					elem,
+					name,
+					extra,
+					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+					styles
+				);
+
+			// Convert to pixels if value adjustment is needed
+			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
+				( matches[ 3 ] || "px" ) !== "px" ) {
+
+				elem.style[ name ] = value;
+				value = jQuery.css( elem, name );
+			}
+
+			return setPositiveNumber( elem, value, subtract );
+		}
+	};
+} );
+
+jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
+	function( elem, computed ) {
+		if ( computed ) {
+			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
+				elem.getBoundingClientRect().left -
+					swap( elem, { marginLeft: 0 }, function() {
+						return elem.getBoundingClientRect().left;
+					} )
+				) + "px";
+		}
+	}
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each( {
+	margin: "",
+	padding: "",
+	border: "Width"
+}, function( prefix, suffix ) {
+	jQuery.cssHooks[ prefix + suffix ] = {
+		expand: function( value ) {
+			var i = 0,
+				expanded = {},
+
+				// Assumes a single number if not a string
+				parts = typeof value === "string" ? value.split( " " ) : [ value ];
+
+			for ( ; i < 4; i++ ) {
+				expanded[ prefix + cssExpand[ i ] + suffix ] =
+					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+			}
+
+			return expanded;
+		}
+	};
+
+	if ( !rmargin.test( prefix ) ) {
+		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+	}
+} );
+
+jQuery.fn.extend( {
+	css: function( name, value ) {
+		return access( this, function( elem, name, value ) {
+			var styles, len,
+				map = {},
+				i = 0;
+
+			if ( jQuery.isArray( name ) ) {
+				styles = getStyles( elem );
+				len = name.length;
+
+				for ( ; i < len; i++ ) {
+					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+				}
+
+				return map;
+			}
+
+			return value !== undefined ?
+				jQuery.style( elem, name, value ) :
+				jQuery.css( elem, name );
+		}, name, value, arguments.length > 1 );
+	}
+} );
+
+
+function Tween( elem, options, prop, end, easing ) {
+	return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+	constructor: Tween,
+	init: function( elem, options, prop, end, easing, unit ) {
+		this.elem = elem;
+		this.prop = prop;
+		this.easing = easing || jQuery.easing._default;
+		this.options = options;
+		this.start = this.now = this.cur();
+		this.end = end;
+		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+	},
+	cur: function() {
+		var hooks = Tween.propHooks[ this.prop ];
+
+		return hooks && hooks.get ?
+			hooks.get( this ) :
+			Tween.propHooks._default.get( this );
+	},
+	run: function( percent ) {
+		var eased,
+			hooks = Tween.propHooks[ this.prop ];
+
+		if ( this.options.duration ) {
+			this.pos = eased = jQuery.easing[ this.easing ](
+				percent, this.options.duration * percent, 0, 1, this.options.duration
+			);
+		} else {
+			this.pos = eased = percent;
+		}
+		this.now = ( this.end - this.start ) * eased + this.start;
+
+		if ( this.options.step ) {
+			this.options.step.call( this.elem, this.now, this );
+		}
+
+		if ( hooks && hooks.set ) {
+			hooks.set( this );
+		} else {
+			Tween.propHooks._default.set( this );
+		}
+		return this;
+	}
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+	_default: {
+		get: function( tween ) {
+			var result;
+
+			// Use a property on the element directly when it is not a DOM element,
+			// or when there is no matching style property that exists.
+			if ( tween.elem.nodeType !== 1 ||
+				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
+				return tween.elem[ tween.prop ];
+			}
+
+			// Passing an empty string as a 3rd parameter to .css will automatically
+			// attempt a parseFloat and fallback to a string if the parse fails.
+			// Simple values such as "10px" are parsed to Float;
+			// complex values such as "rotate(1rad)" are returned as-is.
+			result = jQuery.css( tween.elem, tween.prop, "" );
+
+			// Empty strings, null, undefined and "auto" are converted to 0.
+			return !result || result === "auto" ? 0 : result;
+		},
+		set: function( tween ) {
+
+			// Use step hook for back compat.
+			// Use cssHook if its there.
+			// Use .style if available and use plain properties where available.
+			if ( jQuery.fx.step[ tween.prop ] ) {
+				jQuery.fx.step[ tween.prop ]( tween );
+			} else if ( tween.elem.nodeType === 1 &&
+				( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
+					jQuery.cssHooks[ tween.prop ] ) ) {
+				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+			} else {
+				tween.elem[ tween.prop ] = tween.now;
+			}
+		}
+	}
+};
+
+// Support: IE <=9 only
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+	set: function( tween ) {
+		if ( tween.elem.nodeType && tween.elem.parentNode ) {
+			tween.elem[ tween.prop ] = tween.now;
+		}
+	}
+};
+
+jQuery.easing = {
+	linear: function( p ) {
+		return p;
+	},
+	swing: function( p ) {
+		return 0.5 - Math.cos( p * Math.PI ) / 2;
+	},
+	_default: "swing"
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+	fxNow, timerId,
+	rfxtypes = /^(?:toggle|show|hide)$/,
+	rrun = /queueHooks$/;
+
+function raf() {
+	if ( timerId ) {
+		window.requestAnimationFrame( raf );
+		jQuery.fx.tick();
+	}
+}
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+	window.setTimeout( function() {
+		fxNow = undefined;
+	} );
+	return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+	var which,
+		i = 0,
+		attrs = { height: type };
+
+	// If we include width, step value is 1 to do all cssExpand values,
+	// otherwise step value is 2 to skip over Left and Right
+	includeWidth = includeWidth ? 1 : 0;
+	for ( ; i < 4; i += 2 - includeWidth ) {
+		which = cssExpand[ i ];
+		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+	}
+
+	if ( includeWidth ) {
+		attrs.opacity = attrs.width = type;
+	}
+
+	return attrs;
+}
+
+function createTween( value, prop, animation ) {
+	var tween,
+		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
+		index = 0,
+		length = collection.length;
+	for ( ; index < length; index++ ) {
+		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
+
+			// We're done with this property
+			return tween;
+		}
+	}
+}
+
+function defaultPrefilter( elem, props, opts ) {
+	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
+		isBox = "width" in props || "height" in props,
+		anim = this,
+		orig = {},
+		style = elem.style,
+		hidden = elem.nodeType && isHiddenWithinTree( elem ),
+		dataShow = dataPriv.get( elem, "fxshow" );
+
+	// Queue-skipping animations hijack the fx hooks
+	if ( !opts.queue ) {
+		hooks = jQuery._queueHooks( elem, "fx" );
+		if ( hooks.unqueued == null ) {
+			hooks.unqueued = 0;
+			oldfire = hooks.empty.fire;
+			hooks.empty.fire = function() {
+				if ( !hooks.unqueued ) {
+					oldfire();
+				}
+			};
+		}
+		hooks.unqueued++;
+
+		anim.always( function() {
+
+			// Ensure the complete handler is called before this completes
+			anim.always( function() {
+				hooks.unqueued--;
+				if ( !jQuery.queue( elem, "fx" ).length ) {
+					hooks.empty.fire();
+				}
+			} );
+		} );
+	}
+
+	// Detect show/hide animations
+	for ( prop in props ) {
+		value = props[ prop ];
+		if ( rfxtypes.test( value ) ) {
+			delete props[ prop ];
+			toggle = toggle || value === "toggle";
+			if ( value === ( hidden ? "hide" : "show" ) ) {
+
+				// Pretend to be hidden if this is a "show" and
+				// there is still data from a stopped show/hide
+				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+					hidden = true;
+
+				// Ignore all other no-op show/hide data
+				} else {
+					continue;
+				}
+			}
+			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+		}
+	}
+
+	// Bail out if this is a no-op like .hide().hide()
+	propTween = !jQuery.isEmptyObject( props );
+	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
+		return;
+	}
+
+	// Restrict "overflow" and "display" styles during box animations
+	if ( isBox && elem.nodeType === 1 ) {
+
+		// Support: IE <=9 - 11, Edge 12 - 13
+		// Record all 3 overflow attributes because IE does not infer the shorthand
+		// from identically-valued overflowX and overflowY
+		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+		// Identify a display type, preferring old show/hide data over the CSS cascade
+		restoreDisplay = dataShow && dataShow.display;
+		if ( restoreDisplay == null ) {
+			restoreDisplay = dataPriv.get( elem, "display" );
+		}
+		display = jQuery.css( elem, "display" );
+		if ( display === "none" ) {
+			if ( restoreDisplay ) {
+				display = restoreDisplay;
+			} else {
+
+				// Get nonempty value(s) by temporarily forcing visibility
+				showHide( [ elem ], true );
+				restoreDisplay = elem.style.display || restoreDisplay;
+				display = jQuery.css( elem, "display" );
+				showHide( [ elem ] );
+			}
+		}
+
+		// Animate inline elements as inline-block
+		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
+			if ( jQuery.css( elem, "float" ) === "none" ) {
+
+				// Restore the original display value at the end of pure show/hide animations
+				if ( !propTween ) {
+					anim.done( function() {
+						style.display = restoreDisplay;
+					} );
+					if ( restoreDisplay == null ) {
+						display = style.display;
+						restoreDisplay = display === "none" ? "" : display;
+					}
+				}
+				style.display = "inline-block";
+			}
+		}
+	}
+
+	if ( opts.overflow ) {
+		style.overflow = "hidden";
+		anim.always( function() {
+			style.overflow = opts.overflow[ 0 ];
+			style.overflowX = opts.overflow[ 1 ];
+			style.overflowY = opts.overflow[ 2 ];
+		} );
+	}
+
+	// Implement show/hide animations
+	propTween = false;
+	for ( prop in orig ) {
+
+		// General show/hide setup for this element animation
+		if ( !propTween ) {
+			if ( dataShow ) {
+				if ( "hidden" in dataShow ) {
+					hidden = dataShow.hidden;
+				}
+			} else {
+				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
+			}
+
+			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
+			if ( toggle ) {
+				dataShow.hidden = !hidden;
+			}
+
+			// Show elements before animating them
+			if ( hidden ) {
+				showHide( [ elem ], true );
+			}
+
+			/* eslint-disable no-loop-func */
+
+			anim.done( function() {
+
+			/* eslint-enable no-loop-func */
+
+				// The final step of a "hide" animation is actually hiding the element
+				if ( !hidden ) {
+					showHide( [ elem ] );
+				}
+				dataPriv.remove( elem, "fxshow" );
+				for ( prop in orig ) {
+					jQuery.style( elem, prop, orig[ prop ] );
+				}
+			} );
+		}
+
+		// Per-property setup
+		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+		if ( !( prop in dataShow ) ) {
+			dataShow[ prop ] = propTween.start;
+			if ( hidden ) {
+				propTween.end = propTween.start;
+				propTween.start = 0;
+			}
+		}
+	}
+}
+
+function propFilter( props, specialEasing ) {
+	var index, name, easing, value, hooks;
+
+	// camelCase, specialEasing and expand cssHook pass
+	for ( index in props ) {
+		name = jQuery.camelCase( index );
+		easing = specialEasing[ name ];
+		value = props[ index ];
+		if ( jQuery.isArray( value ) ) {
+			easing = value[ 1 ];
+			value = props[ index ] = value[ 0 ];
+		}
+
+		if ( index !== name ) {
+			props[ name ] = value;
+			delete props[ index ];
+		}
+
+		hooks = jQuery.cssHooks[ name ];
+		if ( hooks && "expand" in hooks ) {
+			value = hooks.expand( value );
+			delete props[ name ];
+
+			// Not quite $.extend, this won't overwrite existing keys.
+			// Reusing 'index' because we have the correct "name"
+			for ( index in value ) {
+				if ( !( index in props ) ) {
+					props[ index ] = value[ index ];
+					specialEasing[ index ] = easing;
+				}
+			}
+		} else {
+			specialEasing[ name ] = easing;
+		}
+	}
+}
+
+function Animation( elem, properties, options ) {
+	var result,
+		stopped,
+		index = 0,
+		length = Animation.prefilters.length,
+		deferred = jQuery.Deferred().always( function() {
+
+			// Don't match elem in the :animated selector
+			delete tick.elem;
+		} ),
+		tick = function() {
+			if ( stopped ) {
+				return false;
+			}
+			var currentTime = fxNow || createFxNow(),
+				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+
+				// Support: Android 2.3 only
+				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+				temp = remaining / animation.duration || 0,
+				percent = 1 - temp,
+				index = 0,
+				length = animation.tweens.length;
+
+			for ( ; index < length; index++ ) {
+				animation.tweens[ index ].run( percent );
+			}
+
+			deferred.notifyWith( elem, [ animation, percent, remaining ] );
+
+			if ( percent < 1 && length ) {
+				return remaining;
+			} else {
+				deferred.resolveWith( elem, [ animation ] );
+				return false;
+			}
+		},
+		animation = deferred.promise( {
+			elem: elem,
+			props: jQuery.extend( {}, properties ),
+			opts: jQuery.extend( true, {
+				specialEasing: {},
+				easing: jQuery.easing._default
+			}, options ),
+			originalProperties: properties,
+			originalOptions: options,
+			startTime: fxNow || createFxNow(),
+			duration: options.duration,
+			tweens: [],
+			createTween: function( prop, end ) {
+				var tween = jQuery.Tween( elem, animation.opts, prop, end,
+						animation.opts.specialEasing[ prop ] || animation.opts.easing );
+				animation.tweens.push( tween );
+				return tween;
+			},
+			stop: function( gotoEnd ) {
+				var index = 0,
+
+					// If we are going to the end, we want to run all the tweens
+					// otherwise we skip this part
+					length = gotoEnd ? animation.tweens.length : 0;
+				if ( stopped ) {
+					return this;
+				}
+				stopped = true;
+				for ( ; index < length; index++ ) {
+					animation.tweens[ index ].run( 1 );
+				}
+
+				// Resolve when we played the last frame; otherwise, reject
+				if ( gotoEnd ) {
+					deferred.notifyWith( elem, [ animation, 1, 0 ] );
+					deferred.resolveWith( elem, [ animation, gotoEnd ] );
+				} else {
+					deferred.rejectWith( elem, [ animation, gotoEnd ] );
+				}
+				return this;
+			}
+		} ),
+		props = animation.props;
+
+	propFilter( props, animation.opts.specialEasing );
+
+	for ( ; index < length; index++ ) {
+		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
+		if ( result ) {
+			if ( jQuery.isFunction( result.stop ) ) {
+				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
+					jQuery.proxy( result.stop, result );
+			}
+			return result;
+		}
+	}
+
+	jQuery.map( props, createTween, animation );
+
+	if ( jQuery.isFunction( animation.opts.start ) ) {
+		animation.opts.start.call( elem, animation );
+	}
+
+	jQuery.fx.timer(
+		jQuery.extend( tick, {
+			elem: elem,
+			anim: animation,
+			queue: animation.opts.queue
+		} )
+	);
+
+	// attach callbacks from options
+	return animation.progress( animation.opts.progress )
+		.done( animation.opts.done, animation.opts.complete )
+		.fail( animation.opts.fail )
+		.always( animation.opts.always );
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+	tweeners: {
+		"*": [ function( prop, value ) {
+			var tween = this.createTween( prop, value );
+			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
+			return tween;
+		} ]
+	},
+
+	tweener: function( props, callback ) {
+		if ( jQuery.isFunction( props ) ) {
+			callback = props;
+			props = [ "*" ];
+		} else {
+			props = props.match( rnotwhite );
+		}
+
+		var prop,
+			index = 0,
+			length = props.length;
+
+		for ( ; index < length; index++ ) {
+			prop = props[ index ];
+			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
+			Animation.tweeners[ prop ].unshift( callback );
+		}
+	},
+
+	prefilters: [ defaultPrefilter ],
+
+	prefilter: function( callback, prepend ) {
+		if ( prepend ) {
+			Animation.prefilters.unshift( callback );
+		} else {
+			Animation.prefilters.push( callback );
+		}
+	}
+} );
+
+jQuery.speed = function( speed, easing, fn ) {
+	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+		complete: fn || !fn && easing ||
+			jQuery.isFunction( speed ) && speed,
+		duration: speed,
+		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+	};
+
+	// Go to the end state if fx are off or if document is hidden
+	if ( jQuery.fx.off || document.hidden ) {
+		opt.duration = 0;
+
+	} else {
+		opt.duration = typeof opt.duration === "number" ?
+			opt.duration : opt.duration in jQuery.fx.speeds ?
+				jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+	}
+
+	// Normalize opt.queue - true/undefined/null -> "fx"
+	if ( opt.queue == null || opt.queue === true ) {
+		opt.queue = "fx";
+	}
+
+	// Queueing
+	opt.old = opt.complete;
+
+	opt.complete = function() {
+		if ( jQuery.isFunction( opt.old ) ) {
+			opt.old.call( this );
+		}
+
+		if ( opt.queue ) {
+			jQuery.dequeue( this, opt.queue );
+		}
+	};
+
+	return opt;
+};
+
+jQuery.fn.extend( {
+	fadeTo: function( speed, to, easing, callback ) {
+
+		// Show any hidden elements after setting opacity to 0
+		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
+
+			// Animate to the value specified
+			.end().animate( { opacity: to }, speed, easing, callback );
+	},
+	animate: function( prop, speed, easing, callback ) {
+		var empty = jQuery.isEmptyObject( prop ),
+			optall = jQuery.speed( speed, easing, callback ),
+			doAnimation = function() {
+
+				// Operate on a copy of prop so per-property easing won't be lost
+				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+				// Empty animations, or finishing resolves immediately
+				if ( empty || dataPriv.get( this, "finish" ) ) {
+					anim.stop( true );
+				}
+			};
+			doAnimation.finish = doAnimation;
+
+		return empty || optall.queue === false ?
+			this.each( doAnimation ) :
+			this.queue( optall.queue, doAnimation );
+	},
+	stop: function( type, clearQueue, gotoEnd ) {
+		var stopQueue = function( hooks ) {
+			var stop = hooks.stop;
+			delete hooks.stop;
+			stop( gotoEnd );
+		};
+
+		if ( typeof type !== "string" ) {
+			gotoEnd = clearQueue;
+			clearQueue = type;
+			type = undefined;
+		}
+		if ( clearQueue && type !== false ) {
+			this.queue( type || "fx", [] );
+		}
+
+		return this.each( function() {
+			var dequeue = true,
+				index = type != null && type + "queueHooks",
+				timers = jQuery.timers,
+				data = dataPriv.get( this );
+
+			if ( index ) {
+				if ( data[ index ] && data[ index ].stop ) {
+					stopQueue( data[ index ] );
+				}
+			} else {
+				for ( index in data ) {
+					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+						stopQueue( data[ index ] );
+					}
+				}
+			}
+
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this &&
+					( type == null || timers[ index ].queue === type ) ) {
+
+					timers[ index ].anim.stop( gotoEnd );
+					dequeue = false;
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Start the next in the queue if the last step wasn't forced.
+			// Timers currently will call their complete callbacks, which
+			// will dequeue but only if they were gotoEnd.
+			if ( dequeue || !gotoEnd ) {
+				jQuery.dequeue( this, type );
+			}
+		} );
+	},
+	finish: function( type ) {
+		if ( type !== false ) {
+			type = type || "fx";
+		}
+		return this.each( function() {
+			var index,
+				data = dataPriv.get( this ),
+				queue = data[ type + "queue" ],
+				hooks = data[ type + "queueHooks" ],
+				timers = jQuery.timers,
+				length = queue ? queue.length : 0;
+
+			// Enable finishing flag on private data
+			data.finish = true;
+
+			// Empty the queue first
+			jQuery.queue( this, type, [] );
+
+			if ( hooks && hooks.stop ) {
+				hooks.stop.call( this, true );
+			}
+
+			// Look for any active animations, and finish them
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+					timers[ index ].anim.stop( true );
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Look for any animations in the old queue and finish them
+			for ( index = 0; index < length; index++ ) {
+				if ( queue[ index ] && queue[ index ].finish ) {
+					queue[ index ].finish.call( this );
+				}
+			}
+
+			// Turn off finishing flag
+			delete data.finish;
+		} );
+	}
+} );
+
+jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
+	var cssFn = jQuery.fn[ name ];
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return speed == null || typeof speed === "boolean" ?
+			cssFn.apply( this, arguments ) :
+			this.animate( genFx( name, true ), speed, easing, callback );
+	};
+} );
+
+// Generate shortcuts for custom animations
+jQuery.each( {
+	slideDown: genFx( "show" ),
+	slideUp: genFx( "hide" ),
+	slideToggle: genFx( "toggle" ),
+	fadeIn: { opacity: "show" },
+	fadeOut: { opacity: "hide" },
+	fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return this.animate( props, speed, easing, callback );
+	};
+} );
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+	var timer,
+		i = 0,
+		timers = jQuery.timers;
+
+	fxNow = jQuery.now();
+
+	for ( ; i < timers.length; i++ ) {
+		timer = timers[ i ];
+
+		// Checks the timer has not already been removed
+		if ( !timer() && timers[ i ] === timer ) {
+			timers.splice( i--, 1 );
+		}
+	}
+
+	if ( !timers.length ) {
+		jQuery.fx.stop();
+	}
+	fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+	jQuery.timers.push( timer );
+	if ( timer() ) {
+		jQuery.fx.start();
+	} else {
+		jQuery.timers.pop();
+	}
+};
+
+jQuery.fx.interval = 13;
+jQuery.fx.start = function() {
+	if ( !timerId ) {
+		timerId = window.requestAnimationFrame ?
+			window.requestAnimationFrame( raf ) :
+			window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
+	}
+};
+
+jQuery.fx.stop = function() {
+	if ( window.cancelAnimationFrame ) {
+		window.cancelAnimationFrame( timerId );
+	} else {
+		window.clearInterval( timerId );
+	}
+
+	timerId = null;
+};
+
+jQuery.fx.speeds = {
+	slow: 600,
+	fast: 200,
+
+	// Default speed
+	_default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+	type = type || "fx";
+
+	return this.queue( type, function( next, hooks ) {
+		var timeout = window.setTimeout( next, time );
+		hooks.stop = function() {
+			window.clearTimeout( timeout );
+		};
+	} );
+};
+
+
+( function() {
+	var input = document.createElement( "input" ),
+		select = document.createElement( "select" ),
+		opt = select.appendChild( document.createElement( "option" ) );
+
+	input.type = "checkbox";
+
+	// Support: Android <=4.3 only
+	// Default value for a checkbox should be "on"
+	support.checkOn = input.value !== "";
+
+	// Support: IE <=11 only
+	// Must access selectedIndex to make default options select
+	support.optSelected = opt.selected;
+
+	// Support: IE <=11 only
+	// An input loses its value after becoming a radio
+	input = document.createElement( "input" );
+	input.value = "t";
+	input.type = "radio";
+	support.radioValue = input.value === "t";
+} )();
+
+
+var boolHook,
+	attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend( {
+	attr: function( name, value ) {
+		return access( this, jQuery.attr, name, value, arguments.length > 1 );
+	},
+
+	removeAttr: function( name ) {
+		return this.each( function() {
+			jQuery.removeAttr( this, name );
+		} );
+	}
+} );
+
+jQuery.extend( {
+	attr: function( elem, name, value ) {
+		var ret, hooks,
+			nType = elem.nodeType;
+
+		// Don't get/set attributes on text, comment and attribute nodes
+		if ( nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		// Fallback to prop when attributes are not supported
+		if ( typeof elem.getAttribute === "undefined" ) {
+			return jQuery.prop( elem, name, value );
+		}
+
+		// Attribute hooks are determined by the lowercase version
+		// Grab necessary hook if one is defined
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
+				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
+		}
+
+		if ( value !== undefined ) {
+			if ( value === null ) {
+				jQuery.removeAttr( elem, name );
+				return;
+			}
+
+			if ( hooks && "set" in hooks &&
+				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+				return ret;
+			}
+
+			elem.setAttribute( name, value + "" );
+			return value;
+		}
+
+		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+			return ret;
+		}
+
+		ret = jQuery.find.attr( elem, name );
+
+		// Non-existent attributes return null, we normalize to undefined
+		return ret == null ? undefined : ret;
+	},
+
+	attrHooks: {
+		type: {
+			set: function( elem, value ) {
+				if ( !support.radioValue && value === "radio" &&
+					jQuery.nodeName( elem, "input" ) ) {
+					var val = elem.value;
+					elem.setAttribute( "type", value );
+					if ( val ) {
+						elem.value = val;
+					}
+					return value;
+				}
+			}
+		}
+	},
+
+	removeAttr: function( elem, value ) {
+		var name,
+			i = 0,
+			attrNames = value && value.match( rnotwhite );
+
+		if ( attrNames && elem.nodeType === 1 ) {
+			while ( ( name = attrNames[ i++ ] ) ) {
+				elem.removeAttribute( name );
+			}
+		}
+	}
+} );
+
+// Hooks for boolean attributes
+boolHook = {
+	set: function( elem, value, name ) {
+		if ( value === false ) {
+
+			// Remove boolean attributes when set to false
+			jQuery.removeAttr( elem, name );
+		} else {
+			elem.setAttribute( name, name );
+		}
+		return name;
+	}
+};
+
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+	var getter = attrHandle[ name ] || jQuery.find.attr;
+
+	attrHandle[ name ] = function( elem, name, isXML ) {
+		var ret, handle,
+			lowercaseName = name.toLowerCase();
+
+		if ( !isXML ) {
+
+			// Avoid an infinite loop by temporarily removing this function from the getter
+			handle = attrHandle[ lowercaseName ];
+			attrHandle[ lowercaseName ] = ret;
+			ret = getter( elem, name, isXML ) != null ?
+				lowercaseName :
+				null;
+			attrHandle[ lowercaseName ] = handle;
+		}
+		return ret;
+	};
+} );
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i,
+	rclickable = /^(?:a|area)$/i;
+
+jQuery.fn.extend( {
+	prop: function( name, value ) {
+		return access( this, jQuery.prop, name, value, arguments.length > 1 );
+	},
+
+	removeProp: function( name ) {
+		return this.each( function() {
+			delete this[ jQuery.propFix[ name ] || name ];
+		} );
+	}
+} );
+
+jQuery.extend( {
+	prop: function( elem, name, value ) {
+		var ret, hooks,
+			nType = elem.nodeType;
+
+		// Don't get/set properties on text, comment and attribute nodes
+		if ( nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+
+			// Fix name and attach hooks
+			name = jQuery.propFix[ name ] || name;
+			hooks = jQuery.propHooks[ name ];
+		}
+
+		if ( value !== undefined ) {
+			if ( hooks && "set" in hooks &&
+				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+				return ret;
+			}
+
+			return ( elem[ name ] = value );
+		}
+
+		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+			return ret;
+		}
+
+		return elem[ name ];
+	},
+
+	propHooks: {
+		tabIndex: {
+			get: function( elem ) {
+
+				// Support: IE <=9 - 11 only
+				// elem.tabIndex doesn't always return the
+				// correct value when it hasn't been explicitly set
+				// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+				// Use proper attribute retrieval(#12072)
+				var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+				return tabindex ?
+					parseInt( tabindex, 10 ) :
+					rfocusable.test( elem.nodeName ) ||
+						rclickable.test( elem.nodeName ) && elem.href ?
+							0 :
+							-1;
+			}
+		}
+	},
+
+	propFix: {
+		"for": "htmlFor",
+		"class": "className"
+	}
+} );
+
+// Support: IE <=11 only
+// Accessing the selectedIndex property
+// forces the browser to respect setting selected
+// on the option
+// The getter ensures a default option is selected
+// when in an optgroup
+if ( !support.optSelected ) {
+	jQuery.propHooks.selected = {
+		get: function( elem ) {
+			var parent = elem.parentNode;
+			if ( parent && parent.parentNode ) {
+				parent.parentNode.selectedIndex;
+			}
+			return null;
+		},
+		set: function( elem ) {
+			var parent = elem.parentNode;
+			if ( parent ) {
+				parent.selectedIndex;
+
+				if ( parent.parentNode ) {
+					parent.parentNode.selectedIndex;
+				}
+			}
+		}
+	};
+}
+
+jQuery.each( [
+	"tabIndex",
+	"readOnly",
+	"maxLength",
+	"cellSpacing",
+	"cellPadding",
+	"rowSpan",
+	"colSpan",
+	"useMap",
+	"frameBorder",
+	"contentEditable"
+], function() {
+	jQuery.propFix[ this.toLowerCase() ] = this;
+} );
+
+
+
+
+var rclass = /[\t\r\n\f]/g;
+
+function getClass( elem ) {
+	return elem.getAttribute && elem.getAttribute( "class" ) || "";
+}
+
+jQuery.fn.extend( {
+	addClass: function( value ) {
+		var classes, elem, cur, curValue, clazz, j, finalValue,
+			i = 0;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each( function( j ) {
+				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
+			} );
+		}
+
+		if ( typeof value === "string" && value ) {
+			classes = value.match( rnotwhite ) || [];
+
+			while ( ( elem = this[ i++ ] ) ) {
+				curValue = getClass( elem );
+				cur = elem.nodeType === 1 &&
+					( " " + curValue + " " ).replace( rclass, " " );
+
+				if ( cur ) {
+					j = 0;
+					while ( ( clazz = classes[ j++ ] ) ) {
+						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+							cur += clazz + " ";
+						}
+					}
+
+					// Only assign if different to avoid unneeded rendering.
+					finalValue = jQuery.trim( cur );
+					if ( curValue !== finalValue ) {
+						elem.setAttribute( "class", finalValue );
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	removeClass: function( value ) {
+		var classes, elem, cur, curValue, clazz, j, finalValue,
+			i = 0;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each( function( j ) {
+				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
+			} );
+		}
+
+		if ( !arguments.length ) {
+			return this.attr( "class", "" );
+		}
+
+		if ( typeof value === "string" && value ) {
+			classes = value.match( rnotwhite ) || [];
+
+			while ( ( elem = this[ i++ ] ) ) {
+				curValue = getClass( elem );
+
+				// This expression is here for better compressibility (see addClass)
+				cur = elem.nodeType === 1 &&
+					( " " + curValue + " " ).replace( rclass, " " );
+
+				if ( cur ) {
+					j = 0;
+					while ( ( clazz = classes[ j++ ] ) ) {
+
+						// Remove *all* instances
+						while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
+							cur = cur.replace( " " + clazz + " ", " " );
+						}
+					}
+
+					// Only assign if different to avoid unneeded rendering.
+					finalValue = jQuery.trim( cur );
+					if ( curValue !== finalValue ) {
+						elem.setAttribute( "class", finalValue );
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	toggleClass: function( value, stateVal ) {
+		var type = typeof value;
+
+		if ( typeof stateVal === "boolean" && type === "string" ) {
+			return stateVal ? this.addClass( value ) : this.removeClass( value );
+		}
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each( function( i ) {
+				jQuery( this ).toggleClass(
+					value.call( this, i, getClass( this ), stateVal ),
+					stateVal
+				);
+			} );
+		}
+
+		return this.each( function() {
+			var className, i, self, classNames;
+
+			if ( type === "string" ) {
+
+				// Toggle individual class names
+				i = 0;
+				self = jQuery( this );
+				classNames = value.match( rnotwhite ) || [];
+
+				while ( ( className = classNames[ i++ ] ) ) {
+
+					// Check each className given, space separated list
+					if ( self.hasClass( className ) ) {
+						self.removeClass( className );
+					} else {
+						self.addClass( className );
+					}
+				}
+
+			// Toggle whole class name
+			} else if ( value === undefined || type === "boolean" ) {
+				className = getClass( this );
+				if ( className ) {
+
+					// Store className if set
+					dataPriv.set( this, "__className__", className );
+				}
+
+				// If the element has a class name or if we're passed `false`,
+				// then remove the whole classname (if there was one, the above saved it).
+				// Otherwise bring back whatever was previously saved (if anything),
+				// falling back to the empty string if nothing was stored.
+				if ( this.setAttribute ) {
+					this.setAttribute( "class",
+						className || value === false ?
+						"" :
+						dataPriv.get( this, "__className__" ) || ""
+					);
+				}
+			}
+		} );
+	},
+
+	hasClass: function( selector ) {
+		var className, elem,
+			i = 0;
+
+		className = " " + selector + " ";
+		while ( ( elem = this[ i++ ] ) ) {
+			if ( elem.nodeType === 1 &&
+				( " " + getClass( elem ) + " " ).replace( rclass, " " )
+					.indexOf( className ) > -1
+			) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+} );
+
+
+
+
+var rreturn = /\r/g,
+	rspaces = /[\x20\t\r\n\f]+/g;
+
+jQuery.fn.extend( {
+	val: function( value ) {
+		var hooks, ret, isFunction,
+			elem = this[ 0 ];
+
+		if ( !arguments.length ) {
+			if ( elem ) {
+				hooks = jQuery.valHooks[ elem.type ] ||
+					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+				if ( hooks &&
+					"get" in hooks &&
+					( ret = hooks.get( elem, "value" ) ) !== undefined
+				) {
+					return ret;
+				}
+
+				ret = elem.value;
+
+				return typeof ret === "string" ?
+
+					// Handle most common string cases
+					ret.replace( rreturn, "" ) :
+
+					// Handle cases where value is null/undef or number
+					ret == null ? "" : ret;
+			}
+
+			return;
+		}
+
+		isFunction = jQuery.isFunction( value );
+
+		return this.each( function( i ) {
+			var val;
+
+			if ( this.nodeType !== 1 ) {
+				return;
+			}
+
+			if ( isFunction ) {
+				val = value.call( this, i, jQuery( this ).val() );
+			} else {
+				val = value;
+			}
+
+			// Treat null/undefined as ""; convert numbers to string
+			if ( val == null ) {
+				val = "";
+
+			} else if ( typeof val === "number" ) {
+				val += "";
+
+			} else if ( jQuery.isArray( val ) ) {
+				val = jQuery.map( val, function( value ) {
+					return value == null ? "" : value + "";
+				} );
+			}
+
+			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+			// If set returns undefined, fall back to normal setting
+			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
+				this.value = val;
+			}
+		} );
+	}
+} );
+
+jQuery.extend( {
+	valHooks: {
+		option: {
+			get: function( elem ) {
+
+				var val = jQuery.find.attr( elem, "value" );
+				return val != null ?
+					val :
+
+					// Support: IE <=10 - 11 only
+					// option.text throws exceptions (#14686, #14858)
+					// Strip and collapse whitespace
+					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+					jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " );
+			}
+		},
+		select: {
+			get: function( elem ) {
+				var value, option,
+					options = elem.options,
+					index = elem.selectedIndex,
+					one = elem.type === "select-one",
+					values = one ? null : [],
+					max = one ? index + 1 : options.length,
+					i = index < 0 ?
+						max :
+						one ? index : 0;
+
+				// Loop through all the selected options
+				for ( ; i < max; i++ ) {
+					option = options[ i ];
+
+					// Support: IE <=9 only
+					// IE8-9 doesn't update selected after form reset (#2551)
+					if ( ( option.selected || i === index ) &&
+
+							// Don't return options that are disabled or in a disabled optgroup
+							!option.disabled &&
+							( !option.parentNode.disabled ||
+								!jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+						// Get the specific value for the option
+						value = jQuery( option ).val();
+
+						// We don't need an array for one selects
+						if ( one ) {
+							return value;
+						}
+
+						// Multi-Selects return an array
+						values.push( value );
+					}
+				}
+
+				return values;
+			},
+
+			set: function( elem, value ) {
+				var optionSet, option,
+					options = elem.options,
+					values = jQuery.makeArray( value ),
+					i = options.length;
+
+				while ( i-- ) {
+					option = options[ i ];
+
+					/* eslint-disable no-cond-assign */
+
+					if ( option.selected =
+						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
+					) {
+						optionSet = true;
+					}
+
+					/* eslint-enable no-cond-assign */
+				}
+
+				// Force browsers to behave consistently when non-matching value is set
+				if ( !optionSet ) {
+					elem.selectedIndex = -1;
+				}
+				return values;
+			}
+		}
+	}
+} );
+
+// Radios and checkboxes getter/setter
+jQuery.each( [ "radio", "checkbox" ], function() {
+	jQuery.valHooks[ this ] = {
+		set: function( elem, value ) {
+			if ( jQuery.isArray( value ) ) {
+				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
+			}
+		}
+	};
+	if ( !support.checkOn ) {
+		jQuery.valHooks[ this ].get = function( elem ) {
+			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
+		};
+	}
+} );
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
+
+jQuery.extend( jQuery.event, {
+
+	trigger: function( event, data, elem, onlyHandlers ) {
+
+		var i, cur, tmp, bubbleType, ontype, handle, special,
+			eventPath = [ elem || document ],
+			type = hasOwn.call( event, "type" ) ? event.type : event,
+			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
+
+		cur = tmp = elem = elem || document;
+
+		// Don't do events on text and comment nodes
+		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+			return;
+		}
+
+		// focus/blur morphs to focusin/out; ensure we're not firing them right now
+		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+			return;
+		}
+
+		if ( type.indexOf( "." ) > -1 ) {
+
+			// Namespaced trigger; create a regexp to match event type in handle()
+			namespaces = type.split( "." );
+			type = namespaces.shift();
+			namespaces.sort();
+		}
+		ontype = type.indexOf( ":" ) < 0 && "on" + type;
+
+		// Caller can pass in a jQuery.Event object, Object, or just an event type string
+		event = event[ jQuery.expando ] ?
+			event :
+			new jQuery.Event( type, typeof event === "object" && event );
+
+		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+		event.isTrigger = onlyHandlers ? 2 : 3;
+		event.namespace = namespaces.join( "." );
+		event.rnamespace = event.namespace ?
+			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
+			null;
+
+		// Clean up the event in case it is being reused
+		event.result = undefined;
+		if ( !event.target ) {
+			event.target = elem;
+		}
+
+		// Clone any incoming data and prepend the event, creating the handler arg list
+		data = data == null ?
+			[ event ] :
+			jQuery.makeArray( data, [ event ] );
+
+		// Allow special events to draw outside the lines
+		special = jQuery.event.special[ type ] || {};
+		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+			return;
+		}
+
+		// Determine event propagation path in advance, per W3C events spec (#9951)
+		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+			bubbleType = special.delegateType || type;
+			if ( !rfocusMorph.test( bubbleType + type ) ) {
+				cur = cur.parentNode;
+			}
+			for ( ; cur; cur = cur.parentNode ) {
+				eventPath.push( cur );
+				tmp = cur;
+			}
+
+			// Only add window if we got to document (e.g., not plain obj or detached DOM)
+			if ( tmp === ( elem.ownerDocument || document ) ) {
+				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+			}
+		}
+
+		// Fire handlers on the event path
+		i = 0;
+		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
+
+			event.type = i > 1 ?
+				bubbleType :
+				special.bindType || type;
+
+			// jQuery handler
+			handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
+				dataPriv.get( cur, "handle" );
+			if ( handle ) {
+				handle.apply( cur, data );
+			}
+
+			// Native handler
+			handle = ontype && cur[ ontype ];
+			if ( handle && handle.apply && acceptData( cur ) ) {
+				event.result = handle.apply( cur, data );
+				if ( event.result === false ) {
+					event.preventDefault();
+				}
+			}
+		}
+		event.type = type;
+
+		// If nobody prevented the default action, do it now
+		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+			if ( ( !special._default ||
+				special._default.apply( eventPath.pop(), data ) === false ) &&
+				acceptData( elem ) ) {
+
+				// Call a native DOM method on the target with the same name as the event.
+				// Don't do default actions on window, that's where global variables be (#6170)
+				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+					// Don't re-trigger an onFOO event when we call its FOO() method
+					tmp = elem[ ontype ];
+
+					if ( tmp ) {
+						elem[ ontype ] = null;
+					}
+
+					// Prevent re-triggering of the same event, since we already bubbled it above
+					jQuery.event.triggered = type;
+					elem[ type ]();
+					jQuery.event.triggered = undefined;
+
+					if ( tmp ) {
+						elem[ ontype ] = tmp;
+					}
+				}
+			}
+		}
+
+		return event.result;
+	},
+
+	// Piggyback on a donor event to simulate a different one
+	// Used only for `focus(in | out)` events
+	simulate: function( type, elem, event ) {
+		var e = jQuery.extend(
+			new jQuery.Event(),
+			event,
+			{
+				type: type,
+				isSimulated: true
+			}
+		);
+
+		jQuery.event.trigger( e, null, elem );
+	}
+
+} );
+
+jQuery.fn.extend( {
+
+	trigger: function( type, data ) {
+		return this.each( function() {
+			jQuery.event.trigger( type, data, this );
+		} );
+	},
+	triggerHandler: function( type, data ) {
+		var elem = this[ 0 ];
+		if ( elem ) {
+			return jQuery.event.trigger( type, data, elem, true );
+		}
+	}
+} );
+
+
+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
+	function( i, name ) {
+
+	// Handle event binding
+	jQuery.fn[ name ] = function( data, fn ) {
+		return arguments.length > 0 ?
+			this.on( name, null, data, fn ) :
+			this.trigger( name );
+	};
+} );
+
+jQuery.fn.extend( {
+	hover: function( fnOver, fnOut ) {
+		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+	}
+} );
+
+
+
+
+support.focusin = "onfocusin" in window;
+
+
+// Support: Firefox <=44
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
+	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+		// Attach a single capturing handler on the document while someone wants focusin/focusout
+		var handler = function( event ) {
+			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
+		};
+
+		jQuery.event.special[ fix ] = {
+			setup: function() {
+				var doc = this.ownerDocument || this,
+					attaches = dataPriv.access( doc, fix );
+
+				if ( !attaches ) {
+					doc.addEventListener( orig, handler, true );
+				}
+				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
+			},
+			teardown: function() {
+				var doc = this.ownerDocument || this,
+					attaches = dataPriv.access( doc, fix ) - 1;
+
+				if ( !attaches ) {
+					doc.removeEventListener( orig, handler, true );
+					dataPriv.remove( doc, fix );
+
+				} else {
+					dataPriv.access( doc, fix, attaches );
+				}
+			}
+		};
+	} );
+}
+var location = window.location;
+
+var nonce = jQuery.now();
+
+var rquery = ( /\?/ );
+
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+	var xml;
+	if ( !data || typeof data !== "string" ) {
+		return null;
+	}
+
+	// Support: IE 9 - 11 only
+	// IE throws on parseFromString with invalid input.
+	try {
+		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
+	} catch ( e ) {
+		xml = undefined;
+	}
+
+	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+		jQuery.error( "Invalid XML: " + data );
+	}
+	return xml;
+};
+
+
+var
+	rbracket = /\[\]$/,
+	rCRLF = /\r?\n/g,
+	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+	rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+	var name;
+
+	if ( jQuery.isArray( obj ) ) {
+
+		// Serialize array item.
+		jQuery.each( obj, function( i, v ) {
+			if ( traditional || rbracket.test( prefix ) ) {
+
+				// Treat each array item as a scalar.
+				add( prefix, v );
+
+			} else {
+
+				// Item is non-scalar (array or object), encode its numeric index.
+				buildParams(
+					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
+					v,
+					traditional,
+					add
+				);
+			}
+		} );
+
+	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
+
+		// Serialize object item.
+		for ( name in obj ) {
+			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+		}
+
+	} else {
+
+		// Serialize scalar item.
+		add( prefix, obj );
+	}
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+	var prefix,
+		s = [],
+		add = function( key, valueOrFunction ) {
+
+			// If value is a function, invoke it and use its return value
+			var value = jQuery.isFunction( valueOrFunction ) ?
+				valueOrFunction() :
+				valueOrFunction;
+
+			s[ s.length ] = encodeURIComponent( key ) + "=" +
+				encodeURIComponent( value == null ? "" : value );
+		};
+
+	// If an array was passed in, assume that it is an array of form elements.
+	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+
+		// Serialize the form elements
+		jQuery.each( a, function() {
+			add( this.name, this.value );
+		} );
+
+	} else {
+
+		// If traditional, encode the "old" way (the way 1.3.2 or older
+		// did it), otherwise encode params recursively.
+		for ( prefix in a ) {
+			buildParams( prefix, a[ prefix ], traditional, add );
+		}
+	}
+
+	// Return the resulting serialization
+	return s.join( "&" );
+};
+
+jQuery.fn.extend( {
+	serialize: function() {
+		return jQuery.param( this.serializeArray() );
+	},
+	serializeArray: function() {
+		return this.map( function() {
+
+			// Can add propHook for "elements" to filter or add form elements
+			var elements = jQuery.prop( this, "elements" );
+			return elements ? jQuery.makeArray( elements ) : this;
+		} )
+		.filter( function() {
+			var type = this.type;
+
+			// Use .is( ":disabled" ) so that fieldset[disabled] works
+			return this.name && !jQuery( this ).is( ":disabled" ) &&
+				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+				( this.checked || !rcheckableType.test( type ) );
+		} )
+		.map( function( i, elem ) {
+			var val = jQuery( this ).val();
+
+			return val == null ?
+				null :
+				jQuery.isArray( val ) ?
+					jQuery.map( val, function( val ) {
+						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+					} ) :
+					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+		} ).get();
+	}
+} );
+
+
+var
+	r20 = /%20/g,
+	rhash = /#.*$/,
+	rts = /([?&])_=[^&]*/,
+	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+
+	// #7653, #8125, #8152: local protocol detection
+	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+	rnoContent = /^(?:GET|HEAD)$/,
+	rprotocol = /^\/\//,
+
+	/* Prefilters
+	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+	 * 2) These are called:
+	 *    - BEFORE asking for a transport
+	 *    - AFTER param serialization (s.data is a string if s.processData is true)
+	 * 3) key is the dataType
+	 * 4) the catchall symbol "*" can be used
+	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+	 */
+	prefilters = {},
+
+	/* Transports bindings
+	 * 1) key is the dataType
+	 * 2) the catchall symbol "*" can be used
+	 * 3) selection will start with transport dataType and THEN go to "*" if needed
+	 */
+	transports = {},
+
+	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+	allTypes = "*/".concat( "*" ),
+
+	// Anchor tag for parsing the document origin
+	originAnchor = document.createElement( "a" );
+	originAnchor.href = location.href;
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+	// dataTypeExpression is optional and defaults to "*"
+	return function( dataTypeExpression, func ) {
+
+		if ( typeof dataTypeExpression !== "string" ) {
+			func = dataTypeExpression;
+			dataTypeExpression = "*";
+		}
+
+		var dataType,
+			i = 0,
+			dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
+
+		if ( jQuery.isFunction( func ) ) {
+
+			// For each dataType in the dataTypeExpression
+			while ( ( dataType = dataTypes[ i++ ] ) ) {
+
+				// Prepend if requested
+				if ( dataType[ 0 ] === "+" ) {
+					dataType = dataType.slice( 1 ) || "*";
+					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
+
+				// Otherwise append
+				} else {
+					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
+				}
+			}
+		}
+	};
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+	var inspected = {},
+		seekingTransport = ( structure === transports );
+
+	function inspect( dataType ) {
+		var selected;
+		inspected[ dataType ] = true;
+		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+			if ( typeof dataTypeOrTransport === "string" &&
+				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+
+				options.dataTypes.unshift( dataTypeOrTransport );
+				inspect( dataTypeOrTransport );
+				return false;
+			} else if ( seekingTransport ) {
+				return !( selected = dataTypeOrTransport );
+			}
+		} );
+		return selected;
+	}
+
+	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+	var key, deep,
+		flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+	for ( key in src ) {
+		if ( src[ key ] !== undefined ) {
+			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+		}
+	}
+	if ( deep ) {
+		jQuery.extend( true, target, deep );
+	}
+
+	return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+	var ct, type, finalDataType, firstDataType,
+		contents = s.contents,
+		dataTypes = s.dataTypes;
+
+	// Remove auto dataType and get content-type in the process
+	while ( dataTypes[ 0 ] === "*" ) {
+		dataTypes.shift();
+		if ( ct === undefined ) {
+			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
+		}
+	}
+
+	// Check if we're dealing with a known content-type
+	if ( ct ) {
+		for ( type in contents ) {
+			if ( contents[ type ] && contents[ type ].test( ct ) ) {
+				dataTypes.unshift( type );
+				break;
+			}
+		}
+	}
+
+	// Check to see if we have a response for the expected dataType
+	if ( dataTypes[ 0 ] in responses ) {
+		finalDataType = dataTypes[ 0 ];
+	} else {
+
+		// Try convertible dataTypes
+		for ( type in responses ) {
+			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
+				finalDataType = type;
+				break;
+			}
+			if ( !firstDataType ) {
+				firstDataType = type;
+			}
+		}
+
+		// Or just use first one
+		finalDataType = finalDataType || firstDataType;
+	}
+
+	// If we found a dataType
+	// We add the dataType to the list if needed
+	// and return the corresponding response
+	if ( finalDataType ) {
+		if ( finalDataType !== dataTypes[ 0 ] ) {
+			dataTypes.unshift( finalDataType );
+		}
+		return responses[ finalDataType ];
+	}
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+	var conv2, current, conv, tmp, prev,
+		converters = {},
+
+		// Work with a copy of dataTypes in case we need to modify it for conversion
+		dataTypes = s.dataTypes.slice();
+
+	// Create converters map with lowercased keys
+	if ( dataTypes[ 1 ] ) {
+		for ( conv in s.converters ) {
+			converters[ conv.toLowerCase() ] = s.converters[ conv ];
+		}
+	}
+
+	current = dataTypes.shift();
+
+	// Convert to each sequential dataType
+	while ( current ) {
+
+		if ( s.responseFields[ current ] ) {
+			jqXHR[ s.responseFields[ current ] ] = response;
+		}
+
+		// Apply the dataFilter if provided
+		if ( !prev && isSuccess && s.dataFilter ) {
+			response = s.dataFilter( response, s.dataType );
+		}
+
+		prev = current;
+		current = dataTypes.shift();
+
+		if ( current ) {
+
+			// There's only work to do if current dataType is non-auto
+			if ( current === "*" ) {
+
+				current = prev;
+
+			// Convert response if prev dataType is non-auto and differs from current
+			} else if ( prev !== "*" && prev !== current ) {
+
+				// Seek a direct converter
+				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+				// If none found, seek a pair
+				if ( !conv ) {
+					for ( conv2 in converters ) {
+
+						// If conv2 outputs current
+						tmp = conv2.split( " " );
+						if ( tmp[ 1 ] === current ) {
+
+							// If prev can be converted to accepted input
+							conv = converters[ prev + " " + tmp[ 0 ] ] ||
+								converters[ "* " + tmp[ 0 ] ];
+							if ( conv ) {
+
+								// Condense equivalence converters
+								if ( conv === true ) {
+									conv = converters[ conv2 ];
+
+								// Otherwise, insert the intermediate dataType
+								} else if ( converters[ conv2 ] !== true ) {
+									current = tmp[ 0 ];
+									dataTypes.unshift( tmp[ 1 ] );
+								}
+								break;
+							}
+						}
+					}
+				}
+
+				// Apply converter (if not an equivalence)
+				if ( conv !== true ) {
+
+					// Unless errors are allowed to bubble, catch and return them
+					if ( conv && s.throws ) {
+						response = conv( response );
+					} else {
+						try {
+							response = conv( response );
+						} catch ( e ) {
+							return {
+								state: "parsererror",
+								error: conv ? e : "No conversion from " + prev + " to " + current
+							};
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return { state: "success", data: response };
+}
+
+jQuery.extend( {
+
+	// Counter for holding the number of active queries
+	active: 0,
+
+	// Last-Modified header cache for next request
+	lastModified: {},
+	etag: {},
+
+	ajaxSettings: {
+		url: location.href,
+		type: "GET",
+		isLocal: rlocalProtocol.test( location.protocol ),
+		global: true,
+		processData: true,
+		async: true,
+		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+
+		/*
+		timeout: 0,
+		data: null,
+		dataType: null,
+		username: null,
+		password: null,
+		cache: null,
+		throws: false,
+		traditional: false,
+		headers: {},
+		*/
+
+		accepts: {
+			"*": allTypes,
+			text: "text/plain",
+			html: "text/html",
+			xml: "application/xml, text/xml",
+			json: "application/json, text/javascript"
+		},
+
+		contents: {
+			xml: /\bxml\b/,
+			html: /\bhtml/,
+			json: /\bjson\b/
+		},
+
+		responseFields: {
+			xml: "responseXML",
+			text: "responseText",
+			json: "responseJSON"
+		},
+
+		// Data converters
+		// Keys separate source (or catchall "*") and destination types with a single space
+		converters: {
+
+			// Convert anything to text
+			"* text": String,
+
+			// Text to html (true = no transformation)
+			"text html": true,
+
+			// Evaluate text as a json expression
+			"text json": JSON.parse,
+
+			// Parse text as xml
+			"text xml": jQuery.parseXML
+		},
+
+		// For options that shouldn't be deep extended:
+		// you can add your own custom options here if
+		// and when you create one that shouldn't be
+		// deep extended (see ajaxExtend)
+		flatOptions: {
+			url: true,
+			context: true
+		}
+	},
+
+	// Creates a full fledged settings object into target
+	// with both ajaxSettings and settings fields.
+	// If target is omitted, writes into ajaxSettings.
+	ajaxSetup: function( target, settings ) {
+		return settings ?
+
+			// Building a settings object
+			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+			// Extending ajaxSettings
+			ajaxExtend( jQuery.ajaxSettings, target );
+	},
+
+	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+	ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+	// Main method
+	ajax: function( url, options ) {
+
+		// If url is an object, simulate pre-1.5 signature
+		if ( typeof url === "object" ) {
+			options = url;
+			url = undefined;
+		}
+
+		// Force options to be an object
+		options = options || {};
+
+		var transport,
+
+			// URL without anti-cache param
+			cacheURL,
+
+			// Response headers
+			responseHeadersString,
+			responseHeaders,
+
+			// timeout handle
+			timeoutTimer,
+
+			// Url cleanup var
+			urlAnchor,
+
+			// Request state (becomes false upon send and true upon completion)
+			completed,
+
+			// To know if global events are to be dispatched
+			fireGlobals,
+
+			// Loop variable
+			i,
+
+			// uncached part of the url
+			uncached,
+
+			// Create the final options object
+			s = jQuery.ajaxSetup( {}, options ),
+
+			// Callbacks context
+			callbackContext = s.context || s,
+
+			// Context for global events is callbackContext if it is a DOM node or jQuery collection
+			globalEventContext = s.context &&
+				( callbackContext.nodeType || callbackContext.jquery ) ?
+					jQuery( callbackContext ) :
+					jQuery.event,
+
+			// Deferreds
+			deferred = jQuery.Deferred(),
+			completeDeferred = jQuery.Callbacks( "once memory" ),
+
+			// Status-dependent callbacks
+			statusCode = s.statusCode || {},
+
+			// Headers (they are sent all at once)
+			requestHeaders = {},
+			requestHeadersNames = {},
+
+			// Default abort message
+			strAbort = "canceled",
+
+			// Fake xhr
+			jqXHR = {
+				readyState: 0,
+
+				// Builds headers hashtable if needed
+				getResponseHeader: function( key ) {
+					var match;
+					if ( completed ) {
+						if ( !responseHeaders ) {
+							responseHeaders = {};
+							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
+								responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
+							}
+						}
+						match = responseHeaders[ key.toLowerCase() ];
+					}
+					return match == null ? null : match;
+				},
+
+				// Raw string
+				getAllResponseHeaders: function() {
+					return completed ? responseHeadersString : null;
+				},
+
+				// Caches the header
+				setRequestHeader: function( name, value ) {
+					if ( completed == null ) {
+						name = requestHeadersNames[ name.toLowerCase() ] =
+							requestHeadersNames[ name.toLowerCase() ] || name;
+						requestHeaders[ name ] = value;
+					}
+					return this;
+				},
+
+				// Overrides response content-type header
+				overrideMimeType: function( type ) {
+					if ( completed == null ) {
+						s.mimeType = type;
+					}
+					return this;
+				},
+
+				// Status-dependent callbacks
+				statusCode: function( map ) {
+					var code;
+					if ( map ) {
+						if ( completed ) {
+
+							// Execute the appropriate callbacks
+							jqXHR.always( map[ jqXHR.status ] );
+						} else {
+
+							// Lazy-add the new callbacks in a way that preserves old ones
+							for ( code in map ) {
+								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+							}
+						}
+					}
+					return this;
+				},
+
+				// Cancel the request
+				abort: function( statusText ) {
+					var finalText = statusText || strAbort;
+					if ( transport ) {
+						transport.abort( finalText );
+					}
+					done( 0, finalText );
+					return this;
+				}
+			};
+
+		// Attach deferreds
+		deferred.promise( jqXHR );
+
+		// Add protocol if not provided (prefilters might expect it)
+		// Handle falsy url in the settings object (#10093: consistency with old signature)
+		// We also use the url parameter if available
+		s.url = ( ( url || s.url || location.href ) + "" )
+			.replace( rprotocol, location.protocol + "//" );
+
+		// Alias method option to type as per ticket #12004
+		s.type = options.method || options.type || s.method || s.type;
+
+		// Extract dataTypes list
+		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
+
+		// A cross-domain request is in order when the origin doesn't match the current origin.
+		if ( s.crossDomain == null ) {
+			urlAnchor = document.createElement( "a" );
+
+			// Support: IE <=8 - 11, Edge 12 - 13
+			// IE throws exception on accessing the href property if url is malformed,
+			// e.g. http://example.com:80x/
+			try {
+				urlAnchor.href = s.url;
+
+				// Support: IE <=8 - 11 only
+				// Anchor's host property isn't correctly set when s.url is relative
+				urlAnchor.href = urlAnchor.href;
+				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
+					urlAnchor.protocol + "//" + urlAnchor.host;
+			} catch ( e ) {
+
+				// If there is an error parsing the URL, assume it is crossDomain,
+				// it can be rejected by the transport if it is invalid
+				s.crossDomain = true;
+			}
+		}
+
+		// Convert data if not already a string
+		if ( s.data && s.processData && typeof s.data !== "string" ) {
+			s.data = jQuery.param( s.data, s.traditional );
+		}
+
+		// Apply prefilters
+		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+		// If request was aborted inside a prefilter, stop there
+		if ( completed ) {
+			return jqXHR;
+		}
+
+		// We can fire global events as of now if asked to
+		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+		fireGlobals = jQuery.event && s.global;
+
+		// Watch for a new set of requests
+		if ( fireGlobals && jQuery.active++ === 0 ) {
+			jQuery.event.trigger( "ajaxStart" );
+		}
+
+		// Uppercase the type
+		s.type = s.type.toUpperCase();
+
+		// Determine if request has content
+		s.hasContent = !rnoContent.test( s.type );
+
+		// Save the URL in case we're toying with the If-Modified-Since
+		// and/or If-None-Match header later on
+		// Remove hash to simplify url manipulation
+		cacheURL = s.url.replace( rhash, "" );
+
+		// More options handling for requests with no content
+		if ( !s.hasContent ) {
+
+			// Remember the hash so we can put it back
+			uncached = s.url.slice( cacheURL.length );
+
+			// If data is available, append data to url
+			if ( s.data ) {
+				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
+
+				// #9682: remove data so that it's not used in an eventual retry
+				delete s.data;
+			}
+
+			// Add anti-cache in uncached url if needed
+			if ( s.cache === false ) {
+				cacheURL = cacheURL.replace( rts, "" );
+				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
+			}
+
+			// Put hash and anti-cache on the URL that will be requested (gh-1732)
+			s.url = cacheURL + uncached;
+
+		// Change '%20' to '+' if this is encoded form body content (gh-2658)
+		} else if ( s.data && s.processData &&
+			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
+			s.data = s.data.replace( r20, "+" );
+		}
+
+		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+		if ( s.ifModified ) {
+			if ( jQuery.lastModified[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+			}
+			if ( jQuery.etag[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+			}
+		}
+
+		// Set the correct header, if data is being sent
+		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+			jqXHR.setRequestHeader( "Content-Type", s.contentType );
+		}
+
+		// Set the Accepts header for the server, depending on the dataType
+		jqXHR.setRequestHeader(
+			"Accept",
+			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
+				s.accepts[ s.dataTypes[ 0 ] ] +
+					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+				s.accepts[ "*" ]
+		);
+
+		// Check for headers option
+		for ( i in s.headers ) {
+			jqXHR.setRequestHeader( i, s.headers[ i ] );
+		}
+
+		// Allow custom headers/mimetypes and early abort
+		if ( s.beforeSend &&
+			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
+
+			// Abort if not done already and return
+			return jqXHR.abort();
+		}
+
+		// Aborting is no longer a cancellation
+		strAbort = "abort";
+
+		// Install callbacks on deferreds
+		completeDeferred.add( s.complete );
+		jqXHR.done( s.success );
+		jqXHR.fail( s.error );
+
+		// Get transport
+		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+		// If no transport, we auto-abort
+		if ( !transport ) {
+			done( -1, "No Transport" );
+		} else {
+			jqXHR.readyState = 1;
+
+			// Send global event
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+			}
+
+			// If request was aborted inside ajaxSend, stop there
+			if ( completed ) {
+				return jqXHR;
+			}
+
+			// Timeout
+			if ( s.async && s.timeout > 0 ) {
+				timeoutTimer = window.setTimeout( function() {
+					jqXHR.abort( "timeout" );
+				}, s.timeout );
+			}
+
+			try {
+				completed = false;
+				transport.send( requestHeaders, done );
+			} catch ( e ) {
+
+				// Rethrow post-completion exceptions
+				if ( completed ) {
+					throw e;
+				}
+
+				// Propagate others as results
+				done( -1, e );
+			}
+		}
+
+		// Callback for when everything is done
+		function done( status, nativeStatusText, responses, headers ) {
+			var isSuccess, success, error, response, modified,
+				statusText = nativeStatusText;
+
+			// Ignore repeat invocations
+			if ( completed ) {
+				return;
+			}
+
+			completed = true;
+
+			// Clear timeout if it exists
+			if ( timeoutTimer ) {
+				window.clearTimeout( timeoutTimer );
+			}
+
+			// Dereference transport for early garbage collection
+			// (no matter how long the jqXHR object will be used)
+			transport = undefined;
+
+			// Cache response headers
+			responseHeadersString = headers || "";
+
+			// Set readyState
+			jqXHR.readyState = status > 0 ? 4 : 0;
+
+			// Determine if successful
+			isSuccess = status >= 200 && status < 300 || status === 304;
+
+			// Get response data
+			if ( responses ) {
+				response = ajaxHandleResponses( s, jqXHR, responses );
+			}
+
+			// Convert no matter what (that way responseXXX fields are always set)
+			response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+			// If successful, handle type chaining
+			if ( isSuccess ) {
+
+				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+				if ( s.ifModified ) {
+					modified = jqXHR.getResponseHeader( "Last-Modified" );
+					if ( modified ) {
+						jQuery.lastModified[ cacheURL ] = modified;
+					}
+					modified = jqXHR.getResponseHeader( "etag" );
+					if ( modified ) {
+						jQuery.etag[ cacheURL ] = modified;
+					}
+				}
+
+				// if no content
+				if ( status === 204 || s.type === "HEAD" ) {
+					statusText = "nocontent";
+
+				// if not modified
+				} else if ( status === 304 ) {
+					statusText = "notmodified";
+
+				// If we have data, let's convert it
+				} else {
+					statusText = response.state;
+					success = response.data;
+					error = response.error;
+					isSuccess = !error;
+				}
+			} else {
+
+				// Extract error from statusText and normalize for non-aborts
+				error = statusText;
+				if ( status || !statusText ) {
+					statusText = "error";
+					if ( status < 0 ) {
+						status = 0;
+					}
+				}
+			}
+
+			// Set data for the fake xhr object
+			jqXHR.status = status;
+			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+			// Success/Error
+			if ( isSuccess ) {
+				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+			} else {
+				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+			}
+
+			// Status-dependent callbacks
+			jqXHR.statusCode( statusCode );
+			statusCode = undefined;
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+					[ jqXHR, s, isSuccess ? success : error ] );
+			}
+
+			// Complete
+			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+
+				// Handle the global AJAX counter
+				if ( !( --jQuery.active ) ) {
+					jQuery.event.trigger( "ajaxStop" );
+				}
+			}
+		}
+
+		return jqXHR;
+	},
+
+	getJSON: function( url, data, callback ) {
+		return jQuery.get( url, data, callback, "json" );
+	},
+
+	getScript: function( url, callback ) {
+		return jQuery.get( url, undefined, callback, "script" );
+	}
+} );
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+	jQuery[ method ] = function( url, data, callback, type ) {
+
+		// Shift arguments if data argument was omitted
+		if ( jQuery.isFunction( data ) ) {
+			type = type || callback;
+			callback = data;
+			data = undefined;
+		}
+
+		// The url can be an options object (which then must have .url)
+		return jQuery.ajax( jQuery.extend( {
+			url: url,
+			type: method,
+			dataType: type,
+			data: data,
+			success: callback
+		}, jQuery.isPlainObject( url ) && url ) );
+	};
+} );
+
+
+jQuery._evalUrl = function( url ) {
+	return jQuery.ajax( {
+		url: url,
+
+		// Make this explicit, since user can override this through ajaxSetup (#11264)
+		type: "GET",
+		dataType: "script",
+		cache: true,
+		async: false,
+		global: false,
+		"throws": true
+	} );
+};
+
+
+jQuery.fn.extend( {
+	wrapAll: function( html ) {
+		var wrap;
+
+		if ( this[ 0 ] ) {
+			if ( jQuery.isFunction( html ) ) {
+				html = html.call( this[ 0 ] );
+			}
+
+			// The elements to wrap the target around
+			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+			if ( this[ 0 ].parentNode ) {
+				wrap.insertBefore( this[ 0 ] );
+			}
+
+			wrap.map( function() {
+				var elem = this;
+
+				while ( elem.firstElementChild ) {
+					elem = elem.firstElementChild;
+				}
+
+				return elem;
+			} ).append( this );
+		}
+
+		return this;
+	},
+
+	wrapInner: function( html ) {
+		if ( jQuery.isFunction( html ) ) {
+			return this.each( function( i ) {
+				jQuery( this ).wrapInner( html.call( this, i ) );
+			} );
+		}
+
+		return this.each( function() {
+			var self = jQuery( this ),
+				contents = self.contents();
+
+			if ( contents.length ) {
+				contents.wrapAll( html );
+
+			} else {
+				self.append( html );
+			}
+		} );
+	},
+
+	wrap: function( html ) {
+		var isFunction = jQuery.isFunction( html );
+
+		return this.each( function( i ) {
+			jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
+		} );
+	},
+
+	unwrap: function( selector ) {
+		this.parent( selector ).not( "body" ).each( function() {
+			jQuery( this ).replaceWith( this.childNodes );
+		} );
+		return this;
+	}
+} );
+
+
+jQuery.expr.pseudos.hidden = function( elem ) {
+	return !jQuery.expr.pseudos.visible( elem );
+};
+jQuery.expr.pseudos.visible = function( elem ) {
+	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
+};
+
+
+
+
+jQuery.ajaxSettings.xhr = function() {
+	try {
+		return new window.XMLHttpRequest();
+	} catch ( e ) {}
+};
+
+var xhrSuccessStatus = {
+
+		// File protocol always yields status code 0, assume 200
+		0: 200,
+
+		// Support: IE <=9 only
+		// #1450: sometimes IE returns 1223 when it should be 204
+		1223: 204
+	},
+	xhrSupported = jQuery.ajaxSettings.xhr();
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport( function( options ) {
+	var callback, errorCallback;
+
+	// Cross domain only allowed if supported through XMLHttpRequest
+	if ( support.cors || xhrSupported && !options.crossDomain ) {
+		return {
+			send: function( headers, complete ) {
+				var i,
+					xhr = options.xhr();
+
+				xhr.open(
+					options.type,
+					options.url,
+					options.async,
+					options.username,
+					options.password
+				);
+
+				// Apply custom fields if provided
+				if ( options.xhrFields ) {
+					for ( i in options.xhrFields ) {
+						xhr[ i ] = options.xhrFields[ i ];
+					}
+				}
+
+				// Override mime type if needed
+				if ( options.mimeType && xhr.overrideMimeType ) {
+					xhr.overrideMimeType( options.mimeType );
+				}
+
+				// X-Requested-With header
+				// For cross-domain requests, seeing as conditions for a preflight are
+				// akin to a jigsaw puzzle, we simply never set it to be sure.
+				// (it can always be set on a per-request basis or even using ajaxSetup)
+				// For same-domain requests, won't change header if already provided.
+				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
+					headers[ "X-Requested-With" ] = "XMLHttpRequest";
+				}
+
+				// Set headers
+				for ( i in headers ) {
+					xhr.setRequestHeader( i, headers[ i ] );
+				}
+
+				// Callback
+				callback = function( type ) {
+					return function() {
+						if ( callback ) {
+							callback = errorCallback = xhr.onload =
+								xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
+
+							if ( type === "abort" ) {
+								xhr.abort();
+							} else if ( type === "error" ) {
+
+								// Support: IE <=9 only
+								// On a manual native abort, IE9 throws
+								// errors on any property access that is not readyState
+								if ( typeof xhr.status !== "number" ) {
+									complete( 0, "error" );
+								} else {
+									complete(
+
+										// File: protocol always yields status 0; see #8605, #14207
+										xhr.status,
+										xhr.statusText
+									);
+								}
+							} else {
+								complete(
+									xhrSuccessStatus[ xhr.status ] || xhr.status,
+									xhr.statusText,
+
+									// Support: IE <=9 only
+									// IE9 has no XHR2 but throws on binary (trac-11426)
+									// For XHR2 non-text, let the caller handle it (gh-2498)
+									( xhr.responseType || "text" ) !== "text"  ||
+									typeof xhr.responseText !== "string" ?
+										{ binary: xhr.response } :
+										{ text: xhr.responseText },
+									xhr.getAllResponseHeaders()
+								);
+							}
+						}
+					};
+				};
+
+				// Listen to events
+				xhr.onload = callback();
+				errorCallback = xhr.onerror = callback( "error" );
+
+				// Support: IE 9 only
+				// Use onreadystatechange to replace onabort
+				// to handle uncaught aborts
+				if ( xhr.onabort !== undefined ) {
+					xhr.onabort = errorCallback;
+				} else {
+					xhr.onreadystatechange = function() {
+
+						// Check readyState before timeout as it changes
+						if ( xhr.readyState === 4 ) {
+
+							// Allow onerror to be called first,
+							// but that will not handle a native abort
+							// Also, save errorCallback to a variable
+							// as xhr.onerror cannot be accessed
+							window.setTimeout( function() {
+								if ( callback ) {
+									errorCallback();
+								}
+							} );
+						}
+					};
+				}
+
+				// Create the abort callback
+				callback = callback( "abort" );
+
+				try {
+
+					// Do send the request (this may raise an exception)
+					xhr.send( options.hasContent && options.data || null );
+				} catch ( e ) {
+
+					// #14683: Only rethrow if this hasn't been notified as an error yet
+					if ( callback ) {
+						throw e;
+					}
+				}
+			},
+
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+} );
+
+
+
+
+// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
+jQuery.ajaxPrefilter( function( s ) {
+	if ( s.crossDomain ) {
+		s.contents.script = false;
+	}
+} );
+
+// Install script dataType
+jQuery.ajaxSetup( {
+	accepts: {
+		script: "text/javascript, application/javascript, " +
+			"application/ecmascript, application/x-ecmascript"
+	},
+	contents: {
+		script: /\b(?:java|ecma)script\b/
+	},
+	converters: {
+		"text script": function( text ) {
+			jQuery.globalEval( text );
+			return text;
+		}
+	}
+} );
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+	if ( s.cache === undefined ) {
+		s.cache = false;
+	}
+	if ( s.crossDomain ) {
+		s.type = "GET";
+	}
+} );
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+
+	// This transport only deals with cross domain requests
+	if ( s.crossDomain ) {
+		var script, callback;
+		return {
+			send: function( _, complete ) {
+				script = jQuery( "<script>" ).prop( {
+					charset: s.scriptCharset,
+					src: s.url
+				} ).on(
+					"load error",
+					callback = function( evt ) {
+						script.remove();
+						callback = null;
+						if ( evt ) {
+							complete( evt.type === "error" ? 404 : 200, evt.type );
+						}
+					}
+				);
+
+				// Use native DOM manipulation to avoid our domManip AJAX trickery
+				document.head.appendChild( script[ 0 ] );
+			},
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+} );
+
+
+
+
+var oldCallbacks = [],
+	rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup( {
+	jsonp: "callback",
+	jsonpCallback: function() {
+		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+		this[ callback ] = true;
+		return callback;
+	}
+} );
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+	var callbackName, overwritten, responseContainer,
+		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+			"url" :
+			typeof s.data === "string" &&
+				( s.contentType || "" )
+					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+				rjsonp.test( s.data ) && "data"
+		);
+
+	// Handle iff the expected data type is "jsonp" or we have a parameter to set
+	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+		// Get callback name, remembering preexisting value associated with it
+		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+			s.jsonpCallback() :
+			s.jsonpCallback;
+
+		// Insert callback into url or form data
+		if ( jsonProp ) {
+			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+		} else if ( s.jsonp !== false ) {
+			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+		}
+
+		// Use data converter to retrieve json after script execution
+		s.converters[ "script json" ] = function() {
+			if ( !responseContainer ) {
+				jQuery.error( callbackName + " was not called" );
+			}
+			return responseContainer[ 0 ];
+		};
+
+		// Force json dataType
+		s.dataTypes[ 0 ] = "json";
+
+		// Install callback
+		overwritten = window[ callbackName ];
+		window[ callbackName ] = function() {
+			responseContainer = arguments;
+		};
+
+		// Clean-up function (fires after converters)
+		jqXHR.always( function() {
+
+			// If previous value didn't exist - remove it
+			if ( overwritten === undefined ) {
+				jQuery( window ).removeProp( callbackName );
+
+			// Otherwise restore preexisting value
+			} else {
+				window[ callbackName ] = overwritten;
+			}
+
+			// Save back as free
+			if ( s[ callbackName ] ) {
+
+				// Make sure that re-using the options doesn't screw things around
+				s.jsonpCallback = originalSettings.jsonpCallback;
+
+				// Save the callback name for future use
+				oldCallbacks.push( callbackName );
+			}
+
+			// Call if it was a function and we have a response
+			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+				overwritten( responseContainer[ 0 ] );
+			}
+
+			responseContainer = overwritten = undefined;
+		} );
+
+		// Delegate to script
+		return "script";
+	}
+} );
+
+
+
+
+// Support: Safari 8 only
+// In Safari 8 documents created via document.implementation.createHTMLDocument
+// collapse sibling forms: the second one becomes a child of the first one.
+// Because of that, this security measure has to be disabled in Safari 8.
+// https://bugs.webkit.org/show_bug.cgi?id=137337
+support.createHTMLDocument = ( function() {
+	var body = document.implementation.createHTMLDocument( "" ).body;
+	body.innerHTML = "<form></form><form></form>";
+	return body.childNodes.length === 2;
+} )();
+
+
+// Argument "data" should be string of html
+// context (optional): If specified, the fragment will be created in this context,
+// defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+	if ( typeof data !== "string" ) {
+		return [];
+	}
+	if ( typeof context === "boolean" ) {
+		keepScripts = context;
+		context = false;
+	}
+
+	var base, parsed, scripts;
+
+	if ( !context ) {
+
+		// Stop scripts or inline event handlers from being executed immediately
+		// by using document.implementation
+		if ( support.createHTMLDocument ) {
+			context = document.implementation.createHTMLDocument( "" );
+
+			// Set the base href for the created document
+			// so any parsed elements with URLs
+			// are based on the document's URL (gh-2965)
+			base = context.createElement( "base" );
+			base.href = document.location.href;
+			context.head.appendChild( base );
+		} else {
+			context = document;
+		}
+	}
+
+	parsed = rsingleTag.exec( data );
+	scripts = !keepScripts && [];
+
+	// Single tag
+	if ( parsed ) {
+		return [ context.createElement( parsed[ 1 ] ) ];
+	}
+
+	parsed = buildFragment( [ data ], context, scripts );
+
+	if ( scripts && scripts.length ) {
+		jQuery( scripts ).remove();
+	}
+
+	return jQuery.merge( [], parsed.childNodes );
+};
+
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+	var selector, type, response,
+		self = this,
+		off = url.indexOf( " " );
+
+	if ( off > -1 ) {
+		selector = jQuery.trim( url.slice( off ) );
+		url = url.slice( 0, off );
+	}
+
+	// If it's a function
+	if ( jQuery.isFunction( params ) ) {
+
+		// We assume that it's the callback
+		callback = params;
+		params = undefined;
+
+	// Otherwise, build a param string
+	} else if ( params && typeof params === "object" ) {
+		type = "POST";
+	}
+
+	// If we have elements to modify, make the request
+	if ( self.length > 0 ) {
+		jQuery.ajax( {
+			url: url,
+
+			// If "type" variable is undefined, then "GET" method will be used.
+			// Make value of this field explicit since
+			// user can override it through ajaxSetup method
+			type: type || "GET",
+			dataType: "html",
+			data: params
+		} ).done( function( responseText ) {
+
+			// Save response for use in complete callback
+			response = arguments;
+
+			self.html( selector ?
+
+				// If a selector was specified, locate the right elements in a dummy div
+				// Exclude scripts to avoid IE 'Permission Denied' errors
+				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+				// Otherwise use the full result
+				responseText );
+
+		// If the request succeeds, this function gets "data", "status", "jqXHR"
+		// but they are ignored because response was set above.
+		// If it fails, this function gets "jqXHR", "status", "error"
+		} ).always( callback && function( jqXHR, status ) {
+			self.each( function() {
+				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
+			} );
+		} );
+	}
+
+	return this;
+};
+
+
+
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [
+	"ajaxStart",
+	"ajaxStop",
+	"ajaxComplete",
+	"ajaxError",
+	"ajaxSuccess",
+	"ajaxSend"
+], function( i, type ) {
+	jQuery.fn[ type ] = function( fn ) {
+		return this.on( type, fn );
+	};
+} );
+
+
+
+
+jQuery.expr.pseudos.animated = function( elem ) {
+	return jQuery.grep( jQuery.timers, function( fn ) {
+		return elem === fn.elem;
+	} ).length;
+};
+
+
+
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+	return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+	setOffset: function( elem, options, i ) {
+		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+			position = jQuery.css( elem, "position" ),
+			curElem = jQuery( elem ),
+			props = {};
+
+		// Set position first, in-case top/left are set even on static elem
+		if ( position === "static" ) {
+			elem.style.position = "relative";
+		}
+
+		curOffset = curElem.offset();
+		curCSSTop = jQuery.css( elem, "top" );
+		curCSSLeft = jQuery.css( elem, "left" );
+		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
+
+		// Need to be able to calculate position if either
+		// top or left is auto and position is either absolute or fixed
+		if ( calculatePosition ) {
+			curPosition = curElem.position();
+			curTop = curPosition.top;
+			curLeft = curPosition.left;
+
+		} else {
+			curTop = parseFloat( curCSSTop ) || 0;
+			curLeft = parseFloat( curCSSLeft ) || 0;
+		}
+
+		if ( jQuery.isFunction( options ) ) {
+
+			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
+		}
+
+		if ( options.top != null ) {
+			props.top = ( options.top - curOffset.top ) + curTop;
+		}
+		if ( options.left != null ) {
+			props.left = ( options.left - curOffset.left ) + curLeft;
+		}
+
+		if ( "using" in options ) {
+			options.using.call( elem, props );
+
+		} else {
+			curElem.css( props );
+		}
+	}
+};
+
+jQuery.fn.extend( {
+	offset: function( options ) {
+
+		// Preserve chaining for setter
+		if ( arguments.length ) {
+			return options === undefined ?
+				this :
+				this.each( function( i ) {
+					jQuery.offset.setOffset( this, options, i );
+				} );
+		}
+
+		var docElem, win, rect, doc,
+			elem = this[ 0 ];
+
+		if ( !elem ) {
+			return;
+		}
+
+		// Support: IE <=11 only
+		// Running getBoundingClientRect on a
+		// disconnected node in IE throws an error
+		if ( !elem.getClientRects().length ) {
+			return { top: 0, left: 0 };
+		}
+
+		rect = elem.getBoundingClientRect();
+
+		// Make sure element is not hidden (display: none)
+		if ( rect.width || rect.height ) {
+			doc = elem.ownerDocument;
+			win = getWindow( doc );
+			docElem = doc.documentElement;
+
+			return {
+				top: rect.top + win.pageYOffset - docElem.clientTop,
+				left: rect.left + win.pageXOffset - docElem.clientLeft
+			};
+		}
+
+		// Return zeros for disconnected and hidden elements (gh-2310)
+		return rect;
+	},
+
+	position: function() {
+		if ( !this[ 0 ] ) {
+			return;
+		}
+
+		var offsetParent, offset,
+			elem = this[ 0 ],
+			parentOffset = { top: 0, left: 0 };
+
+		// Fixed elements are offset from window (parentOffset = {top:0, left: 0},
+		// because it is its only offset parent
+		if ( jQuery.css( elem, "position" ) === "fixed" ) {
+
+			// Assume getBoundingClientRect is there when computed position is fixed
+			offset = elem.getBoundingClientRect();
+
+		} else {
+
+			// Get *real* offsetParent
+			offsetParent = this.offsetParent();
+
+			// Get correct offsets
+			offset = this.offset();
+			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+				parentOffset = offsetParent.offset();
+			}
+
+			// Add offsetParent borders
+			parentOffset = {
+				top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
+				left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
+			};
+		}
+
+		// Subtract parent offsets and element margins
+		return {
+			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+		};
+	},
+
+	// This method will return documentElement in the following cases:
+	// 1) For the element inside the iframe without offsetParent, this method will return
+	//    documentElement of the parent window
+	// 2) For the hidden or detached element
+	// 3) For body or html element, i.e. in case of the html node - it will return itself
+	//
+	// but those exceptions were never presented as a real life use-cases
+	// and might be considered as more preferable results.
+	//
+	// This logic, however, is not guaranteed and can change at any point in the future
+	offsetParent: function() {
+		return this.map( function() {
+			var offsetParent = this.offsetParent;
+
+			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
+				offsetParent = offsetParent.offsetParent;
+			}
+
+			return offsetParent || documentElement;
+		} );
+	}
+} );
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+	var top = "pageYOffset" === prop;
+
+	jQuery.fn[ method ] = function( val ) {
+		return access( this, function( elem, method, val ) {
+			var win = getWindow( elem );
+
+			if ( val === undefined ) {
+				return win ? win[ prop ] : elem[ method ];
+			}
+
+			if ( win ) {
+				win.scrollTo(
+					!top ? val : win.pageXOffset,
+					top ? val : win.pageYOffset
+				);
+
+			} else {
+				elem[ method ] = val;
+			}
+		}, method, val, arguments.length );
+	};
+} );
+
+// Support: Safari <=7 - 9.1, Chrome <=37 - 49
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+		function( elem, computed ) {
+			if ( computed ) {
+				computed = curCSS( elem, prop );
+
+				// If curCSS returns percentage, fallback to offset
+				return rnumnonpx.test( computed ) ?
+					jQuery( elem ).position()[ prop ] + "px" :
+					computed;
+			}
+		}
+	);
+} );
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
+		function( defaultExtra, funcName ) {
+
+		// Margin is only for outerHeight, outerWidth
+		jQuery.fn[ funcName ] = function( margin, value ) {
+			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+			return access( this, function( elem, type, value ) {
+				var doc;
+
+				if ( jQuery.isWindow( elem ) ) {
+
+					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
+					return funcName.indexOf( "outer" ) === 0 ?
+						elem[ "inner" + name ] :
+						elem.document.documentElement[ "client" + name ];
+				}
+
+				// Get document width or height
+				if ( elem.nodeType === 9 ) {
+					doc = elem.documentElement;
+
+					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+					// whichever is greatest
+					return Math.max(
+						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+						elem.body[ "offset" + name ], doc[ "offset" + name ],
+						doc[ "client" + name ]
+					);
+				}
+
+				return value === undefined ?
+
+					// Get width or height on the element, requesting but not forcing parseFloat
+					jQuery.css( elem, type, extra ) :
+
+					// Set width or height on the element
+					jQuery.style( elem, type, value, extra );
+			}, type, chainable ? margin : undefined, chainable );
+		};
+	} );
+} );
+
+
+jQuery.fn.extend( {
+
+	bind: function( types, data, fn ) {
+		return this.on( types, null, data, fn );
+	},
+	unbind: function( types, fn ) {
+		return this.off( types, null, fn );
+	},
+
+	delegate: function( selector, types, data, fn ) {
+		return this.on( types, selector, data, fn );
+	},
+	undelegate: function( selector, types, fn ) {
+
+		// ( namespace ) or ( selector, types [, fn] )
+		return arguments.length === 1 ?
+			this.off( selector, "**" ) :
+			this.off( types, selector || "**", fn );
+	}
+} );
+
+jQuery.parseJSON = JSON.parse;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+	define( "jquery", [], function() {
+		return jQuery;
+	} );
+}
+
+
+
+
+
+var
+
+	// Map over jQuery in case of overwrite
+	_jQuery = window.jQuery,
+
+	// Map over the $ in case of overwrite
+	_$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+	if ( window.$ === jQuery ) {
+		window.$ = _$;
+	}
+
+	if ( deep && window.jQuery === jQuery ) {
+		window.jQuery = _jQuery;
+	}
+
+	return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( !noGlobal ) {
+	window.jQuery = window.$ = jQuery;
+}
+
+
+return jQuery;
+} );
diff --git a/docs/usrman/_static/jquery.js b/docs/usrman/_static/jquery.js
index 3883779..f6a6a99 100644
--- a/docs/usrman/_static/jquery.js
+++ b/docs/usrman/_static/jquery.js
@@ -1,2 +1,4 @@
-/*! jQuery v1.8.3 jquery.com | jquery.org/license */
-(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){retur [...]
\ No newline at end of file
+/*! jQuery v3.1.0 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElem [...]
+r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:fun [...]
+if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),hb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ib[b]||r.find.attr;ib[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ib[g],ib[g]=e,e=null!=c(a,b,d)?g:null,ib[g]=f),e}});var jb=/^(?:input|select|textarea|button)$/i,kb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:f [...]
diff --git a/docs/usrman/_static/minus.png b/docs/usrman/_static/minus.png
index da1c562..d96755f 100644
Binary files a/docs/usrman/_static/minus.png and b/docs/usrman/_static/minus.png differ
diff --git a/docs/usrman/_static/plus.png b/docs/usrman/_static/plus.png
index b3cb374..7107cec 100644
Binary files a/docs/usrman/_static/plus.png and b/docs/usrman/_static/plus.png differ
diff --git a/docs/usrman/_static/pygments.css b/docs/usrman/_static/pygments.css
index 8213e90..20c4814 100644
--- a/docs/usrman/_static/pygments.css
+++ b/docs/usrman/_static/pygments.css
@@ -47,8 +47,10 @@
 .highlight .mh { color: #208050 } /* Literal.Number.Hex */
 .highlight .mi { color: #208050 } /* Literal.Number.Integer */
 .highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
 .highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
 .highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
 .highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
 .highlight .s2 { color: #4070a0 } /* Literal.String.Double */
 .highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
@@ -59,7 +61,9 @@
 .highlight .s1 { color: #4070a0 } /* Literal.String.Single */
 .highlight .ss { color: #517918 } /* Literal.String.Symbol */
 .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #06287e } /* Name.Function.Magic */
 .highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
 .highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
 .highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
 .highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/docs/usrman/_static/searchtools.js b/docs/usrman/_static/searchtools.js
index 6e1f06b..bbfb3ac 100644
--- a/docs/usrman/_static/searchtools.js
+++ b/docs/usrman/_static/searchtools.js
@@ -2,14 +2,15 @@
  * searchtools.js_t
  * ~~~~~~~~~~~~~~~~
  *
- * Sphinx JavaScript utilties for the full-text search.
+ * Sphinx JavaScript utilities for the full-text search.
  *
- * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
 
 
+/* Non-minified version JS is _stemmer.js if file is provided */ 
 /**
  * Porter Stemmer
  */
@@ -225,6 +226,106 @@ var Scorer = {
 };
 
 
+
+
+
+var splitChars = (function() {
+    var result = {};
+    var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
+         1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
+         2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
+         2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
+         3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
+         3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
+         4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
+         8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
+         11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
+         43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
+    var i, j, start, end;
+    for (i = 0; i < singles.length; i++) {
+        result[singles[i]] = true;
+    }
+    var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
+         [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
+         [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
+         [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
+         [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
+         [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
+         [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
+         [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
+         [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
+         [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
+         [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
+         [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
+         [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
+         [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
+         [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
+         [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
+         [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
+         [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
+         [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
+         [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
+         [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
+         [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
+         [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
+         [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
+         [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
+         [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
+         [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
+         [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
+         [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
+         [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
+         [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
+         [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
+         [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
+         [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
+         [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
+         [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
+         [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
+         [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
+         [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
+         [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
+         [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
+         [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
+         [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
+         [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
+         [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
+         [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
+         [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
+         [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
+         [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
+    for (i = 0; i < ranges.length; i++) {
+        start = ranges[i][0];
+        end = ranges[i][1];
+        for (j = start; j <= end; j++) {
+            result[j] = true;
+        }
+    }
+    return result;
+})();
+
+function splitQuery(query) {
+    var result = [];
+    var start = -1;
+    for (var i = 0; i < query.length; i++) {
+        if (splitChars[query.charCodeAt(i)]) {
+            if (start !== -1) {
+                result.push(query.slice(start, i));
+                start = -1;
+            }
+        } else if (start === -1) {
+            start = i;
+        }
+    }
+    if (start !== -1) {
+        result.push(query.slice(start));
+    }
+    return result;
+}
+
+
+
+
 /**
  * Search Module
  */
@@ -323,7 +424,7 @@ var Search = {
     var searchterms = [];
     var excluded = [];
     var hlterms = [];
-    var tmp = query.split(/\s+/);
+    var tmp = splitQuery(query);
     var objectterms = [];
     for (i = 0; i < tmp.length; i++) {
       if (tmp[i] !== "") {
@@ -337,6 +438,10 @@ var Search = {
       }
       // stem the word
       var word = stemmer.stemWord(tmp[i].toLowerCase());
+      // prevent stemmer from cutting word smaller than two chars
+      if(word.length < 3 && tmp[i].length >= 3) {
+        word = tmp[i];
+      }
       var toAppend;
       // select the correct list
       if (word[0] == '-') {
@@ -373,8 +478,7 @@ var Search = {
     }
 
     // lookup as search terms in fulltext
-    results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
-                     .concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
+    results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
 
     // let the scorer override scores with a custom scoring function
     if (Scorer.score) {
@@ -435,11 +539,12 @@ var Search = {
             displayNextItem();
           });
         } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
-          $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
+          var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
+          $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
                   dataType: "text",
                   complete: function(jqxhr, textstatus) {
                     var data = jqxhr.responseText;
-                    if (data !== '') {
+                    if (data !== '' && data !== undefined) {
                       listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
                     }
                     Search.output.append(listItem);
@@ -474,6 +579,7 @@ var Search = {
    */
   performObjectSearch : function(object, otherterms) {
     var filenames = this._index.filenames;
+    var docnames = this._index.docnames;
     var objects = this._index.objects;
     var objnames = this._index.objnames;
     var titles = this._index.titles;
@@ -527,7 +633,7 @@ var Search = {
           } else {
             score += Scorer.objPrioDefault;
           }
-          results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
+          results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
         }
       }
     }
@@ -538,23 +644,48 @@ var Search = {
   /**
    * search for full-text terms in the index
    */
-  performTermsSearch : function(searchterms, excluded, terms, score) {
+  performTermsSearch : function(searchterms, excluded, terms, titleterms) {
+    var docnames = this._index.docnames;
     var filenames = this._index.filenames;
     var titles = this._index.titles;
 
-    var i, j, file, files;
+    var i, j, file;
     var fileMap = {};
+    var scoreMap = {};
     var results = [];
 
     // perform the search on the required terms
     for (i = 0; i < searchterms.length; i++) {
       var word = searchterms[i];
+      var files = [];
+      var _o = [
+        {files: terms[word], score: Scorer.term},
+        {files: titleterms[word], score: Scorer.title}
+      ];
+
       // no match but word was a required one
-      if ((files = terms[word]) === undefined)
+      if ($u.every(_o, function(o){return o.files === undefined;})) {
         break;
-      if (files.length === undefined) {
-        files = [files];
       }
+      // found search word in contents
+      $u.each(_o, function(o) {
+        var _files = o.files;
+        if (_files === undefined)
+          return
+
+        if (_files.length === undefined)
+          _files = [_files];
+        files = files.concat(_files);
+
+        // set score for the word in each file to Scorer.term
+        for (j = 0; j < _files.length; j++) {
+          file = _files[j];
+          if (!(file in scoreMap))
+            scoreMap[file] = {}
+          scoreMap[file][word] = o.score;
+        }
+      });
+
       // create the mapping
       for (j = 0; j < files.length; j++) {
         file = files[j];
@@ -576,7 +707,9 @@ var Search = {
       // ensure that none of the excluded terms is in the search result
       for (i = 0; i < excluded.length; i++) {
         if (terms[excluded[i]] == file ||
-          $u.contains(terms[excluded[i]] || [], file)) {
+            titleterms[excluded[i]] == file ||
+            $u.contains(terms[excluded[i]] || [], file) ||
+            $u.contains(titleterms[excluded[i]] || [], file)) {
           valid = false;
           break;
         }
@@ -584,7 +717,10 @@ var Search = {
 
       // if we have still a valid result we can add it to the result list
       if (valid) {
-        results.push([filenames[file], titles[file], '', null, score]);
+        // select one (max) score for the file.
+        // for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
+        var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
+        results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
       }
     }
     return results;
@@ -594,7 +730,7 @@ var Search = {
    * helper function to return a node containing the
    * search summary for a given text. keywords is a list
    * of stemmed words, hlwords is the list of normal, unstemmed
-   * words. the first one is used to find the occurance, the
+   * words. the first one is used to find the occurrence, the
    * latter for highlighting it.
    */
   makeSearchSummary : function(text, keywords, hlwords) {
diff --git a/docs/usrman/_static/sidebar.js b/docs/usrman/_static/sidebar.js
index 4f09a0d..4282fe9 100644
--- a/docs/usrman/_static/sidebar.js
+++ b/docs/usrman/_static/sidebar.js
@@ -16,7 +16,7 @@
  * Once the browser is closed the cookie is deleted and the position
  * reset to the default (expanded).
  *
- * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
diff --git a/docs/usrman/_static/underscore-1.3.1.js b/docs/usrman/_static/underscore-1.3.1.js
new file mode 100644
index 0000000..208d4cd
--- /dev/null
+++ b/docs/usrman/_static/underscore-1.3.1.js
@@ -0,0 +1,999 @@
+//     Underscore.js 1.3.1
+//     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+//     Underscore is freely distributable under the MIT license.
+//     Portions of Underscore are inspired or borrowed from Prototype,
+//     Oliver Steele's Functional, and John Resig's Micro-Templating.
+//     For all details and documentation:
+//     http://documentcloud.github.com/underscore
+
+(function() {
+
+  // Baseline setup
+  // --------------
+
+  // Establish the root object, `window` in the browser, or `global` on the server.
+  var root = this;
+
+  // Save the previous value of the `_` variable.
+  var previousUnderscore = root._;
+
+  // Establish the object that gets returned to break out of a loop iteration.
+  var breaker = {};
+
+  // Save bytes in the minified (but not gzipped) version:
+  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
+  // Create quick reference variables for speed access to core prototypes.
+  var slice            = ArrayProto.slice,
+      unshift          = ArrayProto.unshift,
+      toString         = ObjProto.toString,
+      hasOwnProperty   = ObjProto.hasOwnProperty;
+
+  // All **ECMAScript 5** native function implementations that we hope to use
+  // are declared here.
+  var
+    nativeForEach      = ArrayProto.forEach,
+    nativeMap          = ArrayProto.map,
+    nativeReduce       = ArrayProto.reduce,
+    nativeReduceRight  = ArrayProto.reduceRight,
+    nativeFilter       = ArrayProto.filter,
+    nativeEvery        = ArrayProto.every,
+    nativeSome         = ArrayProto.some,
+    nativeIndexOf      = ArrayProto.indexOf,
+    nativeLastIndexOf  = ArrayProto.lastIndexOf,
+    nativeIsArray      = Array.isArray,
+    nativeKeys         = Object.keys,
+    nativeBind         = FuncProto.bind;
+
+  // Create a safe reference to the Underscore object for use below.
+  var _ = function(obj) { return new wrapper(obj); };
+
+  // Export the Underscore object for **Node.js**, with
+  // backwards-compatibility for the old `require()` API. If we're in
+  // the browser, add `_` as a global object via a string identifier,
+  // for Closure Compiler "advanced" mode.
+  if (typeof exports !== 'undefined') {
+    if (typeof module !== 'undefined' && module.exports) {
+      exports = module.exports = _;
+    }
+    exports._ = _;
+  } else {
+    root['_'] = _;
+  }
+
+  // Current version.
+  _.VERSION = '1.3.1';
+
+  // Collection Functions
+  // --------------------
+
+  // The cornerstone, an `each` implementation, aka `forEach`.
+  // Handles objects with the built-in `forEach`, arrays, and raw objects.
+  // Delegates to **ECMAScript 5**'s native `forEach` if available.
+  var each = _.each = _.forEach = function(obj, iterator, context) {
+    if (obj == null) return;
+    if (nativeForEach && obj.forEach === nativeForEach) {
+      obj.forEach(iterator, context);
+    } else if (obj.length === +obj.length) {
+      for (var i = 0, l = obj.length; i < l; i++) {
+        if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
+      }
+    } else {
+      for (var key in obj) {
+        if (_.has(obj, key)) {
+          if (iterator.call(context, obj[key], key, obj) === breaker) return;
+        }
+      }
+    }
+  };
+
+  // Return the results of applying the iterator to each element.
+  // Delegates to **ECMAScript 5**'s native `map` if available.
+  _.map = _.collect = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
+    each(obj, function(value, index, list) {
+      results[results.length] = iterator.call(context, value, index, list);
+    });
+    if (obj.length === +obj.length) results.length = obj.length;
+    return results;
+  };
+
+  // **Reduce** builds up a single result from a list of values, aka `inject`,
+  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
+  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduce && obj.reduce === nativeReduce) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
+    }
+    each(obj, function(value, index, list) {
+      if (!initial) {
+        memo = value;
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, value, index, list);
+      }
+    });
+    if (!initial) throw new TypeError('Reduce of empty array with no initial value');
+    return memo;
+  };
+
+  // The right-associative version of reduce, also known as `foldr`.
+  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
+  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
+    }
+    var reversed = _.toArray(obj).reverse();
+    if (context && !initial) iterator = _.bind(iterator, context);
+    return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);
+  };
+
+  // Return the first value which passes a truth test. Aliased as `detect`.
+  _.find = _.detect = function(obj, iterator, context) {
+    var result;
+    any(obj, function(value, index, list) {
+      if (iterator.call(context, value, index, list)) {
+        result = value;
+        return true;
+      }
+    });
+    return result;
+  };
+
+  // Return all the elements that pass a truth test.
+  // Delegates to **ECMAScript 5**'s native `filter` if available.
+  // Aliased as `select`.
+  _.filter = _.select = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
+    each(obj, function(value, index, list) {
+      if (iterator.call(context, value, index, list)) results[results.length] = value;
+    });
+    return results;
+  };
+
+  // Return all the elements for which a truth test fails.
+  _.reject = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    each(obj, function(value, index, list) {
+      if (!iterator.call(context, value, index, list)) results[results.length] = value;
+    });
+    return results;
+  };
+
+  // Determine whether all of the elements match a truth test.
+  // Delegates to **ECMAScript 5**'s native `every` if available.
+  // Aliased as `all`.
+  _.every = _.all = function(obj, iterator, context) {
+    var result = true;
+    if (obj == null) return result;
+    if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
+    each(obj, function(value, index, list) {
+      if (!(result = result && iterator.call(context, value, index, list))) return breaker;
+    });
+    return result;
+  };
+
+  // Determine if at least one element in the object matches a truth test.
+  // Delegates to **ECMAScript 5**'s native `some` if available.
+  // Aliased as `any`.
+  var any = _.some = _.any = function(obj, iterator, context) {
+    iterator || (iterator = _.identity);
+    var result = false;
+    if (obj == null) return result;
+    if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
+    each(obj, function(value, index, list) {
+      if (result || (result = iterator.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if a given value is included in the array or object using `===`.
+  // Aliased as `contains`.
+  _.include = _.contains = function(obj, target) {
+    var found = false;
+    if (obj == null) return found;
+    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
+    found = any(obj, function(value) {
+      return value === target;
+    });
+    return found;
+  };
+
+  // Invoke a method (with arguments) on every item in a collection.
+  _.invoke = function(obj, method) {
+    var args = slice.call(arguments, 2);
+    return _.map(obj, function(value) {
+      return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
+    });
+  };
+
+  // Convenience version of a common use case of `map`: fetching a property.
+  _.pluck = function(obj, key) {
+    return _.map(obj, function(value){ return value[key]; });
+  };
+
+  // Return the maximum element or (element-based computation).
+  _.max = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj);
+    if (!iterator && _.isEmpty(obj)) return -Infinity;
+    var result = {computed : -Infinity};
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      computed >= result.computed && (result = {value : value, computed : computed});
+    });
+    return result.value;
+  };
+
+  // Return the minimum element (or element-based computation).
+  _.min = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj);
+    if (!iterator && _.isEmpty(obj)) return Infinity;
+    var result = {computed : Infinity};
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      computed < result.computed && (result = {value : value, computed : computed});
+    });
+    return result.value;
+  };
+
+  // Shuffle an array.
+  _.shuffle = function(obj) {
+    var shuffled = [], rand;
+    each(obj, function(value, index, list) {
+      if (index == 0) {
+        shuffled[0] = value;
+      } else {
+        rand = Math.floor(Math.random() * (index + 1));
+        shuffled[index] = shuffled[rand];
+        shuffled[rand] = value;
+      }
+    });
+    return shuffled;
+  };
+
+  // Sort the object's values by a criterion produced by an iterator.
+  _.sortBy = function(obj, iterator, context) {
+    return _.pluck(_.map(obj, function(value, index, list) {
+      return {
+        value : value,
+        criteria : iterator.call(context, value, index, list)
+      };
+    }).sort(function(left, right) {
+      var a = left.criteria, b = right.criteria;
+      return a < b ? -1 : a > b ? 1 : 0;
+    }), 'value');
+  };
+
+  // Groups the object's values by a criterion. Pass either a string attribute
+  // to group by, or a function that returns the criterion.
+  _.groupBy = function(obj, val) {
+    var result = {};
+    var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
+    each(obj, function(value, index) {
+      var key = iterator(value, index);
+      (result[key] || (result[key] = [])).push(value);
+    });
+    return result;
+  };
+
+  // Use a comparator function to figure out at what index an object should
+  // be inserted so as to maintain order. Uses binary search.
+  _.sortedIndex = function(array, obj, iterator) {
+    iterator || (iterator = _.identity);
+    var low = 0, high = array.length;
+    while (low < high) {
+      var mid = (low + high) >> 1;
+      iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
+    }
+    return low;
+  };
+
+  // Safely convert anything iterable into a real, live array.
+  _.toArray = function(iterable) {
+    if (!iterable)                return [];
+    if (iterable.toArray)         return iterable.toArray();
+    if (_.isArray(iterable))      return slice.call(iterable);
+    if (_.isArguments(iterable))  return slice.call(iterable);
+    return _.values(iterable);
+  };
+
+  // Return the number of elements in an object.
+  _.size = function(obj) {
+    return _.toArray(obj).length;
+  };
+
+  // Array Functions
+  // ---------------
+
+  // Get the first element of an array. Passing **n** will return the first N
+  // values in the array. Aliased as `head`. The **guard** check allows it to work
+  // with `_.map`.
+  _.first = _.head = function(array, n, guard) {
+    return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
+  };
+
+  // Returns everything but the last entry of the array. Especcialy useful on
+  // the arguments object. Passing **n** will return all the values in
+  // the array, excluding the last N. The **guard** check allows it to work with
+  // `_.map`.
+  _.initial = function(array, n, guard) {
+    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
+  };
+
+  // Get the last element of an array. Passing **n** will return the last N
+  // values in the array. The **guard** check allows it to work with `_.map`.
+  _.last = function(array, n, guard) {
+    if ((n != null) && !guard) {
+      return slice.call(array, Math.max(array.length - n, 0));
+    } else {
+      return array[array.length - 1];
+    }
+  };
+
+  // Returns everything but the first entry of the array. Aliased as `tail`.
+  // Especially useful on the arguments object. Passing an **index** will return
+  // the rest of the values in the array from that index onward. The **guard**
+  // check allows it to work with `_.map`.
+  _.rest = _.tail = function(array, index, guard) {
+    return slice.call(array, (index == null) || guard ? 1 : index);
+  };
+
+  // Trim out all falsy values from an array.
+  _.compact = function(array) {
+    return _.filter(array, function(value){ return !!value; });
+  };
+
+  // Return a completely flattened version of an array.
+  _.flatten = function(array, shallow) {
+    return _.reduce(array, function(memo, value) {
+      if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));
+      memo[memo.length] = value;
+      return memo;
+    }, []);
+  };
+
+  // Return a version of the array that does not contain the specified value(s).
+  _.without = function(array) {
+    return _.difference(array, slice.call(arguments, 1));
+  };
+
+  // Produce a duplicate-free version of the array. If the array has already
+  // been sorted, you have the option of using a faster algorithm.
+  // Aliased as `unique`.
+  _.uniq = _.unique = function(array, isSorted, iterator) {
+    var initial = iterator ? _.map(array, iterator) : array;
+    var result = [];
+    _.reduce(initial, function(memo, el, i) {
+      if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) {
+        memo[memo.length] = el;
+        result[result.length] = array[i];
+      }
+      return memo;
+    }, []);
+    return result;
+  };
+
+  // Produce an array that contains the union: each distinct element from all of
+  // the passed-in arrays.
+  _.union = function() {
+    return _.uniq(_.flatten(arguments, true));
+  };
+
+  // Produce an array that contains every item shared between all the
+  // passed-in arrays. (Aliased as "intersect" for back-compat.)
+  _.intersection = _.intersect = function(array) {
+    var rest = slice.call(arguments, 1);
+    return _.filter(_.uniq(array), function(item) {
+      return _.every(rest, function(other) {
+        return _.indexOf(other, item) >= 0;
+      });
+    });
+  };
+
+  // Take the difference between one array and a number of other arrays.
+  // Only the elements present in just the first array will remain.
+  _.difference = function(array) {
+    var rest = _.flatten(slice.call(arguments, 1));
+    return _.filter(array, function(value){ return !_.include(rest, value); });
+  };
+
+  // Zip together multiple lists into a single array -- elements that share
+  // an index go together.
+  _.zip = function() {
+    var args = slice.call(arguments);
+    var length = _.max(_.pluck(args, 'length'));
+    var results = new Array(length);
+    for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
+    return results;
+  };
+
+  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
+  // we need this function. Return the position of the first occurrence of an
+  // item in an array, or -1 if the item is not included in the array.
+  // Delegates to **ECMAScript 5**'s native `indexOf` if available.
+  // If the array is large and already in sort order, pass `true`
+  // for **isSorted** to use binary search.
+  _.indexOf = function(array, item, isSorted) {
+    if (array == null) return -1;
+    var i, l;
+    if (isSorted) {
+      i = _.sortedIndex(array, item);
+      return array[i] === item ? i : -1;
+    }
+    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
+    for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;
+    return -1;
+  };
+
+  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
+  _.lastIndexOf = function(array, item) {
+    if (array == null) return -1;
+    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
+    var i = array.length;
+    while (i--) if (i in array && array[i] === item) return i;
+    return -1;
+  };
+
+  // Generate an integer Array containing an arithmetic progression. A port of
+  // the native Python `range()` function. See
+  // [the Python documentation](http://docs.python.org/library/functions.html#range).
+  _.range = function(start, stop, step) {
+    if (arguments.length <= 1) {
+      stop = start || 0;
+      start = 0;
+    }
+    step = arguments[2] || 1;
+
+    var len = Math.max(Math.ceil((stop - start) / step), 0);
+    var idx = 0;
+    var range = new Array(len);
+
+    while(idx < len) {
+      range[idx++] = start;
+      start += step;
+    }
+
+    return range;
+  };
+
+  // Function (ahem) Functions
+  // ------------------
+
+  // Reusable constructor function for prototype setting.
+  var ctor = function(){};
+
+  // Create a function bound to a given object (assigning `this`, and arguments,
+  // optionally). Binding with arguments is also known as `curry`.
+  // Delegates to **ECMAScript 5**'s native `Function.bind` if available.
+  // We check for `func.bind` first, to fail fast when `func` is undefined.
+  _.bind = function bind(func, context) {
+    var bound, args;
+    if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+    if (!_.isFunction(func)) throw new TypeError;
+    args = slice.call(arguments, 2);
+    return bound = function() {
+      if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
+      ctor.prototype = func.prototype;
+      var self = new ctor;
+      var result = func.apply(self, args.concat(slice.call(arguments)));
+      if (Object(result) === result) return result;
+      return self;
+    };
+  };
+
+  // Bind all of an object's methods to that object. Useful for ensuring that
+  // all callbacks defined on an object belong to it.
+  _.bindAll = function(obj) {
+    var funcs = slice.call(arguments, 1);
+    if (funcs.length == 0) funcs = _.functions(obj);
+    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
+    return obj;
+  };
+
+  // Memoize an expensive function by storing its results.
+  _.memoize = function(func, hasher) {
+    var memo = {};
+    hasher || (hasher = _.identity);
+    return function() {
+      var key = hasher.apply(this, arguments);
+      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
+    };
+  };
+
+  // Delays a function for the given number of milliseconds, and then calls
+  // it with the arguments supplied.
+  _.delay = function(func, wait) {
+    var args = slice.call(arguments, 2);
+    return setTimeout(function(){ return func.apply(func, args); }, wait);
+  };
+
+  // Defers a function, scheduling it to run after the current call stack has
+  // cleared.
+  _.defer = function(func) {
+    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
+  };
+
+  // Returns a function, that, when invoked, will only be triggered at most once
+  // during a given window of time.
+  _.throttle = function(func, wait) {
+    var context, args, timeout, throttling, more;
+    var whenDone = _.debounce(function(){ more = throttling = false; }, wait);
+    return function() {
+      context = this; args = arguments;
+      var later = function() {
+        timeout = null;
+        if (more) func.apply(context, args);
+        whenDone();
+      };
+      if (!timeout) timeout = setTimeout(later, wait);
+      if (throttling) {
+        more = true;
+      } else {
+        func.apply(context, args);
+      }
+      whenDone();
+      throttling = true;
+    };
+  };
+
+  // Returns a function, that, as long as it continues to be invoked, will not
+  // be triggered. The function will be called after it stops being called for
+  // N milliseconds.
+  _.debounce = function(func, wait) {
+    var timeout;
+    return function() {
+      var context = this, args = arguments;
+      var later = function() {
+        timeout = null;
+        func.apply(context, args);
+      };
+      clearTimeout(timeout);
+      timeout = setTimeout(later, wait);
+    };
+  };
+
+  // Returns a function that will be executed at most one time, no matter how
+  // often you call it. Useful for lazy initialization.
+  _.once = function(func) {
+    var ran = false, memo;
+    return function() {
+      if (ran) return memo;
+      ran = true;
+      return memo = func.apply(this, arguments);
+    };
+  };
+
+  // Returns the first function passed as an argument to the second,
+  // allowing you to adjust arguments, run code before and after, and
+  // conditionally execute the original function.
+  _.wrap = function(func, wrapper) {
+    return function() {
+      var args = [func].concat(slice.call(arguments, 0));
+      return wrapper.apply(this, args);
+    };
+  };
+
+  // Returns a function that is the composition of a list of functions, each
+  // consuming the return value of the function that follows.
+  _.compose = function() {
+    var funcs = arguments;
+    return function() {
+      var args = arguments;
+      for (var i = funcs.length - 1; i >= 0; i--) {
+        args = [funcs[i].apply(this, args)];
+      }
+      return args[0];
+    };
+  };
+
+  // Returns a function that will only be executed after being called N times.
+  _.after = function(times, func) {
+    if (times <= 0) return func();
+    return function() {
+      if (--times < 1) { return func.apply(this, arguments); }
+    };
+  };
+
+  // Object Functions
+  // ----------------
+
+  // Retrieve the names of an object's properties.
+  // Delegates to **ECMAScript 5**'s native `Object.keys`
+  _.keys = nativeKeys || function(obj) {
+    if (obj !== Object(obj)) throw new TypeError('Invalid object');
+    var keys = [];
+    for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
+    return keys;
+  };
+
+  // Retrieve the values of an object's properties.
+  _.values = function(obj) {
+    return _.map(obj, _.identity);
+  };
+
+  // Return a sorted list of the function names available on the object.
+  // Aliased as `methods`
+  _.functions = _.methods = function(obj) {
+    var names = [];
+    for (var key in obj) {
+      if (_.isFunction(obj[key])) names.push(key);
+    }
+    return names.sort();
+  };
+
+  // Extend a given object with all the properties in passed-in object(s).
+  _.extend = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      for (var prop in source) {
+        obj[prop] = source[prop];
+      }
+    });
+    return obj;
+  };
+
+  // Fill in a given object with default properties.
+  _.defaults = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      for (var prop in source) {
+        if (obj[prop] == null) obj[prop] = source[prop];
+      }
+    });
+    return obj;
+  };
+
+  // Create a (shallow-cloned) duplicate of an object.
+  _.clone = function(obj) {
+    if (!_.isObject(obj)) return obj;
+    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+  };
+
+  // Invokes interceptor with the obj, and then returns obj.
+  // The primary purpose of this method is to "tap into" a method chain, in
+  // order to perform operations on intermediate results within the chain.
+  _.tap = function(obj, interceptor) {
+    interceptor(obj);
+    return obj;
+  };
+
+  // Internal recursive comparison function.
+  function eq(a, b, stack) {
+    // Identical objects are equal. `0 === -0`, but they aren't identical.
+    // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
+    if (a === b) return a !== 0 || 1 / a == 1 / b;
+    // A strict comparison is necessary because `null == undefined`.
+    if (a == null || b == null) return a === b;
+    // Unwrap any wrapped objects.
+    if (a._chain) a = a._wrapped;
+    if (b._chain) b = b._wrapped;
+    // Invoke a custom `isEqual` method if one is provided.
+    if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);
+    if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);
+    // Compare `[[Class]]` names.
+    var className = toString.call(a);
+    if (className != toString.call(b)) return false;
+    switch (className) {
+      // Strings, numbers, dates, and booleans are compared by value.
+      case '[object String]':
+        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+        // equivalent to `new String("5")`.
+        return a == String(b);
+      case '[object Number]':
+        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
+        // other numeric values.
+        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
+      case '[object Date]':
+      case '[object Boolean]':
+        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+        // millisecond representations. Note that invalid dates with millisecond representations
+        // of `NaN` are not equivalent.
+        return +a == +b;
+      // RegExps are compared by their source patterns and flags.
+      case '[object RegExp]':
+        return a.source == b.source &&
+               a.global == b.global &&
+               a.multiline == b.multiline &&
+               a.ignoreCase == b.ignoreCase;
+    }
+    if (typeof a != 'object' || typeof b != 'object') return false;
+    // Assume equality for cyclic structures. The algorithm for detecting cyclic
+    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+    var length = stack.length;
+    while (length--) {
+      // Linear search. Performance is inversely proportional to the number of
+      // unique nested structures.
+      if (stack[length] == a) return true;
+    }
+    // Add the first object to the stack of traversed objects.
+    stack.push(a);
+    var size = 0, result = true;
+    // Recursively compare objects and arrays.
+    if (className == '[object Array]') {
+      // Compare array lengths to determine if a deep comparison is necessary.
+      size = a.length;
+      result = size == b.length;
+      if (result) {
+        // Deep compare the contents, ignoring non-numeric properties.
+        while (size--) {
+          // Ensure commutative equality for sparse arrays.
+          if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;
+        }
+      }
+    } else {
+      // Objects with different constructors are not equivalent.
+      if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;
+      // Deep compare objects.
+      for (var key in a) {
+        if (_.has(a, key)) {
+          // Count the expected number of properties.
+          size++;
+          // Deep compare each member.
+          if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;
+        }
+      }
+      // Ensure that both objects contain the same number of properties.
+      if (result) {
+        for (key in b) {
+          if (_.has(b, key) && !(size--)) break;
+        }
+        result = !size;
+      }
+    }
+    // Remove the first object from the stack of traversed objects.
+    stack.pop();
+    return result;
+  }
+
+  // Perform a deep comparison to check if two objects are equal.
+  _.isEqual = function(a, b) {
+    return eq(a, b, []);
+  };
+
+  // Is a given array, string, or object empty?
+  // An "empty" object has no enumerable own-properties.
+  _.isEmpty = function(obj) {
+    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
+    for (var key in obj) if (_.has(obj, key)) return false;
+    return true;
+  };
+
+  // Is a given value a DOM element?
+  _.isElement = function(obj) {
+    return !!(obj && obj.nodeType == 1);
+  };
+
+  // Is a given value an array?
+  // Delegates to ECMA5's native Array.isArray
+  _.isArray = nativeIsArray || function(obj) {
+    return toString.call(obj) == '[object Array]';
+  };
+
+  // Is a given variable an object?
+  _.isObject = function(obj) {
+    return obj === Object(obj);
+  };
+
+  // Is a given variable an arguments object?
+  _.isArguments = function(obj) {
+    return toString.call(obj) == '[object Arguments]';
+  };
+  if (!_.isArguments(arguments)) {
+    _.isArguments = function(obj) {
+      return !!(obj && _.has(obj, 'callee'));
+    };
+  }
+
+  // Is a given value a function?
+  _.isFunction = function(obj) {
+    return toString.call(obj) == '[object Function]';
+  };
+
+  // Is a given value a string?
+  _.isString = function(obj) {
+    return toString.call(obj) == '[object String]';
+  };
+
+  // Is a given value a number?
+  _.isNumber = function(obj) {
+    return toString.call(obj) == '[object Number]';
+  };
+
+  // Is the given value `NaN`?
+  _.isNaN = function(obj) {
+    // `NaN` is the only value for which `===` is not reflexive.
+    return obj !== obj;
+  };
+
+  // Is a given value a boolean?
+  _.isBoolean = function(obj) {
+    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
+  };
+
+  // Is a given value a date?
+  _.isDate = function(obj) {
+    return toString.call(obj) == '[object Date]';
+  };
+
+  // Is the given value a regular expression?
+  _.isRegExp = function(obj) {
+    return toString.call(obj) == '[object RegExp]';
+  };
+
+  // Is a given value equal to null?
+  _.isNull = function(obj) {
+    return obj === null;
+  };
+
+  // Is a given variable undefined?
+  _.isUndefined = function(obj) {
+    return obj === void 0;
+  };
+
+  // Has own property?
+  _.has = function(obj, key) {
+    return hasOwnProperty.call(obj, key);
+  };
+
+  // Utility Functions
+  // -----------------
+
+  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+  // previous owner. Returns a reference to the Underscore object.
+  _.noConflict = function() {
+    root._ = previousUnderscore;
+    return this;
+  };
+
+  // Keep the identity function around for default iterators.
+  _.identity = function(value) {
+    return value;
+  };
+
+  // Run a function **n** times.
+  _.times = function (n, iterator, context) {
+    for (var i = 0; i < n; i++) iterator.call(context, i);
+  };
+
+  // Escape a string for HTML interpolation.
+  _.escape = function(string) {
+    return (''+string).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, '&#x27;').replace(/\//g,'&#x2F;');
+  };
+
+  // Add your own custom functions to the Underscore object, ensuring that
+  // they're correctly added to the OOP wrapper as well.
+  _.mixin = function(obj) {
+    each(_.functions(obj), function(name){
+      addToWrapper(name, _[name] = obj[name]);
+    });
+  };
+
+  // Generate a unique integer id (unique within the entire client session).
+  // Useful for temporary DOM ids.
+  var idCounter = 0;
+  _.uniqueId = function(prefix) {
+    var id = idCounter++;
+    return prefix ? prefix + id : id;
+  };
+
+  // By default, Underscore uses ERB-style template delimiters, change the
+  // following template settings to use alternative delimiters.
+  _.templateSettings = {
+    evaluate    : /<%([\s\S]+?)%>/g,
+    interpolate : /<%=([\s\S]+?)%>/g,
+    escape      : /<%-([\s\S]+?)%>/g
+  };
+
+  // When customizing `templateSettings`, if you don't want to define an
+  // interpolation, evaluation or escaping regex, we need one that is
+  // guaranteed not to match.
+  var noMatch = /.^/;
+
+  // Within an interpolation, evaluation, or escaping, remove HTML escaping
+  // that had been previously added.
+  var unescape = function(code) {
+    return code.replace(/\\\\/g, '\\').replace(/\\'/g, "'");
+  };
+
+  // JavaScript micro-templating, similar to John Resig's implementation.
+  // Underscore templating handles arbitrary delimiters, preserves whitespace,
+  // and correctly escapes quotes within interpolated code.
+  _.template = function(str, data) {
+    var c  = _.templateSettings;
+    var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
+      'with(obj||{}){__p.push(\'' +
+      str.replace(/\\/g, '\\\\')
+         .replace(/'/g, "\\'")
+         .replace(c.escape || noMatch, function(match, code) {
+           return "',_.escape(" + unescape(code) + "),'";
+         })
+         .replace(c.interpolate || noMatch, function(match, code) {
+           return "'," + unescape(code) + ",'";
+         })
+         .replace(c.evaluate || noMatch, function(match, code) {
+           return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('";
+         })
+         .replace(/\r/g, '\\r')
+         .replace(/\n/g, '\\n')
+         .replace(/\t/g, '\\t')
+         + "');}return __p.join('');";
+    var func = new Function('obj', '_', tmpl);
+    if (data) return func(data, _);
+    return function(data) {
+      return func.call(this, data, _);
+    };
+  };
+
+  // Add a "chain" function, which will delegate to the wrapper.
+  _.chain = function(obj) {
+    return _(obj).chain();
+  };
+
+  // The OOP Wrapper
+  // ---------------
+
+  // If Underscore is called as a function, it returns a wrapped object that
+  // can be used OO-style. This wrapper holds altered versions of all the
+  // underscore functions. Wrapped objects may be chained.
+  var wrapper = function(obj) { this._wrapped = obj; };
+
+  // Expose `wrapper.prototype` as `_.prototype`
+  _.prototype = wrapper.prototype;
+
+  // Helper function to continue chaining intermediate results.
+  var result = function(obj, chain) {
+    return chain ? _(obj).chain() : obj;
+  };
+
+  // A method to easily add functions to the OOP wrapper.
+  var addToWrapper = function(name, func) {
+    wrapper.prototype[name] = function() {
+      var args = slice.call(arguments);
+      unshift.call(args, this._wrapped);
+      return result(func.apply(_, args), this._chain);
+    };
+  };
+
+  // Add all of the Underscore functions to the wrapper object.
+  _.mixin(_);
+
+  // Add all mutator Array functions to the wrapper.
+  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+    var method = ArrayProto[name];
+    wrapper.prototype[name] = function() {
+      var wrapped = this._wrapped;
+      method.apply(wrapped, arguments);
+      var length = wrapped.length;
+      if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];
+      return result(wrapped, this._chain);
+    };
+  });
+
+  // Add all accessor Array functions to the wrapper.
+  each(['concat', 'join', 'slice'], function(name) {
+    var method = ArrayProto[name];
+    wrapper.prototype[name] = function() {
+      return result(method.apply(this._wrapped, arguments), this._chain);
+    };
+  });
+
+  // Start chaining a wrapped Underscore object.
+  wrapper.prototype.chain = function() {
+    this._chain = true;
+    return this;
+  };
+
+  // Extracts the result from a wrapped and chained object.
+  wrapper.prototype.value = function() {
+    return this._wrapped;
+  };
+
+}).call(this);
diff --git a/docs/usrman/_static/up-pressed.png b/docs/usrman/_static/up-pressed.png
index 8bd587a..acee3b6 100644
Binary files a/docs/usrman/_static/up-pressed.png and b/docs/usrman/_static/up-pressed.png differ
diff --git a/docs/usrman/_static/up.png b/docs/usrman/_static/up.png
index b946256..2a940a7 100644
Binary files a/docs/usrman/_static/up.png and b/docs/usrman/_static/up.png differ
diff --git a/docs/usrman/_static/websupport.js b/docs/usrman/_static/websupport.js
index 71c0a13..98e7f40 100644
--- a/docs/usrman/_static/websupport.js
+++ b/docs/usrman/_static/websupport.js
@@ -2,9 +2,9 @@
  * websupport.js
  * ~~~~~~~~~~~~~
  *
- * sphinx.websupport utilties for all documentation.
+ * sphinx.websupport utilities for all documentation.
  *
- * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -50,51 +50,51 @@
   }
 
   function initEvents() {
-    $('a.comment-close').live("click", function(event) {
+    $(document).on("click", 'a.comment-close', function(event) {
       event.preventDefault();
       hide($(this).attr('id').substring(2));
     });
-    $('a.vote').live("click", function(event) {
+    $(document).on("click", 'a.vote', function(event) {
       event.preventDefault();
       handleVote($(this));
     });
-    $('a.reply').live("click", function(event) {
+    $(document).on("click", 'a.reply', function(event) {
       event.preventDefault();
       openReply($(this).attr('id').substring(2));
     });
-    $('a.close-reply').live("click", function(event) {
+    $(document).on("click", 'a.close-reply', function(event) {
       event.preventDefault();
       closeReply($(this).attr('id').substring(2));
     });
-    $('a.sort-option').live("click", function(event) {
+    $(document).on("click", 'a.sort-option', function(event) {
       event.preventDefault();
       handleReSort($(this));
     });
-    $('a.show-proposal').live("click", function(event) {
+    $(document).on("click", 'a.show-proposal', function(event) {
       event.preventDefault();
       showProposal($(this).attr('id').substring(2));
     });
-    $('a.hide-proposal').live("click", function(event) {
+    $(document).on("click", 'a.hide-proposal', function(event) {
       event.preventDefault();
       hideProposal($(this).attr('id').substring(2));
     });
-    $('a.show-propose-change').live("click", function(event) {
+    $(document).on("click", 'a.show-propose-change', function(event) {
       event.preventDefault();
       showProposeChange($(this).attr('id').substring(2));
     });
-    $('a.hide-propose-change').live("click", function(event) {
+    $(document).on("click", 'a.hide-propose-change', function(event) {
       event.preventDefault();
       hideProposeChange($(this).attr('id').substring(2));
     });
-    $('a.accept-comment').live("click", function(event) {
+    $(document).on("click", 'a.accept-comment', function(event) {
       event.preventDefault();
       acceptComment($(this).attr('id').substring(2));
     });
-    $('a.delete-comment').live("click", function(event) {
+    $(document).on("click", 'a.delete-comment', function(event) {
       event.preventDefault();
       deleteComment($(this).attr('id').substring(2));
     });
-    $('a.comment-markup').live("click", function(event) {
+    $(document).on("click", 'a.comment-markup', function(event) {
       event.preventDefault();
       toggleCommentMarkupBox($(this).attr('id').substring(2));
     });
@@ -700,8 +700,8 @@
         (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
       <div class="comment-markup-box" id="mb<%id%>">\
         reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
-        <tt>``code``</tt>, \
-        code blocks: <tt>::</tt> and an indented block after blank line</div>\
+        <code>``code``</code>, \
+        code blocks: <code>::</code> and an indented block after blank line</div>\
       <form method="post" id="cf<%id%>" class="comment-form" action="">\
         <textarea name="comment" cols="80"></textarea>\
         <p class="propose-button">\
diff --git a/docs/usrman/citing.html b/docs/usrman/citing.html
index e76667d..330ac28 100644
--- a/docs/usrman/citing.html
+++ b/docs/usrman/citing.html
@@ -6,28 +6,30 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Citations — SLEPc for Python 3.7.0 documentation</title>
+    <title>Citations — SLEPc for Python 3.8.0 documentation</title>
     
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/classic.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '3.7.0',
+        VERSION:     '3.8.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
       };
     </script>
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="SLEPc for Python 3.7.0 documentation" href="index.html" />
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
     <link rel="prev" title="Installation" href="install.html" /> 
   </head>
-  <body>
-    <div class="related">
+  <body role="document">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
@@ -36,14 +38,14 @@
         <li class="right" >
           <a href="install.html" title="Installation"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>  
 
     <div class="document">
       <div class="documentwrapper">
         <div class="bodywrapper">
-          <div class="body">
+          <div class="body" role="main">
             
   <div class="section" id="citations">
 <h1>Citations<a class="headerlink" href="#citations" title="Permalink to this headline">¶</a></h1>
@@ -66,34 +68,33 @@ ACM Transactions on Mathematical Software, 31(3):351-362, 2005.
           </div>
         </div>
       </div>
-      <div class="sphinxsidebar">
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
         <div class="sphinxsidebarwrapper">
   <h4>Previous topic</h4>
   <p class="topless"><a href="install.html"
                         title="previous chapter">Installation</a></p>
-  <h3>This Page</h3>
-  <ul class="this-page-menu">
-    <li><a href="_sources/citing.txt"
-           rel="nofollow">Show Source</a></li>
-  </ul>
-<div id="searchbox" style="display: none">
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/citing.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<div id="searchbox" style="display: none" role="search">
   <h3>Quick search</h3>
     <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
+      <div><input type="text" name="q" /></div>
+      <div><input type="submit" value="Go" /></div>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
       </div>
       <div class="clearer"></div>
     </div>
-    <div class="related">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
@@ -102,12 +103,12 @@ ACM Transactions on Mathematical Software, 31(3):351-362, 2005.
         <li class="right" >
           <a href="install.html" title="Installation"
              >previous</a> |</li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2016, Lisandro Dalcin.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
+    <div class="footer" role="contentinfo">
+        © Copyright 2017, Lisandro Dalcin.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/usrman/genindex.html b/docs/usrman/genindex.html
index 0e9972d..8b368eb 100644
--- a/docs/usrman/genindex.html
+++ b/docs/usrman/genindex.html
@@ -7,40 +7,42 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Index — SLEPc for Python 3.7.0 documentation</title>
+    <title>Index — SLEPc for Python 3.8.0 documentation</title>
     
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/classic.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '3.7.0',
+        VERSION:     '3.8.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
       };
     </script>
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="SLEPc for Python 3.7.0 documentation" href="index.html" /> 
+    <link rel="index" title="Index" href="#" />
+    <link rel="search" title="Search" href="search.html" /> 
   </head>
-  <body>
-    <div class="related">
+  <body role="document">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
           <a href="#" title="General Index"
              accesskey="I">index</a></li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>  
 
     <div class="document">
       <div class="documentwrapper">
         <div class="bodywrapper">
-          <div class="body">
+          <div class="body" role="main">
             
 
 <h1 id="index">Index</h1>
@@ -55,99 +57,69 @@
 </div>
 <h2 id="A">A</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="install.html#index-5">ARCHFLAGS</a>
-  </dt>
-
-  </dl></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="install.html#index-5">ARCHFLAGS</a>
+</li>
+  </ul></td>
 </tr></table>
 
 <h2 id="E">E</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li>
     environment variable
-  </dt>
-
-      <dd><dl>
-        
-  <dt><a href="install.html#index-5">ARCHFLAGS</a>
-  </dt>
-
-        
-  <dt><a href="install.html#index-3">MACOSX_DEPLOYMENT_TARGET</a>
-  </dt>
-
-        
-  <dt><a href="install.html#index-2">PETSC_ARCH</a>, <a href="install.html#index-8">[1]</a>
-  </dt>
-
-        
-  <dt><a href="install.html#index-1">PETSC_DIR</a>, <a href="install.html#index-7">[1]</a>
-  </dt>
 
-        
-  <dt><a href="install.html#index-4">SDKROOT</a>
-  </dt>
-
-        
-  <dt><a href="install.html#index-0">SLEPC_DIR</a>
-  </dt>
-
-        
-  <dt><a href="install.html#index-6">SLEPC_DIR`</a>
-  </dt>
-
-      </dl></dd>
-  </dl></td>
+      <ul>
+        <li><a href="install.html#index-5">ARCHFLAGS</a>
+</li>
+        <li><a href="install.html#index-3">MACOSX_DEPLOYMENT_TARGET</a>
+</li>
+        <li><a href="install.html#index-2">PETSC_ARCH</a>, <a href="install.html#index-8">[1]</a>
+</li>
+        <li><a href="install.html#index-1">PETSC_DIR</a>, <a href="install.html#index-7">[1]</a>
+</li>
+        <li><a href="install.html#index-4">SDKROOT</a>
+</li>
+        <li><a href="install.html#index-0">SLEPC_DIR</a>
+</li>
+        <li><a href="install.html#index-6">SLEPC_DIR`</a>
+</li>
+      </ul></li>
+  </ul></td>
 </tr></table>
 
 <h2 id="M">M</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="install.html#index-3">MACOSX_DEPLOYMENT_TARGET</a>
-  </dt>
-
-  </dl></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="install.html#index-3">MACOSX_DEPLOYMENT_TARGET</a>
+</li>
+  </ul></td>
 </tr></table>
 
 <h2 id="P">P</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="install.html#index-2">PETSC_ARCH</a>, <a href="install.html#index-8">[1]</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="install.html#index-1">PETSC_DIR</a>, <a href="install.html#index-7">[1]</a>
-  </dt>
-
-  </dl></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="install.html#index-2">PETSC_ARCH</a>, <a href="install.html#index-8">[1]</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="install.html#index-1">PETSC_DIR</a>, <a href="install.html#index-7">[1]</a>
+</li>
+  </ul></td>
 </tr></table>
 
 <h2 id="S">S</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="install.html#index-4">SDKROOT</a>
-  </dt>
-
-      
-  <dt><a href="install.html#index-0">SLEPC_DIR</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="install.html#index-6">SLEPC_DIR`</a>
-  </dt>
-
-  </dl></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="install.html#index-4">SDKROOT</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="install.html#index-0">SLEPC_DIR</a>
+</li>
+      <li><a href="install.html#index-6">SLEPC_DIR`</a>
+</li>
+  </ul></td>
 </tr></table>
 
 
@@ -155,40 +127,37 @@
           </div>
         </div>
       </div>
-      <div class="sphinxsidebar">
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
         <div class="sphinxsidebarwrapper">
 
    
 
-<div id="searchbox" style="display: none">
+<div id="searchbox" style="display: none" role="search">
   <h3>Quick search</h3>
     <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
+      <div><input type="text" name="q" /></div>
+      <div><input type="submit" value="Go" /></div>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
       </div>
       <div class="clearer"></div>
     </div>
-    <div class="related">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
           <a href="#" title="General Index"
              >index</a></li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2016, Lisandro Dalcin.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
+    <div class="footer" role="contentinfo">
+        © Copyright 2017, Lisandro Dalcin.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/usrman/index.html b/docs/usrman/index.html
index 08f1042..5a66b6c 100644
--- a/docs/usrman/index.html
+++ b/docs/usrman/index.html
@@ -6,28 +6,30 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>SLEPc for Python — SLEPc for Python 3.7.0 documentation</title>
+    <title>SLEPc for Python — SLEPc for Python 3.8.0 documentation</title>
     
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/classic.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '3.7.0',
+        VERSION:     '3.8.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
       };
     </script>
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="SLEPc for Python 3.7.0 documentation" href="#" />
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="Overview" href="overview.html" /> 
   </head>
-  <body>
-    <div class="related">
+  <body role="document">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
@@ -36,14 +38,14 @@
         <li class="right" >
           <a href="overview.html" title="Overview"
              accesskey="N">next</a> |</li>
-        <li><a href="#">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="#">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>  
 
     <div class="document">
       <div class="documentwrapper">
         <div class="bodywrapper">
-          <div class="body">
+          <div class="body" role="main">
             
   <div class="section" id="slepc-for-python">
 <h1>SLEPc for Python<a class="headerlink" href="#slepc-for-python" title="Permalink to this headline">¶</a></h1>
@@ -57,7 +59,7 @@
 </tr>
 <tr class="field-odd field"><th class="field-name">Web Site:</th><td class="field-body"><a class="reference external" href="https://bitbucket.org/slepc/slepc4py">https://bitbucket.org/slepc/slepc4py</a></td>
 </tr>
-<tr class="field-even field"><th class="field-name">Date:</th><td class="field-body">May 22, 2016</td>
+<tr class="field-even field"><th class="field-name">Date:</th><td class="field-body">Oct 21, 2017</td>
 </tr>
 </tbody>
 </table>
@@ -104,7 +106,7 @@ its companion <a class="reference external" href="http://bitbucket.org/petsc/pet
           </div>
         </div>
       </div>
-      <div class="sphinxsidebar">
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
         <div class="sphinxsidebarwrapper">
   <h3><a href="#">Table Of Contents</a></h3>
   <ul>
@@ -117,29 +119,28 @@ its companion <a class="reference external" href="http://bitbucket.org/petsc/pet
   <h4>Next topic</h4>
   <p class="topless"><a href="overview.html"
                         title="next chapter">Overview</a></p>
-  <h3>This Page</h3>
-  <ul class="this-page-menu">
-    <li><a href="_sources/index.txt"
-           rel="nofollow">Show Source</a></li>
-  </ul>
-<div id="searchbox" style="display: none">
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/index.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<div id="searchbox" style="display: none" role="search">
   <h3>Quick search</h3>
     <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
+      <div><input type="text" name="q" /></div>
+      <div><input type="submit" value="Go" /></div>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
       </div>
       <div class="clearer"></div>
     </div>
-    <div class="related">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
@@ -148,12 +149,12 @@ its companion <a class="reference external" href="http://bitbucket.org/petsc/pet
         <li class="right" >
           <a href="overview.html" title="Overview"
              >next</a> |</li>
-        <li><a href="#">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="#">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2016, Lisandro Dalcin.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
+    <div class="footer" role="contentinfo">
+        © Copyright 2017, Lisandro Dalcin.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/usrman/install.html b/docs/usrman/install.html
index 301b151..0853705 100644
--- a/docs/usrman/install.html
+++ b/docs/usrman/install.html
@@ -6,29 +6,31 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Installation — SLEPc for Python 3.7.0 documentation</title>
+    <title>Installation — SLEPc for Python 3.8.0 documentation</title>
     
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/classic.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '3.7.0',
+        VERSION:     '3.8.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
       };
     </script>
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="SLEPc for Python 3.7.0 documentation" href="index.html" />
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="Citations" href="citing.html" />
     <link rel="prev" title="Tutorial" href="tutorial.html" /> 
   </head>
-  <body>
-    <div class="related">
+  <body role="document">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
@@ -40,35 +42,35 @@
         <li class="right" >
           <a href="tutorial.html" title="Tutorial"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>  
 
     <div class="document">
       <div class="documentwrapper">
         <div class="bodywrapper">
-          <div class="body">
+          <div class="body" role="main">
             
   <div class="section" id="installation">
 <h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h1>
 <div class="section" id="using-pip-or-easy-install">
 <h2>Using <strong>pip</strong> or <strong>easy_install</strong><a class="headerlink" href="#using-pip-or-easy-install" title="Permalink to this headline">¶</a></h2>
-<p>You can use <strong class="program">pip</strong> to install <tt class="xref py py-mod docutils literal"><span class="pre">slepc4py</span></tt> and its
-dependencies (<tt class="xref py py-mod docutils literal"><span class="pre">mpi4py</span></tt> is optional but highly recommended):</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ pip install [--user] numpy mpi4py
+<p>You can use <strong class="program">pip</strong> to install <code class="xref py py-mod docutils literal"><span class="pre">slepc4py</span></code> and its
+dependencies (<code class="xref py py-mod docutils literal"><span class="pre">mpi4py</span></code> is optional but highly recommended):</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ pip install [--user] numpy mpi4py
 $ pip install [--user] petsc petsc4py
 $ pip install [--user] slepc slepc4py
 </pre></div>
 </div>
 <p>Alternatively, you can use <strong class="program">easy_install</strong> (deprecated):</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ easy_install [--user] slepc4py
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ easy_install [--user] slepc4py
 </pre></div>
 </div>
 <p>If you already have working PETSc and SLEPc installs, set environment
-variables <span class="target" id="index-0"></span><tt class="xref std std-envvar docutils literal"><span class="pre">SLEPC_DIR</span></tt> and <span class="target" id="index-1"></span><tt class="xref std std-envvar docutils literal"><span class="pre">PETSC_DIR</span></tt> (and perhaps
-<span class="target" id="index-2"></span><tt class="xref std std-envvar docutils literal"><span class="pre">PETSC_ARCH</span></tt> for non-prefix installs) to appropriate values
+variables <span class="target" id="index-0"></span><code class="xref std std-envvar docutils literal"><span class="pre">SLEPC_DIR</span></code> and <span class="target" id="index-1"></span><code class="xref std std-envvar docutils literal"><span class="pre">PETSC_DIR</span></code> (and perhaps
+<span class="target" id="index-2"></span><code class="xref std std-envvar docutils literal"><span class="pre">PETSC_ARCH</span></code> for non-prefix installs) to appropriate values
 and next use <strong class="program">pip</strong>:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ export SLEPC_DIR=/path/to/slepc
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ export SLEPC_DIR=/path/to/slepc
 $ export PETSC_DIR=/path/to/petsc
 $ export PETSC_ARCH=arch-linux2-c-opt
 $ pip install [--user] petsc4py slepc4py
@@ -93,7 +95,7 @@ built with shared libraries.</li>
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
 <tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td>Unless you have appropriately configured and built SLEPc and
-PETSc without MPI (configure option <tt class="docutils literal"><span class="pre">--with-mpi=0</span></tt>).</td></tr>
+PETSc without MPI (configure option <code class="docutils literal"><span class="pre">--with-mpi=0</span></code>).</td></tr>
 </tbody>
 </table>
 <table class="docutils footnote" frame="void" id="id3" rules="none">
@@ -111,12 +113,12 @@ project website generously hosted by Bitbucket. You can use
 <strong class="program">curl</strong> or <strong class="program">wget</strong> to get a release tarball.</p>
 <ul>
 <li><p class="first">Using <strong class="program">curl</strong>:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ curl -O https://bitbucket.org/slepc/slepc4py/downloads/slepc4py-X.Y.tar.gz
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ curl -O https://bitbucket.org/slepc/slepc4py/downloads/slepc4py-X.Y.tar.gz
 </pre></div>
 </div>
 </li>
 <li><p class="first">Using <strong class="program">wget</strong>:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ wget https://bitbucket.org/slepc/slepc4py/downloads/slepc4py-X.Y.tar.gz
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ wget https://bitbucket.org/slepc/slepc4py/downloads/slepc4py-X.Y.tar.gz
 </pre></div>
 </div>
 </li>
@@ -125,7 +127,7 @@ project website generously hosted by Bitbucket. You can use
 <div class="section" id="building">
 <h3>Building<a class="headerlink" href="#building" title="Permalink to this headline">¶</a></h3>
 <p>After unpacking the release tarball:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ tar -zxf slepc4py-X.Y.tar.gz
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ tar -zxf slepc4py-X.Y.tar.gz
 $ cd slepc4py-X.Y
 </pre></div>
 </div>
@@ -134,13 +136,13 @@ $ cd slepc4py-X.Y
 <p class="first admonition-title">Note</p>
 <p><strong>Mac OS X</strong> users employing a Python distribution built
 with <strong>universal binaries</strong> may need to set the environment
-variables <span class="target" id="index-3"></span><tt class="xref std std-envvar docutils literal"><span class="pre">MACOSX_DEPLOYMENT_TARGET</span></tt>, <span class="target" id="index-4"></span><tt class="xref std std-envvar docutils literal"><span class="pre">SDKROOT</span></tt>,
-and <span class="target" id="index-5"></span><tt class="xref std std-envvar docutils literal"><span class="pre">ARCHFLAGS</span></tt> to appropriate values. As an example,
+variables <span class="target" id="index-3"></span><code class="xref std std-envvar docutils literal"><span class="pre">MACOSX_DEPLOYMENT_TARGET</span></code>, <span class="target" id="index-4"></span><code class="xref std std-envvar docutils literal"><span class="pre">SDKROOT</span></code>,
+and <span class="target" id="index-5"></span><code class="xref std std-envvar docutils literal"><span class="pre">ARCHFLAGS</span></code> to appropriate values. As an example,
 assume your Mac is running <strong>Snow Leopard</strong> on a <strong>64-bit Intel</strong>
 processor and you want to override the hard-wired cross-development
 SDK in Python configuration, your environment should be modified
 like this:</p>
-<div class="last highlight-python"><div class="highlight"><pre><span></span>$ export MACOSX_DEPLOYMENT_TARGET=10.6
+<div class="last highlight-default"><div class="highlight"><pre><span></span>$ export MACOSX_DEPLOYMENT_TARGET=10.6
 $ export SDKROOT=/
 $ export ARCHFLAGS='-arch x86_64'
 </pre></div>
@@ -149,25 +151,25 @@ $ export ARCHFLAGS='-arch x86_64'
 <p>Some environment configuration is needed to inform the location of
 PETSc and SLEPc. You can set (using <strong class="command">setenv</strong>,
 <strong class="command">export</strong> or what applies to you shell or system) the
-environment variables <span class="target" id="index-6"></span><tt class="xref std std-envvar docutils literal"><span class="pre">SLEPC_DIR`</span></tt>, <span class="target" id="index-7"></span><tt class="xref std std-envvar docutils literal"><span class="pre">PETSC_DIR</span></tt>, and
-<span class="target" id="index-8"></span><tt class="xref std std-envvar docutils literal"><span class="pre">PETSC_ARCH</span></tt> indicating where you have built/installed SLEPc
+environment variables <span class="target" id="index-6"></span><code class="xref std std-envvar docutils literal"><span class="pre">SLEPC_DIR`</span></code>, <span class="target" id="index-7"></span><code class="xref std std-envvar docutils literal"><span class="pre">PETSC_DIR</span></code>, and
+<span class="target" id="index-8"></span><code class="xref std std-envvar docutils literal"><span class="pre">PETSC_ARCH</span></code> indicating where you have built/installed SLEPc
 and PETSc:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ export SLEPC_DIR=/usr/local/slepc
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ export SLEPC_DIR=/usr/local/slepc
 $ export PETSC_DIR=/usr/local/petsc
 $ export PETSC_ARCH=arch-linux2-c-opt
 </pre></div>
 </div>
-<p>Alternatively, you can edit the file <tt class="file docutils literal"><span class="pre">setup.cfg</span></tt> and provide the
-required information below the <tt class="docutils literal"><span class="pre">[config]</span></tt> section:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>[config]
-slepc_dir  = /usr/local/slepc
-petsc_dir  = /usr/local/petsc
-petsc_arch = arch-linux2-c-opt
-...
+<p>Alternatively, you can edit the file <code class="file docutils literal"><span class="pre">setup.cfg</span></code> and provide the
+required information below the <code class="docutils literal"><span class="pre">[config]</span></code> section:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">config</span><span class="p">]</span>
+<span class="n">slepc_dir</span>  <span class="o">=</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">slepc</span>
+<span class="n">petsc_dir</span>  <span class="o">=</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">petsc</span>
+<span class="n">petsc_arch</span> <span class="o">=</span> <span class="n">arch</span><span class="o">-</span><span class="n">linux2</span><span class="o">-</span><span class="n">c</span><span class="o">-</span><span class="n">opt</span>
+<span class="o">...</span>
 </pre></div>
 </div>
 <p>Finally, you can build the distribution by typing:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ python setup.py build
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ python setup.py build
 </pre></div>
 </div>
 </div>
@@ -177,14 +179,14 @@ petsc_arch = arch-linux2-c-opt
 <p>If you have root privileges (either by log-in as the root user of by
 using <strong class="command">sudo</strong>) and you want to install <em>SLEPc for Python</em> in
 your system for all users, just do:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ python setup.py install
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ python setup.py install
 </pre></div>
 </div>
-<p>The previous steps will install the <tt class="xref py py-mod docutils literal"><span class="pre">slepc4py</span></tt> package at standard
-location <tt class="file docutils literal"><em><span class="pre">prefix</span></em><span class="pre">/lib/python</span><em><span class="pre">X</span></em><span class="pre">.</span><em><span class="pre">X</span></em><span class="pre">/site-packages</span></tt>.</p>
+<p>The previous steps will install the <code class="xref py py-mod docutils literal"><span class="pre">slepc4py</span></code> package at standard
+location <code class="file docutils literal"><em><span class="pre">prefix</span></em><span class="pre">/lib/python</span><em><span class="pre">X</span></em><span class="pre">.</span><em><span class="pre">X</span></em><span class="pre">/site-packages</span></code>.</p>
 <p>If you do not have root privileges or you want to install <em>SLEPc for
 Python</em> for your private use, just do:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ python setup.py install --user
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ python setup.py install --user
 </pre></div>
 </div>
 </div>
@@ -195,7 +197,7 @@ Python</em> for your private use, just do:</p>
           </div>
         </div>
       </div>
-      <div class="sphinxsidebar">
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
         <div class="sphinxsidebarwrapper">
   <h3><a href="index.html">Table Of Contents</a></h3>
   <ul>
@@ -218,29 +220,28 @@ Python</em> for your private use, just do:</p>
   <h4>Next topic</h4>
   <p class="topless"><a href="citing.html"
                         title="next chapter">Citations</a></p>
-  <h3>This Page</h3>
-  <ul class="this-page-menu">
-    <li><a href="_sources/install.txt"
-           rel="nofollow">Show Source</a></li>
-  </ul>
-<div id="searchbox" style="display: none">
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/install.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<div id="searchbox" style="display: none" role="search">
   <h3>Quick search</h3>
     <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
+      <div><input type="text" name="q" /></div>
+      <div><input type="submit" value="Go" /></div>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
       </div>
       <div class="clearer"></div>
     </div>
-    <div class="related">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
@@ -252,12 +253,12 @@ Python</em> for your private use, just do:</p>
         <li class="right" >
           <a href="tutorial.html" title="Tutorial"
              >previous</a> |</li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2016, Lisandro Dalcin.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
+    <div class="footer" role="contentinfo">
+        © Copyright 2017, Lisandro Dalcin.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/usrman/manual.html b/docs/usrman/manual.html
index f7d58dd..ad1edeb 100644
--- a/docs/usrman/manual.html
+++ b/docs/usrman/manual.html
@@ -6,40 +6,42 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>SLEPc for Python — SLEPc for Python 3.7.0 documentation</title>
+    <title>SLEPc for Python — SLEPc for Python 3.8.0 documentation</title>
     
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/classic.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '3.7.0',
+        VERSION:     '3.8.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
       };
     </script>
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="SLEPc for Python 3.7.0 documentation" href="index.html" /> 
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" /> 
   </head>
-  <body>
-    <div class="related">
+  <body role="document">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
           <a href="genindex.html" title="General Index"
              accesskey="I">index</a></li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>  
 
     <div class="document">
       <div class="documentwrapper">
         <div class="bodywrapper">
-          <div class="body">
+          <div class="body" role="main">
             
   <div class="section" id="slepc-for-python">
 <h1>SLEPc for Python<a class="headerlink" href="#slepc-for-python" title="Permalink to this headline">¶</a></h1>
@@ -83,42 +85,41 @@ its companion <a class="reference external" href="http://bitbucket.org/petsc/pet
           </div>
         </div>
       </div>
-      <div class="sphinxsidebar">
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
         <div class="sphinxsidebarwrapper">
-  <h3>This Page</h3>
-  <ul class="this-page-menu">
-    <li><a href="_sources/manual.txt"
-           rel="nofollow">Show Source</a></li>
-  </ul>
-<div id="searchbox" style="display: none">
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/manual.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<div id="searchbox" style="display: none" role="search">
   <h3>Quick search</h3>
     <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
+      <div><input type="text" name="q" /></div>
+      <div><input type="submit" value="Go" /></div>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
       </div>
       <div class="clearer"></div>
     </div>
-    <div class="related">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
           <a href="genindex.html" title="General Index"
              >index</a></li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2016, Lisandro Dalcin.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
+    <div class="footer" role="contentinfo">
+        © Copyright 2017, Lisandro Dalcin.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/usrman/objects.inv b/docs/usrman/objects.inv
index e158fcc..3e90e64 100644
Binary files a/docs/usrman/objects.inv and b/docs/usrman/objects.inv differ
diff --git a/docs/usrman/overview.html b/docs/usrman/overview.html
index 2255715..01ab546 100644
--- a/docs/usrman/overview.html
+++ b/docs/usrman/overview.html
@@ -6,29 +6,31 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Overview — SLEPc for Python 3.7.0 documentation</title>
+    <title>Overview — SLEPc for Python 3.8.0 documentation</title>
     
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/classic.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '3.7.0',
+        VERSION:     '3.8.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
       };
     </script>
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="SLEPc for Python 3.7.0 documentation" href="index.html" />
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="Tutorial" href="tutorial.html" />
     <link rel="prev" title="SLEPc for Python" href="index.html" /> 
   </head>
-  <body>
-    <div class="related">
+  <body role="document">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
@@ -40,14 +42,14 @@
         <li class="right" >
           <a href="index.html" title="SLEPc for Python"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>  
 
     <div class="document">
       <div class="documentwrapper">
         <div class="bodywrapper">
-          <div class="body">
+          <div class="body" role="main">
             
   <div class="section" id="overview">
 <h1>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h1>
@@ -222,7 +224,7 @@ nonlinear eigenproblems with NEP in split form.</td>
           </div>
         </div>
       </div>
-      <div class="sphinxsidebar">
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
         <div class="sphinxsidebarwrapper">
   <h3><a href="index.html">Table Of Contents</a></h3>
   <ul>
@@ -239,29 +241,28 @@ nonlinear eigenproblems with NEP in split form.</td>
   <h4>Next topic</h4>
   <p class="topless"><a href="tutorial.html"
                         title="next chapter">Tutorial</a></p>
-  <h3>This Page</h3>
-  <ul class="this-page-menu">
-    <li><a href="_sources/overview.txt"
-           rel="nofollow">Show Source</a></li>
-  </ul>
-<div id="searchbox" style="display: none">
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/overview.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<div id="searchbox" style="display: none" role="search">
   <h3>Quick search</h3>
     <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
+      <div><input type="text" name="q" /></div>
+      <div><input type="submit" value="Go" /></div>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
       </div>
       <div class="clearer"></div>
     </div>
-    <div class="related">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
@@ -273,12 +274,12 @@ nonlinear eigenproblems with NEP in split form.</td>
         <li class="right" >
           <a href="index.html" title="SLEPc for Python"
              >previous</a> |</li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2016, Lisandro Dalcin.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
+    <div class="footer" role="contentinfo">
+        © Copyright 2017, Lisandro Dalcin.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/usrman/search.html b/docs/usrman/search.html
index c451daa..8bd0f83 100644
--- a/docs/usrman/search.html
+++ b/docs/usrman/search.html
@@ -6,25 +6,27 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Search — SLEPc for Python 3.7.0 documentation</title>
+    <title>Search — SLEPc for Python 3.8.0 documentation</title>
     
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/classic.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '3.7.0',
+        VERSION:     '3.8.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
       };
     </script>
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="_static/searchtools.js"></script>
-    <link rel="top" title="SLEPc for Python 3.7.0 documentation" href="index.html" />
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="#" />
   <script type="text/javascript">
     jQuery(function() { Search.loadIndex("searchindex.js"); });
   </script>
@@ -33,21 +35,21 @@
    
 
   </head>
-  <body>
-    <div class="related">
+  <body role="document">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
           <a href="genindex.html" title="General Index"
              accesskey="I">index</a></li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>  
 
     <div class="document">
       <div class="documentwrapper">
         <div class="bodywrapper">
-          <div class="body">
+          <div class="body" role="main">
             
   <h1 id="search-documentation">Search</h1>
   <div id="fallback" class="admonition warning">
@@ -76,24 +78,24 @@
           </div>
         </div>
       </div>
-      <div class="sphinxsidebar">
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
         <div class="sphinxsidebarwrapper">
         </div>
       </div>
       <div class="clearer"></div>
     </div>
-    <div class="related">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
           <a href="genindex.html" title="General Index"
              >index</a></li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2016, Lisandro Dalcin.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
+    <div class="footer" role="contentinfo">
+        © Copyright 2017, Lisandro Dalcin.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/usrman/searchindex.js b/docs/usrman/searchindex.js
index 15bc657..fe217f5 100644
--- a/docs/usrman/searchindex.js
+++ b/docs/usrman/searchindex.js
@@ -1 +1 @@
-Search.setIndex({envversion:42,terms:{represent:[0,2,1],all:[1,5,4],concept:1,partial:1,orthogon:[1,5],illustr:5,definit:1,global:5,signific:3,code:5,abil:1,follow:[1,5,4],row:5,privat:4,depend:[5,4],rayleigh:1,init:5,program:5,under:1,petsc_dir:4,emploi:4,mpd:5,sourc:[0,2],straightforward:5,mpi:[5,4],mechan:1,implicitli:1,relev:5,paz:3,tri:1,solver:[1,5],prefix:[5,4],iter:[1,5],"try":5,vector:[0,2,5,1],matric:[0,2,5,1],upv:0,refer:5,pleas:3,x86_64:4,getdimens:5,cfg:4,dimens:[1,5],direct [...]
\ No newline at end of file
+Search.setIndex({docnames:["citing","index","install","manual","overview","tutorial"],envversion:50,filenames:["citing.rst","index.rst","install.rst","manual.rst","overview.rst","tutorial.rst"],objects:{},objnames:{},objtypes:{},terms:{"12f":5,"12g":5,"34269e":5,"41957e":5,"74118e":5,"76012e":5,"case":[4,5],"class":4,"computaci\u00f3n":4,"default":5,"export":2,"final":2,"function":[1,3,4],"import":5,"inform\u00e1tico":4,"polit\u00e8cnica":4,"public":0,"try":5,"val\u00e8ncia":4,"while":4, [...]
\ No newline at end of file
diff --git a/docs/usrman/tutorial.html b/docs/usrman/tutorial.html
index cd265d0..852c435 100644
--- a/docs/usrman/tutorial.html
+++ b/docs/usrman/tutorial.html
@@ -6,29 +6,31 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Tutorial — SLEPc for Python 3.7.0 documentation</title>
+    <title>Tutorial — SLEPc for Python 3.8.0 documentation</title>
     
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/classic.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '3.7.0',
+        VERSION:     '3.8.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
       };
     </script>
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="SLEPc for Python 3.7.0 documentation" href="index.html" />
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="Installation" href="install.html" />
     <link rel="prev" title="Overview" href="overview.html" /> 
   </head>
-  <body>
-    <div class="related">
+  <body role="document">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
@@ -40,14 +42,14 @@
         <li class="right" >
           <a href="overview.html" title="Overview"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>  
 
     <div class="document">
       <div class="documentwrapper">
         <div class="bodywrapper">
-          <div class="body">
+          <div class="body" role="main">
             
   <div class="section" id="tutorial">
 <h1>Tutorial<a class="headerlink" href="#tutorial" title="Permalink to this headline">¶</a></h1>
@@ -56,30 +58,30 @@ use, the reader is referred to SLEPc tutorials as well as to slepc4py
 reference documentation.</p>
 <div class="section" id="commented-source-of-a-simple-example">
 <h2>Commented source of a simple example<a class="headerlink" href="#commented-source-of-a-simple-example" title="Permalink to this headline">¶</a></h2>
-<p>In this section, we include the source code of example <tt class="docutils literal"><span class="pre">demo/ex1.py</span></tt>
+<p>In this section, we include the source code of example <code class="docutils literal"><span class="pre">demo/ex1.py</span></code>
 available in the slepc4py distribution, with comments inserted inline.</p>
 <p>The first thing to do is initialize the libraries. This is normally
 not required, as it is done automatically at import time. However, if
 you want to gain access to the facilities for accesing command-line
 options, the following lines must be executed by the main script prior
 to any petsc4py or slepc4py calls:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">sys</span><span class="o">,</span> <span class="nn">slepc4py</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">sys</span><span class="o">,</span> <span class="nn">slepc4py</span>
 <span class="n">slepc4py</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span>
 </pre></div>
 </div>
 <p>Next, we have to import the relevant modules. Normally, both PETSc and
 SLEPc modules have to be imported in all slepc4py programs. It may be
 useful to import NumPy as well:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">petsc4py</span> <span class="kn">import</span> <span class="n">PETSc</span>
-<span class="kn">from</span> <span class="nn">slepc4py</span> <span class="kn">import</span> <span class="n">SLEPc</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">petsc4py</span> <span class="k">import</span> <span class="n">PETSc</span>
+<span class="kn">from</span> <span class="nn">slepc4py</span> <span class="k">import</span> <span class="n">SLEPc</span>
 <span class="kn">import</span> <span class="nn">numpy</span>
 </pre></div>
 </div>
 <p>At this point, we can use any petsc4py and slepc4py operations. For
 instance, the following lines allow the user to specify an integer
-command-line argument <tt class="docutils literal"><span class="pre">n</span></tt> with a default value of 30 (see the next
+command-line argument <code class="docutils literal"><span class="pre">n</span></code> with a default value of 30 (see the next
 section for example usage of command-line options):</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">opts</span> <span class="o">=</span> <span class="n">PETSc</span><span class="o">.</span><span class="n">Options</span><span class="p">()</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">opts</span> <span class="o">=</span> <span class="n">PETSc</span><span class="o">.</span><span class="n">Options</span><span class="p">()</span>
 <span class="n">n</span> <span class="o">=</span> <span class="n">opts</span><span class="o">.</span><span class="n">getInt</span><span class="p">(</span><span class="s1">'n'</span><span class="p">,</span> <span class="mi">30</span><span class="p">)</span>
 </pre></div>
 </div>
@@ -89,7 +91,7 @@ creates the matrix object and then fills the non-zero elements one by
 one. The matrix of this particular example is tridiagonal, with value
 2 in the diagonal, and -1 in off-diagonal positions. See petsc4py
 documentation for details about matrix objects:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">A</span> <span class="o">=</span> <span class="n">PETSc</span><span class="o">.</span><span class="n">Mat</span><span class="p">()</span><span class="o">.</span><span class="n">create</span><span class="p">()</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">A</span> <span class="o">=</span> <span class="n">PETSc</span><span class="o">.</span><span class="n">Mat</span><span class="p">()</span><span class="o">.</span><span class="n">create</span><span class="p">()</span>
 <span class="n">A</span><span class="o">.</span><span class="n">setSizes</span><span class="p">([</span><span class="n">n</span><span class="p">,</span> <span class="n">n</span><span class="p">])</span>
 <span class="n">A</span><span class="o">.</span><span class="n">setFromOptions</span><span class="p">()</span>
 <span class="n">A</span><span class="o">.</span><span class="n">setUp</span><span class="p">()</span>
@@ -113,7 +115,7 @@ documentation for details about matrix objects:</p>
 </div>
 <p>The solver object is created in a similar way as other objects in
 petsc4py:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">E</span> <span class="o">=</span> <span class="n">SLEPc</span><span class="o">.</span><span class="n">EPS</span><span class="p">();</span> <span class="n">E</span><span class="o">.</span><span class="n">create</span><span class="p">()</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">E</span> <span class="o">=</span> <span class="n">SLEPc</span><span class="o">.</span><span class="n">EPS</span><span class="p">();</span> <span class="n">E</span><span class="o">.</span><span class="n">create</span><span class="p">()</span>
 </pre></div>
 </div>
 <p>Once the object is created, the eigenvalue problem must be
@@ -121,22 +123,22 @@ specified. At least one matrix must be provided. The problem type must
 be indicated as well, in this case it is HEP (Hermitian eigenvalue
 problem). Apart from these, other settings could be provided here (for
 instance, the tolerance for the computation). After all options have
-been set, the user should call the <tt class="docutils literal"><span class="pre">setFromOptions()</span></tt> operation, so
+been set, the user should call the <code class="docutils literal"><span class="pre">setFromOptions()</span></code> operation, so
 that any options specified at run time in the command line are passed
 to the solver object:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">E</span><span class="o">.</span><span class="n">setOperators</span><span class="p">(</span><span class="n">A</span><span class="p">)</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">E</span><span class="o">.</span><span class="n">setOperators</span><span class="p">(</span><span class="n">A</span><span class="p">)</span>
 <span class="n">E</span><span class="o">.</span><span class="n">setProblemType</span><span class="p">(</span><span class="n">SLEPc</span><span class="o">.</span><span class="n">EPS</span><span class="o">.</span><span class="n">ProblemType</span><span class="o">.</span><span class="n">HEP</span><span class="p">)</span>
 <span class="n">E</span><span class="o">.</span><span class="n">setFromOptions</span><span class="p">()</span>
 </pre></div>
 </div>
-<p>After that, the <tt class="docutils literal"><span class="pre">solve()</span></tt> method will run the selected eigensolver,
+<p>After that, the <code class="docutils literal"><span class="pre">solve()</span></code> method will run the selected eigensolver,
 keeping the solution stored internally:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">E</span><span class="o">.</span><span class="n">solve</span><span class="p">()</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">E</span><span class="o">.</span><span class="n">solve</span><span class="p">()</span>
 </pre></div>
 </div>
 <p>Once the computation has finished, we are ready to print the results.
 First, some informative data can be retrieved from the solver object:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">Print</span> <span class="o">=</span> <span class="n">PETSc</span><span class="o">.</span><span class="n">Sys</span><span class="o">.</span><span class="n">Print</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Print</span> <span class="o">=</span> <span class="n">PETSc</span><span class="o">.</span><span class="n">Sys</span><span class="o">.</span><span class="n">Print</span>
 
 <span class="n">Print</span><span class="p">()</span>
 <span class="n">Print</span><span class="p">(</span><span class="s2">"******************************"</span><span class="p">)</span>
@@ -159,17 +161,17 @@ First, some informative data can be retrieved from the solver object:</p>
 </div>
 <p>For retrieving the solution, it is necessary to find out how many
 eigenpairs have converged to the requested precision:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">nconv</span> <span class="o">=</span> <span class="n">E</span><span class="o">.</span><span class="n">getConverged</span><span class="p">()</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">nconv</span> <span class="o">=</span> <span class="n">E</span><span class="o">.</span><span class="n">getConverged</span><span class="p">()</span>
 <span class="n">Print</span><span class="p">(</span><span class="s2">"Number of converged eigenpairs </span><span class="si">%d</span><span class="s2">"</span> <span class="o">%</span> <span class="n">nconv</span><span class="p">)</span>
 </pre></div>
 </div>
-<p>For each of the <tt class="docutils literal"><span class="pre">nconv</span></tt> eigenpairs, we can retrieve the eigenvalue
-<tt class="docutils literal"><span class="pre">k</span></tt>, and the eigenvector, which is represented by means of two
-petsc4py vectors <tt class="docutils literal"><span class="pre">vr</span></tt> and <tt class="docutils literal"><span class="pre">vi</span></tt> (the real and imaginary part of the
+<p>For each of the <code class="docutils literal"><span class="pre">nconv</span></code> eigenpairs, we can retrieve the eigenvalue
+<code class="docutils literal"><span class="pre">k</span></code>, and the eigenvector, which is represented by means of two
+petsc4py vectors <code class="docutils literal"><span class="pre">vr</span></code> and <code class="docutils literal"><span class="pre">vi</span></code> (the real and imaginary part of the
 eigenvector, since for real matrices the eigenvalue and eigenvector
 may be complex).  We also compute the corresponding relative errors in
 order to make sure that the computed solution is indeed correct:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="n">nconv</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="n">nconv</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
     <span class="c1"># Create the results vectors</span>
     <span class="n">vr</span><span class="p">,</span> <span class="n">wr</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">getVecs</span><span class="p">()</span>
     <span class="n">vi</span><span class="p">,</span> <span class="n">wi</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">getVecs</span><span class="p">()</span>
@@ -192,9 +194,9 @@ order to make sure that the computed solution is indeed correct:</p>
 <h2>Example of command-line usage<a class="headerlink" href="#example-of-command-line-usage" title="Permalink to this headline">¶</a></h2>
 <p>Now we illustrate how to specify command-line options in order to
 extract the full potential of slepc4py.</p>
-<p>A simple execution of the <tt class="docutils literal"><span class="pre">demo/ex1.py</span></tt> script will result in the
+<p>A simple execution of the <code class="docutils literal"><span class="pre">demo/ex1.py</span></code> script will result in the
 following output:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ python demo/ex1.py
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ python demo/ex1.py
 
 ******************************
 *** SLEPc Solution Results ***
@@ -215,20 +217,20 @@ Number of converged eigenpairs 4
 </pre></div>
 </div>
 <p>For specifying different setting for the solver parameters, we can use
-SLEPc command-line options with the <tt class="docutils literal"><span class="pre">-eps</span></tt> prefix. For instance, to
+SLEPc command-line options with the <code class="docutils literal"><span class="pre">-eps</span></code> prefix. For instance, to
 change the number of requested eigenvalues and the tolerance:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ python demo/ex1.py -eps_nev 10 -eps_tol 1e-11
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ python demo/ex1.py -eps_nev 10 -eps_tol 1e-11
 </pre></div>
 </div>
 <p>The method used by the solver object can also be set at run time:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ python demo/ex1.py -eps_type lanczos
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ python demo/ex1.py -eps_type lanczos
 </pre></div>
 </div>
 <p>All the above settings can also be change within the source code by
 making use of the appropriate slepc4py method. Since options can be
 set from within the code and the command-line, it is often useful to
 view the particular settings that are currently being used:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ python demo/ex1.py -eps_view
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ python demo/ex1.py -eps_view
 
 EPS Object: 1 MPI processes
   type: krylovschur
@@ -256,19 +258,19 @@ ST Object: 1 MPI processes
 </pre></div>
 </div>
 <p>Note that for computing eigenvalues of smallest magnitude we can use
-the option <tt class="docutils literal"><span class="pre">-eps_smallest_magnitude</span></tt>, but for interior eigenvalues
+the option <code class="docutils literal"><span class="pre">-eps_smallest_magnitude</span></code>, but for interior eigenvalues
 things are not so straightforward. One possibility is to try with
 harmonic extraction, for instance to get the eigenvalues closest to
 0.6:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ python demo/ex1.py -eps_harmonic -eps_target 0.6
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ python demo/ex1.py -eps_harmonic -eps_target 0.6
 </pre></div>
 </div>
 <p>Depending on the problem, harmonic extraction may fail to converge. In
 those cases, it is necessary to specify a spectral transformation
 other than the default. In the command-line, this is indicated with
-the <tt class="docutils literal"><span class="pre">-st_</span></tt> prefix. For example, shift-and-invert with a value of the
+the <code class="docutils literal"><span class="pre">-st_</span></code> prefix. For example, shift-and-invert with a value of the
 shift equal to 0.6 would be:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span>$ python demo/ex1.py -st_type sinvert -eps_target 0.6
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ python demo/ex1.py -st_type sinvert -eps_target 0.6
 </pre></div>
 </div>
 </div>
@@ -278,7 +280,7 @@ shift equal to 0.6 would be:</p>
           </div>
         </div>
       </div>
-      <div class="sphinxsidebar">
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
         <div class="sphinxsidebarwrapper">
   <h3><a href="index.html">Table Of Contents</a></h3>
   <ul>
@@ -295,29 +297,28 @@ shift equal to 0.6 would be:</p>
   <h4>Next topic</h4>
   <p class="topless"><a href="install.html"
                         title="next chapter">Installation</a></p>
-  <h3>This Page</h3>
-  <ul class="this-page-menu">
-    <li><a href="_sources/tutorial.txt"
-           rel="nofollow">Show Source</a></li>
-  </ul>
-<div id="searchbox" style="display: none">
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/tutorial.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<div id="searchbox" style="display: none" role="search">
   <h3>Quick search</h3>
     <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
+      <div><input type="text" name="q" /></div>
+      <div><input type="submit" value="Go" /></div>
       <input type="hidden" name="check_keywords" value="yes" />
       <input type="hidden" name="area" value="default" />
     </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
 </div>
 <script type="text/javascript">$('#searchbox').show(0);</script>
         </div>
       </div>
       <div class="clearer"></div>
     </div>
-    <div class="related">
+    <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
@@ -329,12 +330,12 @@ shift equal to 0.6 would be:</p>
         <li class="right" >
           <a href="overview.html" title="Overview"
              >previous</a> |</li>
-        <li><a href="index.html">SLEPc for Python 3.7.0 documentation</a> »</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">SLEPc for Python 3.8.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2016, Lisandro Dalcin.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
+    <div class="footer" role="contentinfo">
+        © Copyright 2017, Lisandro Dalcin.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/setup.cfg b/setup.cfg
index c576b60..1c55a7f 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -20,5 +20,4 @@ doc_files = README.rst CHANGES.rst LICENSE.rst
 [egg_info]
 tag_build = 
 tag_date = 0
-tag_svn_revision = 0
 
diff --git a/setup.py b/setup.py
index 0b4ffa2..6b57017 100755
--- a/setup.py
+++ b/setup.py
@@ -16,8 +16,8 @@ except ImportError:
     setuptools = None
 
 pyver = sys.version_info[:2]
-if pyver < (2, 6) or (3, 0) <= pyver < (3, 2):
-    raise RuntimeError("Python version 2.6, 2.7 or >= 3.2 required")
+if pyver < (2, 6) or (3, 0) <= pyver < (3, 3):
+    raise RuntimeError("Python version 2.6, 2.7 or >= 3.3 required")
 
 # --------------------------------------------------------------------
 # Metadata
diff --git a/slepc4py.egg-info/PKG-INFO b/slepc4py.egg-info/PKG-INFO
index 30b541e..8786acb 100644
--- a/slepc4py.egg-info/PKG-INFO
+++ b/slepc4py.egg-info/PKG-INFO
@@ -1,12 +1,13 @@
 Metadata-Version: 1.1
 Name: slepc4py
-Version: 3.7.0
+Version: 3.8.0
 Summary: SLEPc for Python
 Home-page: https://bitbucket.org/slepc/slepc4py/
 Author: Lisandro Dalcin
 Author-email: dalcinl at gmail.com
 License: BSD
-Download-URL: https://bitbucket.org/slepc/slepc4py/downloads/slepc4py-3.7.0.tar.gz
+Download-URL: https://bitbucket.org/slepc/slepc4py/downloads/slepc4py-3.8.0.tar.gz
+Description-Content-Type: UNKNOWN
 Description: SLEPc for Python
         ================
         
diff --git a/slepc4py.egg-info/SOURCES.txt b/slepc4py.egg-info/SOURCES.txt
index 754c0fb..852c2fa 100644
--- a/slepc4py.egg-info/SOURCES.txt
+++ b/slepc4py.egg-info/SOURCES.txt
@@ -33,63 +33,6 @@ docs/slepc4py.info
 docs/slepc4py.pdf
 docs/apiref/api-objects.txt
 docs/apiref/class-tree.html
-docs/apiref/class_hierarchy_for__p_mem.png
-docs/apiref/class_hierarchy_for_balance.png
-docs/apiref/class_hierarchy_for_basis.png
-docs/apiref/class_hierarchy_for_blocktype.png
-docs/apiref/class_hierarchy_for_bv.png
-docs/apiref/class_hierarchy_for_combinetyp.png
-docs/apiref/class_hierarchy_for_conv.png
-docs/apiref/class_hierarchy_for_conv_2.png
-docs/apiref/class_hierarchy_for_convergedr.png
-docs/apiref/class_hierarchy_for_convergedr_2.png
-docs/apiref/class_hierarchy_for_convergedr_3.png
-docs/apiref/class_hierarchy_for_convergedr_4.png
-docs/apiref/class_hierarchy_for_convergedr_5.png
-docs/apiref/class_hierarchy_for_ds.png
-docs/apiref/class_hierarchy_for_eps.png
-docs/apiref/class_hierarchy_for_errortype.png
-docs/apiref/class_hierarchy_for_errortype_2.png
-docs/apiref/class_hierarchy_for_errortype_3.png
-docs/apiref/class_hierarchy_for_errortype_4.png
-docs/apiref/class_hierarchy_for_extract.png
-docs/apiref/class_hierarchy_for_extraction.png
-docs/apiref/class_hierarchy_for_fn.png
-docs/apiref/class_hierarchy_for_lanczosreo.png
-docs/apiref/class_hierarchy_for_matmode.png
-docs/apiref/class_hierarchy_for_mattype.png
-docs/apiref/class_hierarchy_for_mfn.png
-docs/apiref/class_hierarchy_for_nep.png
-docs/apiref/class_hierarchy_for_orthogtype.png
-docs/apiref/class_hierarchy_for_pep.png
-docs/apiref/class_hierarchy_for_powershift.png
-docs/apiref/class_hierarchy_for_problemtyp.png
-docs/apiref/class_hierarchy_for_problemtyp_2.png
-docs/apiref/class_hierarchy_for_refine.png
-docs/apiref/class_hierarchy_for_refine_2.png
-docs/apiref/class_hierarchy_for_refinesche.png
-docs/apiref/class_hierarchy_for_refinesche_2.png
-docs/apiref/class_hierarchy_for_refinetype.png
-docs/apiref/class_hierarchy_for_rg.png
-docs/apiref/class_hierarchy_for_scale.png
-docs/apiref/class_hierarchy_for_st.png
-docs/apiref/class_hierarchy_for_statetype.png
-docs/apiref/class_hierarchy_for_svd.png
-docs/apiref/class_hierarchy_for_sys.png
-docs/apiref/class_hierarchy_for_type.png
-docs/apiref/class_hierarchy_for_type_10.png
-docs/apiref/class_hierarchy_for_type_2.png
-docs/apiref/class_hierarchy_for_type_3.png
-docs/apiref/class_hierarchy_for_type_4.png
-docs/apiref/class_hierarchy_for_type_5.png
-docs/apiref/class_hierarchy_for_type_6.png
-docs/apiref/class_hierarchy_for_type_7.png
-docs/apiref/class_hierarchy_for_type_8.png
-docs/apiref/class_hierarchy_for_type_9.png
-docs/apiref/class_hierarchy_for_which.png
-docs/apiref/class_hierarchy_for_which_2.png
-docs/apiref/class_hierarchy_for_which_3.png
-docs/apiref/class_hierarchy_for_which_4.png
 docs/apiref/crarr.png
 docs/apiref/epydoc.css
 docs/apiref/epydoc.js
@@ -174,7 +117,6 @@ docs/source/links.txt
 docs/source/make.bat
 docs/source/manual.rst
 docs/source/overview.rst
-docs/source/sphinxfix.sty
 docs/source/toctree.txt
 docs/source/tutorial.rst
 docs/usrman/.buildinfo
@@ -188,14 +130,15 @@ docs/usrman/overview.html
 docs/usrman/search.html
 docs/usrman/searchindex.js
 docs/usrman/tutorial.html
-docs/usrman/_sources/citing.txt
-docs/usrman/_sources/index.txt
-docs/usrman/_sources/install.txt
-docs/usrman/_sources/manual.txt
-docs/usrman/_sources/overview.txt
-docs/usrman/_sources/tutorial.txt
+docs/usrman/_sources/citing.rst.txt
+docs/usrman/_sources/index.rst.txt
+docs/usrman/_sources/install.rst.txt
+docs/usrman/_sources/manual.rst.txt
+docs/usrman/_sources/overview.rst.txt
+docs/usrman/_sources/tutorial.rst.txt
 docs/usrman/_static/ajax-loader.gif
 docs/usrman/_static/basic.css
+docs/usrman/_static/classic.css
 docs/usrman/_static/comment-bright.png
 docs/usrman/_static/comment-close.png
 docs/usrman/_static/comment.png
@@ -204,12 +147,14 @@ docs/usrman/_static/doctools.js
 docs/usrman/_static/down-pressed.png
 docs/usrman/_static/down.png
 docs/usrman/_static/file.png
+docs/usrman/_static/jquery-3.1.0.js
 docs/usrman/_static/jquery.js
 docs/usrman/_static/minus.png
 docs/usrman/_static/plus.png
 docs/usrman/_static/pygments.css
 docs/usrman/_static/searchtools.js
 docs/usrman/_static/sidebar.js
+docs/usrman/_static/underscore-1.3.1.js
 docs/usrman/_static/underscore.js
 docs/usrman/_static/up-pressed.png
 docs/usrman/_static/up.png
diff --git a/slepc4py.egg-info/requires.txt b/slepc4py.egg-info/requires.txt
index 5fadf7b..88b950f 100644
--- a/slepc4py.egg-info/requires.txt
+++ b/slepc4py.egg-info/requires.txt
@@ -1 +1 @@
-petsc4py>=3.7,<3.8
+petsc4py<3.9,>=3.8
diff --git a/src/SLEPc/BV.pyx b/src/SLEPc/BV.pyx
index 1379d19..944d266 100644
--- a/src/SLEPc/BV.pyx
+++ b/src/SLEPc/BV.pyx
@@ -70,8 +70,7 @@ cdef class BV(Object):
                 Visualization context; if not provided, the standard
                 output is used.
         """
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( BVView(self.bv, vwr) )
 
     def destroy(self):
@@ -162,7 +161,7 @@ cdef class BV(Object):
         BV_Sizes(sizes, &n, &N)
         CHKERR( BVSetSizes(self.bv, n, N, ival) )
 
-    def setSizesFromVec(self, Vec w not None, m):
+    def setSizesFromVec(self, Vec w, m):
         """
         Sets the local and global sizes, and the number of columns. Local and
         global sizes are specified indirectly by passing a template vector.
@@ -323,22 +322,22 @@ cdef class BV(Object):
         PetscINCREF(mat.obj)
         return mat, <bint>indef
 
-    def setMatrix(self, Mat mat, bint indef):
+    def setMatrix(self, Mat mat or None, bint indef):
         """
         Sets the bilinear form to be used for inner products.
 
         Parameters
         ----------
-        mat:  Mat, optional
+        mat:  Mat or None
               The matrix of the inner product.
         indef: bool, optional
                Whether the matrix is indefinite
         """
-        cdef PetscMat m = NULL if mat is None else mat.mat
+        cdef PetscMat m = <PetscMat>NULL if mat is None else mat.mat
         cdef PetscBool tval = PETSC_TRUE if indef else PETSC_FALSE
         CHKERR( BVSetMatrix(self.bv, m, tval) )
 
-    def applyMatrix(self, Vec x not None, Vec y not None):
+    def applyMatrix(self, Vec x, Vec y):
         """
         Multiplies a vector with the matrix associated to the bilinear
         form.
@@ -415,7 +414,7 @@ cdef class BV(Object):
         cdef PetscScalar sval = asScalar(alpha)
         CHKERR( BVScale(self.bv, sval) )
 
-    def insertVec(self, int j, Vec w not None):
+    def insertVec(self, int j, Vec w):
         """
         Insert a vector into the specified column.
 
@@ -428,7 +427,7 @@ cdef class BV(Object):
         """
         CHKERR( BVInsertVec(self.bv, j, w.vec) )
 
-    def insertVecs(self, int s, W not None, bint orth):
+    def insertVecs(self, int s, W, bint orth):
         """
         Insert a set of vectors into specified columns.
 
@@ -464,7 +463,7 @@ cdef class BV(Object):
         CHKERR( BVInsertVecs(self.bv, <PetscInt>s, &m, ws, tval) )
         return toInt(m)
 
-    def dotVec(self, Vec v not None):
+    def dotVec(self, Vec v):
         """
         Computes multiple dot products of a vector against all the column
         vectors of a BV.
@@ -488,14 +487,14 @@ cdef class BV(Object):
         """
         l, k = self.getActiveColumns()
         cdef PetscScalar* mval = NULL
-        cdef tmp = allocate(<size_t>(k - l)*sizeof(PetscScalar),<void**>&mval)
+        cdef tmp = allocate(<size_t>(k - l)*sizeof(PetscScalar), <void**>&mval)
 
         CHKERR( BVDotVec(self.bv, v.vec, mval) )
 
         v = Vec().create(COMM_SELF)
         v.setType('seq')
-        v.setSizes((DECIDE,k-l))
-        v.setArray([mval[i] for i in range(0, k - l)])
+        v.setSizes((DECIDE, k-l))
+        v.setArray([toScalar(mval[i]) for i in range(0, k - l)])
         v.ghostUpdate()
 
         return v
@@ -523,7 +522,7 @@ cdef class BV(Object):
         CHKERR( BVGetColumn(self.bv, j, &v.vec) )
         return v
 
-    def restoreColumn(self, int j, Vec v not None):
+    def restoreColumn(self, int j, Vec v):
         """
         Restore a column obtained with BVGetColumn().
 
@@ -541,7 +540,7 @@ cdef class BV(Object):
         """
         CHKERR( BVRestoreColumn(self.bv, j, &v.vec) )
 
-    def dot(self, BV Y not None):
+    def dot(self, BV Y):
         """
         Computes the 'block-dot' product of two basis vectors objects.
             M = Y^H*X (m_ij = y_i^H x_j) or M = Y^H*B*X
@@ -580,7 +579,7 @@ cdef class BV(Object):
         CHKERR( BVDot(X.bv, Y.bv, M.mat) )
         return M
 
-    def matProject(self, Mat A, BV Y not None):
+    def matProject(self, Mat A or None, BV Y):
         """
         Computes the projection of a matrix onto a subspace.
 
@@ -600,15 +599,15 @@ cdef class BV(Object):
             Projection of the matrix A onto the subspace.
         """
         cdef BV X = self
-        cdef PetscInt ky=0, kx=0
-        CHKERR( BVGetActiveColumns(Y.bv, NULL, &ky) )
+        cdef PetscInt  kx=0, ky=0
         CHKERR( BVGetActiveColumns(X.bv, NULL, &kx) )
+        CHKERR( BVGetActiveColumns(Y.bv, NULL, &ky) )
+        cdef PetscMat Amat = <PetscMat>NULL if A is None else A.mat
         cdef Mat M = Mat().createDense((ky, kx), comm=COMM_SELF).setUp()
-        cdef PetscMat Amat = NULL if A is None else A.mat
         CHKERR( BVMatProject(X.bv, Amat, Y.bv, M.mat) )
         return M
 
-    def matMult(self, Mat A not None, BV Y=None):
+    def matMult(self, Mat A, BV Y=None):
         """
         Computes the matrix-vector product for each column, Y = A*V.
 
@@ -656,7 +655,7 @@ cdef class BV(Object):
         CHKERR( BVMatMult(self.bv, A.mat, Y.bv) )
         return Y
 
-    def matMultHermitianTranspose(self, Mat A not None, BV Y=None):
+    def matMultHermitianTranspose(self, Mat A, BV Y=None):
         """
         Computes the matrix-vector product with the conjugate transpose of a
         matrix for each column, Y=A^H*V.
@@ -700,7 +699,7 @@ cdef class BV(Object):
         CHKERR( BVMatMultHermitianTranspose(self.bv, A.mat, Y.bv) )
         return Y
 
-    def multVec(self, alpha, beta, Vec y not None, q):
+    def multVec(self, alpha, beta, Vec y, q):
         """
         Computes y = beta*y + alpha*X*q.
 
@@ -792,7 +791,7 @@ cdef class BV(Object):
         """
         CHKERR( BVSetRandom(self.bv) )
 
-    def orthogonalizeVec(self, Vec v not None):
+    def orthogonalizeVec(self, Vec v):
         """
         Orthogonalize a vector with respect to a set of vectors.
 
@@ -829,7 +828,7 @@ cdef class BV(Object):
 
         Parameters
         ----------
-        R: Mat or None
+        R: Mat, optional
             A sequential dense matrix.
 
         Notes
@@ -837,7 +836,7 @@ cdef class BV(Object):
         The output satisfies ``V0 = V*R`` (where V0 represent the input V) and ``V'*V = I``.
         """
         if kargs: self.setOrthogonalization(**kargs)
-        cdef PetscMat Rmat = NULL if R is None else R.mat
+        cdef PetscMat Rmat = <PetscMat>NULL if R is None else R.mat
         CHKERR( BVOrthogonalize(self.bv, Rmat) )
 
 # -----------------------------------------------------------------------------
diff --git a/src/SLEPc/DS.pyx b/src/SLEPc/DS.pyx
index 8988afd..deb3846 100644
--- a/src/SLEPc/DS.pyx
+++ b/src/SLEPc/DS.pyx
@@ -83,8 +83,7 @@ cdef class DS(Object):
                 Visualization context; if not provided, the standard
                 output is used.
         """
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( DSView(self.ds, vwr) )
 
     def destroy(self):
diff --git a/src/SLEPc/EPS.pyx b/src/SLEPc/EPS.pyx
index 16a4302..36b9888 100644
--- a/src/SLEPc/EPS.pyx
+++ b/src/SLEPc/EPS.pyx
@@ -238,8 +238,7 @@ cdef class EPS(Object):
                 Visualization context; if not provided, the standard
                 output is used.
         """
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( EPSView(self.eps, vwr) )
 
     def destroy(self):
@@ -855,7 +854,7 @@ cdef class EPS(Object):
         PetscINCREF(st.obj)
         return st
 
-    def setST(self, ST st not None):
+    def setST(self, ST st):
         """
         Associates a spectral transformation object to the
         eigensolver.
@@ -881,7 +880,7 @@ cdef class EPS(Object):
         PetscINCREF(bv.obj)
         return bv
 
-    def setBV(self, BV bv not None):
+    def setBV(self, BV bv):
         """
         Associates a basis vectors object to the eigensolver.
 
@@ -906,7 +905,7 @@ cdef class EPS(Object):
         PetscINCREF(ds.obj)
         return ds
 
-    def setDS(self, DS ds not None):
+    def setDS(self, DS ds):
         """
         Associates a direct solver object to the eigensolver.
 
@@ -931,7 +930,7 @@ cdef class EPS(Object):
         PetscINCREF(rg.obj)
         return rg
 
-    def setRG(self, RG rg not None):
+    def setRG(self, RG rg):
         """
         Associates a region object to the eigensolver.
 
@@ -960,7 +959,7 @@ cdef class EPS(Object):
         PetscINCREF(B.obj)
         return (A, B)
 
-    def setOperators(self, Mat A not None, Mat B=None):
+    def setOperators(self, Mat A, Mat B=None):
         """
         Sets the matrices associated with the eigenvalue problem.
 
@@ -972,8 +971,7 @@ cdef class EPS(Object):
            The second matrix in the case of generalized eigenproblems;
            if not provided, a standard eigenproblem is assumed.
         """
-        cdef PetscMat Bmat = NULL
-        if B is not None: Bmat = B.mat
+        cdef PetscMat Bmat = B.mat if B is not None else <PetscMat>NULL
         CHKERR( EPSSetOperators(self.eps, A.mat, Bmat) )
 
     def setDeflationSpace(self, space):
@@ -1041,13 +1039,49 @@ cdef class EPS(Object):
         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
         CHKERR( EPSSetInitialSpace(self.eps, <PetscInt>ns, vs) )
 
-    #
+    # --- convergence ---
+
+    def setStoppingTest(self, stopping, args=None, kargs=None):
+        """
+        Sets a function to decide when to stop the outer iteration of the eigensolver.
+        """
+        if stopping is not None:
+            if args is None: args = ()
+            if kargs is None: kargs = {}
+            self.set_attr('__stopping__', (stopping, args, kargs))
+            CHKERR( EPSSetStoppingTestFunction(self.eps, EPS_Stopping, NULL, NULL) )
+        else:
+            self.set_attr('__stopping__', None)
+            CHKERR( EPSSetStoppingTestFunction(self.eps, EPSStoppingBasic, NULL, NULL) )
+
+    # --- monitoring ---
+
+    def setMonitor(self, monitor, args=None, kargs=None):
+        """
+        Appends a monitor function to the list of monitors.
+        """
+        if monitor is None: return
+        cdef object monitorlist = self.get_attr('__monitor__')
+        if monitorlist is None:
+            monitorlist = []
+            self.set_attr('__monitor__', monitorlist)
+            CHKERR( EPSMonitorSet(self.eps, EPS_Monitor, NULL, NULL) )
+        if args is None: args = ()
+        if kargs is None: kargs = {}
+        monitorlist.append((monitor, args, kargs))
+
+    def getMonitor(self):
+        """
+        Gets the list of monitor functions.
+        """
+        return self.get_attr('__monitor__')
 
     def cancelMonitor(self):
         """
         Clears all monitors for an EPS object.
         """
         CHKERR( EPSMonitorCancel(self.eps) )
+        self.set_attr('__monitor__', None)
 
     #
 
@@ -1140,9 +1174,9 @@ cdef class EPS(Object):
         cdef PetscScalar sval1 = 0
         cdef PetscScalar sval2 = 0
         CHKERR( EPSGetEigenvalue(self.eps, i, &sval1, &sval2) )
-        return complex(toScalar(sval1), toScalar(sval2))
+        return toComplex(sval1, sval2)
 
-    def getEigenvector(self, int i, Vec Vr not None, Vec Vi=None):
+    def getEigenvector(self, int i, Vec Vr, Vec Vi=None):
         """
         Gets the i-th eigenvector as computed by `solve()`.
 
@@ -1162,10 +1196,8 @@ cdef class EPS(Object):
         according to the ordering criterion established with
         `setWhichEigenpairs()`.
         """
-        cdef PetscVec vecr = NULL
-        cdef PetscVec veci = NULL
-        if Vr is not None: vecr = Vr.vec
-        if Vi is not None: veci = Vi.vec
+        cdef PetscVec vecr = Vr.vec
+        cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
         CHKERR( EPSGetEigenvector(self.eps, i, vecr, veci) )
 
     def getEigenpair(self, int i, Vec Vr=None, Vec Vi=None):
@@ -1197,12 +1229,10 @@ cdef class EPS(Object):
         """
         cdef PetscScalar sval1 = 0
         cdef PetscScalar sval2 = 0
-        cdef PetscVec vecr = NULL
-        cdef PetscVec veci = NULL
-        if Vr is not None: vecr = Vr.vec
-        if Vi is not None: veci = Vi.vec
+        cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
+        cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
         CHKERR( EPSGetEigenpair(self.eps, i, &sval1, &sval2, vecr, veci) )
-        return complex(toScalar(sval1), toScalar(sval2))
+        return toComplex(sval1, sval2)
 
     def getInvariantSubspace(self):
         """
@@ -1319,8 +1349,7 @@ cdef class EPS(Object):
         """
         cdef SlepcEPSErrorType et = EPS_ERROR_RELATIVE
         if etype is not None: et = etype
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( EPSErrorView(self.eps, et, vwr) )
 
     #
@@ -1670,8 +1699,7 @@ cdef class EPS(Object):
         see `getKrylovSchurSubcommInfo()`.
         """
         cdef PetscScalar sval = 0
-        cdef PetscVec vec = NULL
-        if V is not None: vec = V.vec
+        cdef PetscVec vec = V.vec if V is not None else <PetscVec>NULL
         CHKERR( EPSKrylovSchurGetSubcommPairs(self.eps, i, &sval, vec) )
         return toScalar(sval)
 
@@ -1740,10 +1768,8 @@ cdef class EPS(Object):
         If `globalup` is True, communication is carried out to reconstruct the updated
         matrices in the parent communicator.
         """
-        cdef PetscMat Amat = NULL
-        if Au is not None: Amat = Au.mat
-        cdef PetscMat Bmat = NULL
-        if Bu is not None: Bmat = Bu.mat
+        cdef PetscMat Amat = Au.mat if Au is not None else <PetscMat>NULL
+        cdef PetscMat Bmat = Bu.mat if Bu is not None else <PetscMat>NULL
         cdef PetscMatStructure vstr = matstructure(structure)
         cdef PetscBool tval = globalup
         CHKERR( EPSKrylovSchurUpdateSubcommMats(self.eps, s, a, Amat, t, b, Bmat, vstr, tval) )
diff --git a/src/SLEPc/FN.pyx b/src/SLEPc/FN.pyx
index 0999731..69c2de1 100644
--- a/src/SLEPc/FN.pyx
+++ b/src/SLEPc/FN.pyx
@@ -51,8 +51,7 @@ cdef class FN(Object):
                 Visualization context; if not provided, the standard
                 output is used.
         """
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( FNView(self.fn, vwr) )
 
     def destroy(self):
@@ -223,7 +222,7 @@ cdef class FN(Object):
 
     #
 
-    def setRationalNumerator(self, alpha not None):
+    def setRationalNumerator(self, alpha):
         """
         Sets the coefficients of the numerator of the rational function.
 
@@ -237,7 +236,7 @@ cdef class FN(Object):
         cdef object tmp1 = iarray_s(alpha, &na, &a)
         CHKERR( FNRationalSetNumerator(self.fn, na, a) )
 
-    def setRationalDenominator(self, alpha not None):
+    def setRationalDenominator(self, alpha):
         """
         Sets the coefficients of the denominator of the rational function.
 
diff --git a/src/SLEPc/MFN.pyx b/src/SLEPc/MFN.pyx
index 7eb5d3e..7c68bf2 100644
--- a/src/SLEPc/MFN.pyx
+++ b/src/SLEPc/MFN.pyx
@@ -45,8 +45,7 @@ cdef class MFN(Object):
             Visualization context; if not provided, the standard
             output is used.
         """
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( MFNView(self.mfn, vwr) )
 
     def destroy(self):
@@ -230,7 +229,7 @@ cdef class MFN(Object):
         PetscINCREF(fn.obj)
         return fn
 
-    def setFN(self, FN fn not None):
+    def setFN(self, FN fn):
         """
         Associates a math function object to the MFN object.
 
@@ -255,7 +254,7 @@ cdef class MFN(Object):
         PetscINCREF(bv.obj)
         return bv
 
-    def setBV(self, BV bv not None):
+    def setBV(self, BV bv):
         """
         Associates a basis vector object to the MFN object.
 
@@ -280,7 +279,7 @@ cdef class MFN(Object):
         PetscINCREF(A.obj)
         return A
 
-    def setOperator(self, Mat A not None):
+    def setOperator(self, Mat A):
         """
         Sets the matrix associated with the MFN object.
 
@@ -308,7 +307,7 @@ cdef class MFN(Object):
         """
         CHKERR( MFNSetUp(self.mfn) )
 
-    def solve(self, Vec b not None, Vec x not None):
+    def solve(self, Vec b, Vec x):
         """
         Solves the matrix function problem. Given a vector b, the
         vector x = f(alpha*A)*b is returned.
diff --git a/src/SLEPc/NEP.pyx b/src/SLEPc/NEP.pyx
index 3b0ddfb..82a7222 100644
--- a/src/SLEPc/NEP.pyx
+++ b/src/SLEPc/NEP.pyx
@@ -107,8 +107,7 @@ cdef class NEP(Object):
             Visualization context; if not provided, the standard
             output is used.
         """
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( NEPView(self.nep, vwr) )
 
     def destroy(self):
@@ -388,7 +387,7 @@ cdef class NEP(Object):
         PetscINCREF(bv.obj)
         return bv
 
-    def setBV(self, BV bv not None):
+    def setBV(self, BV bv):
         """
         Associates a basis vectors object to the eigensolver.
 
@@ -413,7 +412,7 @@ cdef class NEP(Object):
         PetscINCREF(rg.obj)
         return rg
 
-    def setRG(self, RG rg not None):
+    def setRG(self, RG rg):
         """
         Associates a region object to the eigensolver.
 
@@ -531,12 +530,10 @@ cdef class NEP(Object):
         """
         cdef PetscScalar sval1 = 0
         cdef PetscScalar sval2 = 0
-        cdef PetscVec vecr = NULL
-        cdef PetscVec veci = NULL
-        if Vr is not None: vecr = Vr.vec
-        if Vi is not None: veci = Vi.vec
+        cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
+        cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
         CHKERR( NEPGetEigenpair(self.nep, i, &sval1, &sval2, vecr, veci) )
-        return complex(toScalar(sval1), toScalar(sval2))
+        return toComplex(sval1, sval2)
 
     def getErrorEstimate(self, int i):
         """
@@ -605,8 +602,7 @@ cdef class NEP(Object):
         """
         cdef SlepcNEPErrorType et = NEP_ERROR_RELATIVE
         if etype is not None: et = etype
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( NEPErrorView(self.nep, et, vwr) )
 
     def setFunction(self, function, Mat F, Mat P=None, args=None, kargs=None):
@@ -623,10 +619,8 @@ cdef class NEP(Object):
         P: Mat
             preconditioner matrix (usually same as the Function)
         """
-        cdef PetscMat Fmat=NULL
-        if F is not None: Fmat = F.mat
-        cdef PetscMat Pmat=Fmat
-        if P is not None: Pmat = P.mat
+        cdef PetscMat Fmat = F.mat if F is not None else <PetscMat>NULL
+        cdef PetscMat Pmat = P.mat if P is not None else Fmat
         CHKERR( NEPSetFunction(self.nep, Fmat, Pmat, NEP_Function, NULL) )
         if args is None: args = ()
         if kargs is None: kargs = {}
@@ -644,8 +638,7 @@ cdef class NEP(Object):
         J: Mat
             Jacobian matrix
         """
-        cdef PetscMat Jmat=NULL
-        if J is not None: Jmat = J.mat
+        cdef PetscMat Jmat = J.mat if J is not None else <PetscMat>NULL
         CHKERR( NEPSetJacobian(self.nep, Jmat, NEP_Jacobian, NULL) )
         if args is None: args = ()
         if kargs is None: kargs = {}
diff --git a/src/SLEPc/PEP.pyx b/src/SLEPc/PEP.pyx
index a7cc944..ea319fe 100644
--- a/src/SLEPc/PEP.pyx
+++ b/src/SLEPc/PEP.pyx
@@ -196,8 +196,7 @@ cdef class PEP(Object):
             Visualization context; if not provided, the standard
             output is used.
         """
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( PEPView(self.pep, vwr) )
 
     def destroy(self):
@@ -383,6 +382,41 @@ cdef class PEP(Object):
         cdef SlepcPEPWhich val = which
         CHKERR( PEPSetWhichEigenpairs(self.pep, val) )
 
+    def getTarget(self):
+        """
+        Gets the value of the target.
+
+        Returns
+        -------
+        target: float (real or complex)
+                The value of the target.
+
+        Notes
+        -----
+        If the target was not set by the user, then zero is returned.
+        """
+        cdef PetscScalar sval = 0
+        CHKERR( PEPGetTarget(self.pep, &sval) )
+        return toScalar(sval)
+
+    def setTarget(self, target):
+        """
+        Sets the value of the target.
+
+        Parameters
+        ----------
+        target: float (real or complex)
+                The value of the target.
+
+        Notes
+        -----
+        The target is a scalar value used to determine the portion of
+        the spectrum of interest. It is used in combination with
+        `setWhichEigenpairs()`.
+        """
+        cdef PetscScalar sval = asScalar(target)
+        CHKERR( PEPSetTarget(self.pep, sval) )
+
     def getTolerances(self):
         """
         Gets the tolerance and maximum iteration count used by the
@@ -587,7 +621,7 @@ cdef class PEP(Object):
         PetscINCREF(st.obj)
         return st
 
-    def setST(self, ST st not None):
+    def setST(self, ST st):
         """
         Associates a spectral transformation object to the
         eigensolver.
@@ -689,7 +723,7 @@ cdef class PEP(Object):
         PetscINCREF(bv.obj)
         return bv
 
-    def setBV(self, BV bv not None):
+    def setBV(self, BV bv):
         """
         Associates a basis vectors object to the eigensolver.
 
@@ -714,7 +748,7 @@ cdef class PEP(Object):
         PetscINCREF(rg.obj)
         return rg
 
-    def setRG(self, RG rg not None):
+    def setRG(self, RG rg):
         """
         Associates a region object to the eigensolver.
 
@@ -868,12 +902,10 @@ cdef class PEP(Object):
         """
         cdef PetscScalar sval1 = 0
         cdef PetscScalar sval2 = 0
-        cdef PetscVec vecr = NULL
-        cdef PetscVec veci = NULL
-        if Vr is not None: vecr = Vr.vec
-        if Vi is not None: veci = Vi.vec
+        cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
+        cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
         CHKERR( PEPGetEigenpair(self.pep, i, &sval1, &sval2, vecr, veci) )
-        return complex(toScalar(sval1), toScalar(sval2))
+        return toComplex(sval1, sval2)
 
     def getErrorEstimate(self, int i):
         """
@@ -947,13 +979,12 @@ cdef class PEP(Object):
         """
         cdef SlepcPEPErrorType et = PEP_ERROR_RELATIVE
         if etype is not None: et = etype
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( PEPErrorView(self.pep, et, vwr) )
 
     #
 
-    def setLinearEPS(self, EPS eps not None):
+    def setLinearEPS(self, EPS eps):
         """
         Associate an eigensolver object (EPS) to the polynomial eigenvalue solver.
 
@@ -979,7 +1010,7 @@ cdef class PEP(Object):
         PetscINCREF(eps.obj)
         return eps
         
-    def setLinearCompanionForm(self, cform not None):
+    def setLinearCompanionForm(self, int cform):
         """
         Choose between the two companion forms available for the linearization of
         a quadratic eigenproblem.
@@ -1005,7 +1036,7 @@ cdef class PEP(Object):
         CHKERR( PEPLinearGetCompanionForm(self.pep, &cform) )
         return cform
         
-    def setLinearExplicitMatrix(self, flag not None):
+    def setLinearExplicitMatrix(self, flag):
         """
         Indicate if the matrices A and B for the linearization of the problem
         must be built explicitly.
diff --git a/src/SLEPc/RG.pyx b/src/SLEPc/RG.pyx
index 5ef24a9..f3a529a 100644
--- a/src/SLEPc/RG.pyx
+++ b/src/SLEPc/RG.pyx
@@ -33,8 +33,7 @@ cdef class RG(Object):
                 Visualization context; if not provided, the standard
                 output is used.
         """
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( RGView(self.rg, vwr) )
 
     def destroy(self):
diff --git a/src/SLEPc/SLEPc.pyx b/src/SLEPc/SLEPc.pyx
index 939d293..3149f96 100644
--- a/src/SLEPc/SLEPc.pyx
+++ b/src/SLEPc/SLEPc.pyx
@@ -91,7 +91,7 @@ cdef extern from *:
 
 cdef extern from "scalar.h":
     object      PyPetscScalar_FromPetscScalar(PetscScalar)
-    PetscScalar PyPetscScalar_AsPetscScalar(object) except*
+    PetscScalar PyPetscScalar_AsPetscScalar(object) except? <PetscScalar>-1.0
 
 cdef inline object toInt(PetscInt value):
     return value
@@ -105,9 +105,12 @@ cdef inline PetscReal asReal(object value) except? -1:
 
 cdef inline object toScalar(PetscScalar value):
     return PyPetscScalar_FromPetscScalar(value)
-cdef inline PetscScalar asScalar(object value) except*:
+cdef inline PetscScalar asScalar(object value) except? <PetscScalar>-1.0:
     return PyPetscScalar_AsPetscScalar(value)
 
+cdef inline object toComplex(PetscScalar rvalue, PetscScalar ivalue):
+    return complex(toScalar(rvalue),toScalar(ivalue))
+
 # -----------------------------------------------------------------------------
 
 cdef extern from "string.h"  nogil:
diff --git a/src/SLEPc/ST.pyx b/src/SLEPc/ST.pyx
index d966cd4..07255c8 100644
--- a/src/SLEPc/ST.pyx
+++ b/src/SLEPc/ST.pyx
@@ -54,8 +54,7 @@ cdef class ST(Object):
                 Visualization context; if not provided, the standard
                 output is used.
         """
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( STView(self.st, vwr) )
 
     def destroy(self):
@@ -290,7 +289,7 @@ cdef class ST(Object):
         CHKERR( STGetMatMode(self.st, &val) )
         return val
 
-    def setOperators(self, operators):
+    def setMatrices(self, operators):
         """
         Sets the matrices associated with the eigenvalue problem.
 
@@ -304,9 +303,9 @@ cdef class ST(Object):
         cdef Py_ssize_t k=0, n = len(operators)
         cdef tmp = allocate(<size_t>n*sizeof(PetscMat),<void**>&mats)
         for k from 0 <= k < n: mats[k] = (<Mat?>operators[k]).mat
-        CHKERR( STSetOperators(self.st, <PetscInt>n, mats) )
+        CHKERR( STSetMatrices(self.st, <PetscInt>n, mats) )
 
-    def getOperators(self):
+    def getMatrices(self):
         """
         Gets the matrices associated with the eigenvalue problem.
 
@@ -321,7 +320,7 @@ cdef class ST(Object):
         CHKERR( STGetNumMatrices(self.st, &n) )
         cdef object operators = []
         for k from 0 <= k < n:
-            CHKERR( STGetOperators(self.st, k, &mat) )
+            CHKERR( STGetMatrix(self.st, k, &mat) )
             A = Mat(); A.mat = mat; PetscINCREF(A.obj)
             operators.append(A)
         return tuple(operators)
@@ -350,7 +349,7 @@ cdef class ST(Object):
         cdef PetscMatStructure val = matstructure(structure)
         CHKERR( STSetMatStructure(self.st, val) )
 
-    def setKSP(self, KSP ksp not None):
+    def setKSP(self, KSP ksp):
         """
         Sets the KSP object associated with the spectral
         transformation.
@@ -391,7 +390,7 @@ cdef class ST(Object):
         """
         CHKERR( STSetUp(self.st) )
 
-    def apply(self, Vec x not None, Vec y not None):
+    def apply(self, Vec x, Vec y):
         """
         Applies the spectral transformation operator to a vector, for
         instance ``(A - sB)^-1 B`` in the case of the shift-and-invert
@@ -406,7 +405,7 @@ cdef class ST(Object):
         """
         CHKERR( STApply(self.st, x.vec, y.vec) )
 
-    def applyTranspose(self, Vec x not None, Vec y not None):
+    def applyTranspose(self, Vec x, Vec y):
         """
         Applies the transpose of the operator to a vector, for
         instance ``B^T(A - sB)^-T`` in the case of the
diff --git a/src/SLEPc/SVD.pyx b/src/SLEPc/SVD.pyx
index aec7c0c..353f90e 100644
--- a/src/SLEPc/SVD.pyx
+++ b/src/SLEPc/SVD.pyx
@@ -80,8 +80,7 @@ cdef class SVD(Object):
                 Visualization context; if not provided, the standard
                 output is used.
         """
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( SVDView(self.svd, vwr) )
 
     def destroy(self):
@@ -402,7 +401,7 @@ cdef class SVD(Object):
         PetscINCREF(U.obj)
         return (V,U)
 
-    def setBV(self, BV V not None,BV U=None):
+    def setBV(self, BV V,BV U=None):
         """
         Associates basis vectors objects to the SVD solver.
 
@@ -414,8 +413,7 @@ cdef class SVD(Object):
             The basis vectors context for left singular vectors.
         """
         cdef SlepcBV VBV = V.bv
-        cdef SlepcBV UBV = NULL
-        if U is not None: UBV = U.bv
+        cdef SlepcBV UBV = U.bv if U is not None else <SlepcBV>NULL
         CHKERR( SVDSetBV(self.svd, VBV, UBV) )
 
     def getOperator(self):
@@ -432,7 +430,7 @@ cdef class SVD(Object):
         PetscINCREF(A.obj)
         return A
 
-    def setOperator(self, Mat A not None):
+    def setOperator(self, Mat A):
         """
         Sets the matrix associated with the singular value problem.
 
@@ -445,22 +443,32 @@ cdef class SVD(Object):
 
     #
 
-    def setInitialSpace(self, space):
+    def setInitialSpaces(self, spaceright=None, spaceleft=None):
         """
-        Sets the initial space from which the SVD solver starts to
+        Sets the initial spaces from which the SVD solver starts to
         iterate.
 
         Parameters
         ----------
-        space: an sequence of Vec
-           The initial space.
-        """
-        if isinstance(space, Vec): space = [space]
-        cdef PetscVec *vs = NULL
-        cdef Py_ssize_t i = 0, ns = len(space)
-        cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)
-        for i in range(ns): vs[i] = (<Vec?>space[i]).vec
-        CHKERR( SVDSetInitialSpace(self.svd, <PetscInt>ns, vs) )
+        spaceright: sequence of Vec
+           The right initial space.
+        spaceleft: sequence of Vec
+           The left initial space.
+        """
+        cdef Py_ssize_t i = 0
+        if spaceright is None: spaceright = []
+        elif isinstance(spaceright, Vec): spaceright = [spaceright]
+        cdef PetscVec *isr = NULL
+        cdef Py_ssize_t nr = len(spaceright)
+        cdef tmp1 = allocate(<size_t>nr*sizeof(Vec),<void**>&isr)
+        for i in range(nr): isr[i] = (<Vec?>spaceright[i]).vec
+        if spaceleft is None: spaceright = []
+        elif isinstance(spaceleft, Vec): spaceleft = [spaceleft]
+        cdef PetscVec *isl = NULL
+        cdef Py_ssize_t nl = len(spaceleft)
+        cdef tmp2 = allocate(<size_t>nl*sizeof(Vec),<void**>&isl)
+        for i in range(nl): isl[i] = (<Vec?>spaceleft[i]).vec
+        CHKERR( SVDSetInitialSpaces(self.svd, <PetscInt>nr, isr, <PetscInt>nl, isl) )
 
     #
 
@@ -562,7 +570,7 @@ cdef class SVD(Object):
         CHKERR( SVDGetSingularTriplet(self.svd, i, &rval, NULL, NULL) )
         return toReal(rval)
 
-    def getVectors(self, int i, Vec U not None, Vec V not None):
+    def getVectors(self, int i, Vec U, Vec V):
         """
         Gets the i-th left and right singular vectors as computed by
         `solve()`.
@@ -614,10 +622,8 @@ cdef class SVD(Object):
         `setWhichSingularTriplets()`.
         """
         cdef PetscReal rval = 0
-        cdef PetscVec Uvec = NULL
-        cdef PetscVec Vvec = NULL
-        if U is not None: Uvec = U.vec
-        if V is not None: Vvec = V.vec
+        cdef PetscVec Uvec = U.vec if U is not None else <PetscVec>NULL
+        cdef PetscVec Vvec = V.vec if V is not None else <PetscVec>NULL
         CHKERR( SVDGetSingularTriplet(self.svd, i, &rval, Uvec, Vvec) )
         return toReal(rval)
 
@@ -678,13 +684,12 @@ cdef class SVD(Object):
         """
         cdef SlepcSVDErrorType et = SVD_ERROR_RELATIVE
         if etype is not None: et = etype
-        cdef PetscViewer vwr = NULL
-        if viewer is not None: vwr = viewer.vwr
+        cdef PetscViewer vwr = def_Viewer(viewer)
         CHKERR( SVDErrorView(self.svd, et, vwr) )
 
     #
 
-    def setCrossEPS(self, EPS eps not None):
+    def setCrossEPS(self, EPS eps):
         """
         Associate an eigensolver object (`EPS`) to the singular value
         solver.
@@ -711,7 +716,7 @@ cdef class SVD(Object):
         PetscINCREF(eps.obj)
         return eps
 
-    def setCyclicEPS(self, EPS eps not None):
+    def setCyclicEPS(self, EPS eps):
         """
         Associate an eigensolver object (`EPS`) to the singular value
         solver.
diff --git a/src/SLEPc/Sys.pyx b/src/SLEPc/Sys.pyx
index 5f8ef57..9cc41d5 100644
--- a/src/SLEPc/Sys.pyx
+++ b/src/SLEPc/Sys.pyx
@@ -3,48 +3,37 @@
 cdef class Sys:
 
     @classmethod
-    def getVersion(cls, patch=False, devel=False,
-                   date=False, author=False):
-        cdef int cmajor = SLEPC_VERSION_MAJOR
-        cdef int cminor = SLEPC_VERSION_MINOR
-        cdef int cmicro = SLEPC_VERSION_SUBMINOR
-        cdef int cpatch = SLEPC_VERSION_PATCH
-        cdef int cdevel = not SLEPC_VERSION_RELEASE
-        cdef const_char *cdate       = SLEPC_VERSION_DATE
-        cdef const_char *cauthorinfo = SLEPC_AUTHOR_INFO
-        version = (cmajor, cminor, cmicro)
-        out = version
-        if patch or devel or date or author:
+    def getVersion(cls, devel=False, date=False, author=False):
+        cdef char cversion[256]
+        cdef PetscInt major=0, minor=0, micro=0, release=0
+        CHKERR( SlepcGetVersion(cversion, sizeof(cversion)) )
+        CHKERR( SlepcGetVersionNumber(&major, &minor, &micro, &release) )
+        out = version = (toInt(major), toInt(minor), toInt(micro))
+        if devel or date or author:
             out = [version]
-            if patch:
-                out.append(cpatch)
             if devel:
-                out.append(<bint>cdevel)
+                out.append(not <bint>release)
             if date:
-                out.append(bytes2str(cdate))
+                vstr = bytes2str(cversion)
+                if release != 0:
+                    date = vstr.split(",", 1)[-1].strip()
+                else:
+                    date = vstr.split("GIT Date:")[-1].strip()
+                out.append(date)
             if author:
-                author = bytes2str(cauthorinfo).split('\n')
-                author = [s.strip() for s in author if s]
+                author = bytes2str(SLEPC_AUTHOR_INFO).split('\n')
+                author = tuple([s.strip() for s in author if s])
                 out.append(author)
         return tuple(out)
 
     @classmethod
     def getVersionInfo(cls):
-        cdef int cmajor = SLEPC_VERSION_MAJOR
-        cdef int cminor = SLEPC_VERSION_MINOR
-        cdef int cmicro = SLEPC_VERSION_SUBMINOR
-        cdef int cpatch = SLEPC_VERSION_PATCH
-        cdef int crelease = SLEPC_VERSION_RELEASE
-        cdef const_char *cdate       = SLEPC_VERSION_DATE
-        cdef const_char *cauthorinfo = SLEPC_AUTHOR_INFO
-        author = bytes2str(cauthorinfo).split('\n')
-        author = [s.strip() for s in author if s]
-        return dict(major      = cmajor,
-                    minor      = cminor,
-                    subminor   = cmicro,
-                    patch      = cpatch,
-                    release    = <bint>crelease,
-                    date       = bytes2str(cdate),
+        version, dev, date, author = cls.getVersion(True, True, True)
+        return dict(major      = version[0],
+                    minor      = version[1],
+                    subminor   = version[2],
+                    release    = not dev,
+                    date       = date,
                     authorinfo = author)
 
 # -----------------------------------------------------------------------------
diff --git a/src/SLEPc/slepceps.pxi b/src/SLEPc/slepceps.pxi
index 296f2d4..6fe8303 100644
--- a/src/SLEPc/slepceps.pxi
+++ b/src/SLEPc/slepceps.pxi
@@ -74,6 +74,24 @@ cdef extern from * nogil:
         EPS_DIVERGED_SYMMETRY_LOST
         EPS_CONVERGED_ITERATING
 
+    ctypedef int (*SlepcEPSCtxDel)(void*)
+
+    ctypedef int (*SlepcEPSStoppingFunction)(SlepcEPS,
+                                             PetscInt,
+                                             PetscInt,
+                                             PetscInt,
+                                             PetscInt,
+                                             SlepcEPSConvergedReason*,
+                                             void*) except PETSC_ERR_PYTHON
+    ctypedef int (*SlepcEPSMonitorFunction)(SlepcEPS,
+                                            PetscInt,
+                                            PetscInt,
+                                            PetscScalar*,
+                                            PetscScalar*,
+                                            PetscReal*,
+                                            PetscInt,
+                                            void*) except PETSC_ERR_PYTHON
+
     int EPSView(SlepcEPS,PetscViewer)
     int EPSDestroy(SlepcEPS*)
     int EPSReset(SlepcEPS)
@@ -142,10 +160,17 @@ cdef extern from * nogil:
     int EPSGetEigenpair(SlepcEPS,PetscInt,PetscScalar*,PetscScalar*,PetscVec,PetscVec)
     int EPSGetInvariantSubspace(SlepcEPS,PetscVec*)
 
+    int EPSSetStoppingTestFunction(SlepcEPS,SlepcEPSStoppingFunction,void*,SlepcEPSCtxDel);
+    int EPSStoppingBasic(SlepcEPS,PetscInt,PetscInt,PetscInt,PetscInt,SlepcEPSConvergedReason*,void*) except PETSC_ERR_PYTHON
+
     int EPSGetErrorEstimate(SlepcEPS,PetscInt,PetscReal*)
     int EPSComputeError(SlepcEPS,PetscInt,SlepcEPSErrorType,PetscReal*)
     int EPSErrorView(SlepcEPS,SlepcEPSErrorType,PetscViewer)
 
+    int EPSMonitorSet(SlepcEPS,SlepcEPSMonitorFunction,void*,SlepcEPSCtxDel)
+    int EPSMonitorCancel(SlepcEPS)
+    int EPSMonitor(SlepcEPS,PetscInt,PetscInt,PetscScalar*,PetscScalar*,PetscReal*,PetscInt)
+
     ctypedef enum SlepcEPSPowerShiftType "EPSPowerShiftType":
         EPS_POWER_SHIFT_CONSTANT
         EPS_POWER_SHIFT_RAYLEIGH
@@ -229,3 +254,53 @@ cdef extern from * nogil:
 cdef extern from * nogil:
     int VecDuplicate(PetscVec,PetscVec*)
     int MatCreateVecs(PetscMat,PetscVec*,PetscVec*)
+
+# -----------------------------------------------------------------------------
+
+cdef inline EPS ref_EPS(SlepcEPS eps):
+    cdef EPS ob = <EPS> EPS()
+    ob.eps = eps
+    PetscINCREF(ob.obj)
+    return ob
+
+# -----------------------------------------------------------------------------
+
+cdef int EPS_Stopping(
+    SlepcEPS                eps,
+    PetscInt                its,
+    PetscInt                max_it,
+    PetscInt                nconv,
+    PetscInt                nev,
+    SlepcEPSConvergedReason *r,
+    void                    *ctx,
+    ) except PETSC_ERR_PYTHON with gil:
+    cdef EPS Eps = ref_EPS(eps)
+    (stopping, args, kargs) = Eps.get_attr('__stopping__')
+    reason = stopping(Eps, toInt(its), toInt(max_it), toInt(nconv), toInt(nev), *args, **kargs)
+    if   reason is None:  r[0] = EPS_CONVERGED_ITERATING
+    elif reason is False: r[0] = EPS_CONVERGED_ITERATING
+    elif reason is True:  r[0] = EPS_CONVERGED_USER
+    else:                 r[0] = reason
+
+# -----------------------------------------------------------------------------
+
+cdef int EPS_Monitor(
+    SlepcEPS    eps,
+    PetscInt    its,
+    PetscInt    nconv,
+    PetscScalar *eigr,
+    PetscScalar *eigi,
+    PetscReal   *errest,
+    PetscInt    nest,
+    void        *ctx,
+    ) except PETSC_ERR_PYTHON with gil:
+    cdef EPS Eps = ref_EPS(eps)
+    cdef object monitorlist = Eps.get_attr('__monitor__')
+    if monitorlist is None: return 0
+    cdef object eig = [toComplex(eigr[i], eigi[i]) for i in range(nest)]
+    cdef object err = [toReal(errest[i]) for i in range(nest)]
+    for (monitor, args, kargs) in monitorlist:
+        monitor(Eps, toInt(its), toInt(nconv), eig, err, *args, **kargs)
+    return 0
+
+# -----------------------------------------------------------------------------
diff --git a/src/SLEPc/slepcmfn.pxi b/src/SLEPc/slepcmfn.pxi
index 0391786..2444fe3 100644
--- a/src/SLEPc/slepcmfn.pxi
+++ b/src/SLEPc/slepcmfn.pxi
@@ -11,6 +11,11 @@ cdef extern from * nogil:
         MFN_DIVERGED_BREAKDOWN
         MFN_CONVERGED_ITERATING
 
+    ctypedef enum SlepcFunction "SlepcFunction":
+        SLEPC_FUNCTION_NONE
+        SLEPC_FUNCTION_EXP
+        SLEPC_FUNCTION_LAST
+
     int MFNCreate(MPI_Comm,SlepcMFN*)
     int MFNDestroy(SlepcMFN*)
     int MFNReset(SlepcMFN)
diff --git a/src/SLEPc/slepcpep.pxi b/src/SLEPc/slepcpep.pxi
index cb8d44a..d61c4a0 100644
--- a/src/SLEPc/slepcpep.pxi
+++ b/src/SLEPc/slepcpep.pxi
@@ -128,6 +128,8 @@ cdef extern from * nogil:
     int PEPSetInitialSpace(SlepcPEP,PetscInt,PetscVec*)
     int PEPSetWhichEigenpairs(SlepcPEP,SlepcPEPWhich)
     int PEPGetWhichEigenpairs(SlepcPEP,SlepcPEPWhich*)
+    int PEPSetTarget(SlepcPEP,PetscScalar)
+    int PEPGetTarget(SlepcPEP,PetscScalar*)
     int PEPGetConvergedReason(SlepcPEP,SlepcPEPConvergedReason*)
 
     int PEPLinearSetCompanionForm(SlepcPEP,PetscInt)
diff --git a/src/SLEPc/slepcst.pxi b/src/SLEPc/slepcst.pxi
index 9bc7120..f7baaa5 100644
--- a/src/SLEPc/slepcst.pxi
+++ b/src/SLEPc/slepcst.pxi
@@ -30,8 +30,8 @@ cdef extern from * nogil:
     int STSetKSP(SlepcST,PetscKSP)
 
     int STGetNumMatrices(SlepcST,PetscInt*)
-    int STGetOperators(SlepcST,PetscInt,PetscMat*)
-    int STSetOperators(SlepcST,PetscInt,PetscMat*)
+    int STGetMatrix(SlepcST,PetscInt,PetscMat*)
+    int STSetMatrices(SlepcST,PetscInt,PetscMat*)
     int STSetMatStructure(SlepcST,PetscMatStructure)
 
     int STGetOperationCounters(SlepcST,PetscInt*,PetscInt*)
diff --git a/src/SLEPc/slepcsvd.pxi b/src/SLEPc/slepcsvd.pxi
index 268865b..9a16acf 100644
--- a/src/SLEPc/slepcsvd.pxi
+++ b/src/SLEPc/slepcsvd.pxi
@@ -39,7 +39,7 @@ cdef extern from * nogil:
     int SVDSetOperator(SlepcSVD,PetscMat)
     int SVDGetOperator(SlepcSVD,PetscMat*)
 
-    int SVDSetInitialSpace(SlepcSVD,PetscInt,PetscVec*)
+    int SVDSetInitialSpaces(SlepcSVD,PetscInt,PetscVec*,PetscInt,PetscVec*)
 
     int SVDSetImplicitTranspose(SlepcSVD,PetscBool)
     int SVDGetImplicitTranspose(SlepcSVD,PetscBool*)
diff --git a/src/SLEPc/slepcsys.pxi b/src/SLEPc/slepcsys.pxi
index f3857bc..8b9fe45 100644
--- a/src/SLEPc/slepcsys.pxi
+++ b/src/SLEPc/slepcsys.pxi
@@ -37,16 +37,13 @@ cdef extern from * nogil:
     int MatGetLocalSize(PetscMat,PetscInt*,PetscInt*)
 
 cdef extern from * nogil:
-    enum: SLEPC_VERSION_MAJOR
-    enum: SLEPC_VERSION_MINOR
-    enum: SLEPC_VERSION_SUBMINOR
-    enum: SLEPC_VERSION_PATCH
-    enum: SLEPC_VERSION_RELEASE
-    char* SLEPC_VERSION_DATE
-    char* SLEPC_AUTHOR_INFO
+    const_char SLEPC_AUTHOR_INFO[]
+    int SlepcGetVersion(char[],size_t)
+    int SlepcGetVersionNumber(PetscInt*,PetscInt*,PetscInt*,PetscInt*)
+
     int SlepcInitialize(int*,char***,char[],char[])
     int SlepcFinalize()
-    int SlepcInitializeCalled
+    PetscBool SlepcInitializeCalled
 
 cdef inline PetscMatStructure matstructure(object structure) \
     except <PetscMatStructure>(-1):
@@ -67,8 +64,5 @@ cdef inline int SlepcCLEAR(PetscObject* obj):
     tmp = obj[0]; obj[0] = NULL
     return PetscObjectDestroy(&tmp)
 
-cdef extern from * nogil:
-    ctypedef enum SlepcFunction "SlepcFunction":
-        SLEPC_FUNCTION_NONE
-        SLEPC_FUNCTION_EXP
-        SLEPC_FUNCTION_LAST
+cdef inline PetscViewer def_Viewer(Viewer viewer):
+   return viewer.vwr if viewer is not None else <PetscViewer>NULL
diff --git a/src/__init__.py b/src/__init__.py
index 6c9f295..51be3c5 100644
--- a/src/__init__.py
+++ b/src/__init__.py
@@ -21,7 +21,7 @@ a large, sparse, rectangular matrix.
 """
 
 __author__    = 'Lisandro Dalcin'
-__version__   = '3.7.0'
+__version__   = '3.8.0'
 __credits__   = 'SLEPc Team <slepc-maint at upv.es>'
 
 # -----------------------------------------------------------------------------
diff --git a/src/include/slepc4py/slepc4py.SLEPc.h b/src/include/slepc4py/slepc4py.SLEPc.h
index 798e594..997d4df 100644
--- a/src/include/slepc4py/slepc4py.SLEPc.h
+++ b/src/include/slepc4py/slepc4py.SLEPc.h
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.24 */
+/* Generated by Cython 0.27.1 */
 
 #ifndef __PYX_HAVE__slepc4py__SLEPc
 #define __PYX_HAVE__slepc4py__SLEPc
@@ -171,6 +171,9 @@ __PYX_EXTERN_C DL_IMPORT(PyTypeObject) PySlepcMFN_Type;
 
 #endif /* !__PYX_HAVE_API__slepc4py__SLEPc */
 
+/* WARNING: the interface of the module init function changed in CPython 3.5. */
+/* It now returns a PyModuleDef instance instead of a PyModule instance. */
+
 #if PY_MAJOR_VERSION < 3
 PyMODINIT_FUNC initSLEPc(void);
 #else
diff --git a/src/include/slepc4py/slepc4py.SLEPc_api.h b/src/include/slepc4py/slepc4py.SLEPc_api.h
index 5d593b9..f1499d7 100644
--- a/src/include/slepc4py/slepc4py.SLEPc_api.h
+++ b/src/include/slepc4py/slepc4py.SLEPc_api.h
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.24 */
+/* Generated by Cython 0.27.1 */
 
 #ifndef __PYX_HAVE_API__slepc4py__SLEPc
 #define __PYX_HAVE_API__slepc4py__SLEPc
diff --git a/src/slepc4py.SLEPc.c b/src/slepc4py.SLEPc.c
index ac87256..18d947a 100644
--- a/src/slepc4py.SLEPc.c
+++ b/src/slepc4py.SLEPc.c
@@ -1,13 +1,14 @@
-/* Generated by Cython 0.24 */
+/* Generated by Cython 0.27.1 */
 
 #define PY_SSIZE_T_CLEAN
 #include "Python.h"
 #ifndef Py_PYTHON_H
     #error Python headers needed to compile C extensions, please install development version of Python.
-#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000)
-    #error Cython requires Python 2.6+ or Python 3.2+.
+#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+    #error Cython requires Python 2.6+ or Python 3.3+.
 #else
-#define CYTHON_ABI "0_24"
+#define CYTHON_ABI "0_27_1"
+#define CYTHON_FUTURE_DIVISION 0
 #include <stddef.h>
 #ifndef offsetof
   #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
@@ -29,6 +30,12 @@
 #ifndef DL_EXPORT
   #define DL_EXPORT(t) t
 #endif
+#define __PYX_COMMA ,
+#ifndef HAVE_LONG_LONG
+  #if PY_VERSION_HEX >= 0x02070000
+    #define HAVE_LONG_LONG
+  #endif
+#endif
 #ifndef PY_LONG_LONG
   #define PY_LONG_LONG LONG_LONG
 #endif
@@ -37,13 +44,138 @@
 #endif
 #ifdef PYPY_VERSION
   #define CYTHON_COMPILING_IN_PYPY 1
+  #define CYTHON_COMPILING_IN_PYSTON 0
+  #define CYTHON_COMPILING_IN_CPYTHON 0
+  #undef CYTHON_USE_TYPE_SLOTS
+  #define CYTHON_USE_TYPE_SLOTS 0
+  #undef CYTHON_USE_PYTYPE_LOOKUP
+  #define CYTHON_USE_PYTYPE_LOOKUP 0
+  #if PY_VERSION_HEX < 0x03050000
+    #undef CYTHON_USE_ASYNC_SLOTS
+    #define CYTHON_USE_ASYNC_SLOTS 0
+  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
+    #define CYTHON_USE_ASYNC_SLOTS 1
+  #endif
+  #undef CYTHON_USE_PYLIST_INTERNALS
+  #define CYTHON_USE_PYLIST_INTERNALS 0
+  #undef CYTHON_USE_UNICODE_INTERNALS
+  #define CYTHON_USE_UNICODE_INTERNALS 0
+  #undef CYTHON_USE_UNICODE_WRITER
+  #define CYTHON_USE_UNICODE_WRITER 0
+  #undef CYTHON_USE_PYLONG_INTERNALS
+  #define CYTHON_USE_PYLONG_INTERNALS 0
+  #undef CYTHON_AVOID_BORROWED_REFS
+  #define CYTHON_AVOID_BORROWED_REFS 1
+  #undef CYTHON_ASSUME_SAFE_MACROS
+  #define CYTHON_ASSUME_SAFE_MACROS 0
+  #undef CYTHON_UNPACK_METHODS
+  #define CYTHON_UNPACK_METHODS 0
+  #undef CYTHON_FAST_THREAD_STATE
+  #define CYTHON_FAST_THREAD_STATE 0
+  #undef CYTHON_FAST_PYCALL
+  #define CYTHON_FAST_PYCALL 0
+  #undef CYTHON_PEP489_MULTI_PHASE_INIT
+  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
+  #undef CYTHON_USE_TP_FINALIZE
+  #define CYTHON_USE_TP_FINALIZE 0
+#elif defined(PYSTON_VERSION)
+  #define CYTHON_COMPILING_IN_PYPY 0
+  #define CYTHON_COMPILING_IN_PYSTON 1
   #define CYTHON_COMPILING_IN_CPYTHON 0
+  #ifndef CYTHON_USE_TYPE_SLOTS
+    #define CYTHON_USE_TYPE_SLOTS 1
+  #endif
+  #undef CYTHON_USE_PYTYPE_LOOKUP
+  #define CYTHON_USE_PYTYPE_LOOKUP 0
+  #undef CYTHON_USE_ASYNC_SLOTS
+  #define CYTHON_USE_ASYNC_SLOTS 0
+  #undef CYTHON_USE_PYLIST_INTERNALS
+  #define CYTHON_USE_PYLIST_INTERNALS 0
+  #ifndef CYTHON_USE_UNICODE_INTERNALS
+    #define CYTHON_USE_UNICODE_INTERNALS 1
+  #endif
+  #undef CYTHON_USE_UNICODE_WRITER
+  #define CYTHON_USE_UNICODE_WRITER 0
+  #undef CYTHON_USE_PYLONG_INTERNALS
+  #define CYTHON_USE_PYLONG_INTERNALS 0
+  #ifndef CYTHON_AVOID_BORROWED_REFS
+    #define CYTHON_AVOID_BORROWED_REFS 0
+  #endif
+  #ifndef CYTHON_ASSUME_SAFE_MACROS
+    #define CYTHON_ASSUME_SAFE_MACROS 1
+  #endif
+  #ifndef CYTHON_UNPACK_METHODS
+    #define CYTHON_UNPACK_METHODS 1
+  #endif
+  #undef CYTHON_FAST_THREAD_STATE
+  #define CYTHON_FAST_THREAD_STATE 0
+  #undef CYTHON_FAST_PYCALL
+  #define CYTHON_FAST_PYCALL 0
+  #undef CYTHON_PEP489_MULTI_PHASE_INIT
+  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
+  #undef CYTHON_USE_TP_FINALIZE
+  #define CYTHON_USE_TP_FINALIZE 0
 #else
   #define CYTHON_COMPILING_IN_PYPY 0
+  #define CYTHON_COMPILING_IN_PYSTON 0
   #define CYTHON_COMPILING_IN_CPYTHON 1
+  #ifndef CYTHON_USE_TYPE_SLOTS
+    #define CYTHON_USE_TYPE_SLOTS 1
+  #endif
+  #if PY_VERSION_HEX < 0x02070000
+    #undef CYTHON_USE_PYTYPE_LOOKUP
+    #define CYTHON_USE_PYTYPE_LOOKUP 0
+  #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
+    #define CYTHON_USE_PYTYPE_LOOKUP 1
+  #endif
+  #if PY_MAJOR_VERSION < 3
+    #undef CYTHON_USE_ASYNC_SLOTS
+    #define CYTHON_USE_ASYNC_SLOTS 0
+  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
+    #define CYTHON_USE_ASYNC_SLOTS 1
+  #endif
+  #if PY_VERSION_HEX < 0x02070000
+    #undef CYTHON_USE_PYLONG_INTERNALS
+    #define CYTHON_USE_PYLONG_INTERNALS 0
+  #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
+    #define CYTHON_USE_PYLONG_INTERNALS 1
+  #endif
+  #ifndef CYTHON_USE_PYLIST_INTERNALS
+    #define CYTHON_USE_PYLIST_INTERNALS 1
+  #endif
+  #ifndef CYTHON_USE_UNICODE_INTERNALS
+    #define CYTHON_USE_UNICODE_INTERNALS 1
+  #endif
+  #if PY_VERSION_HEX < 0x030300F0
+    #undef CYTHON_USE_UNICODE_WRITER
+    #define CYTHON_USE_UNICODE_WRITER 0
+  #elif !defined(CYTHON_USE_UNICODE_WRITER)
+    #define CYTHON_USE_UNICODE_WRITER 1
+  #endif
+  #ifndef CYTHON_AVOID_BORROWED_REFS
+    #define CYTHON_AVOID_BORROWED_REFS 0
+  #endif
+  #ifndef CYTHON_ASSUME_SAFE_MACROS
+    #define CYTHON_ASSUME_SAFE_MACROS 1
+  #endif
+  #ifndef CYTHON_UNPACK_METHODS
+    #define CYTHON_UNPACK_METHODS 1
+  #endif
+  #ifndef CYTHON_FAST_THREAD_STATE
+    #define CYTHON_FAST_THREAD_STATE 1
+  #endif
+  #ifndef CYTHON_FAST_PYCALL
+    #define CYTHON_FAST_PYCALL 1
+  #endif
+  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
+    #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+  #endif
+  #ifndef CYTHON_USE_TP_FINALIZE
+    #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
+  #endif
 #endif
-#if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000
-  #define CYTHON_USE_PYLONG_INTERNALS 1
+#if !defined(CYTHON_FAST_PYCCALL)
+#define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
 #endif
 #if CYTHON_USE_PYLONG_INTERNALS
   #include "longintrepr.h"
@@ -79,24 +211,69 @@
 #ifndef Py_TPFLAGS_HAVE_FINALIZE
   #define Py_TPFLAGS_HAVE_FINALIZE 0
 #endif
+#if PY_VERSION_HEX < 0x030700A0 || !defined(METH_FASTCALL)
+  #ifndef METH_FASTCALL
+     #define METH_FASTCALL 0x80
+  #endif
+  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs);
+  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject **args,
+                                                          Py_ssize_t nargs, PyObject *kwnames);
+#else
+  #define __Pyx_PyCFunctionFast _PyCFunctionFast
+  #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
+#endif
+#if CYTHON_FAST_PYCCALL
+#define __Pyx_PyFastCFunction_Check(func)\
+    ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+#else
+#define __Pyx_PyFastCFunction_Check(func) 0
+#endif
+#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
+  #define __Pyx_PyThreadState_Current PyThreadState_GET()
+#elif PY_VERSION_HEX >= 0x03060000
+  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
+#elif PY_VERSION_HEX >= 0x03000000
+  #define __Pyx_PyThreadState_Current PyThreadState_GET()
+#else
+  #define __Pyx_PyThreadState_Current _PyThreadState_Current
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
+#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
+#else
+#define __Pyx_PyDict_NewPresized(n)  PyDict_New()
+#endif
+#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
 #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
   #define CYTHON_PEP393_ENABLED 1
   #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                               0 : _PyUnicode_Ready((PyObject *)(op)))
   #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
   #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)
   #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
   #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
   #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, ch)
   #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
 #else
   #define CYTHON_PEP393_ENABLED 0
+  #define PyUnicode_1BYTE_KIND  1
+  #define PyUnicode_2BYTE_KIND  2
+  #define PyUnicode_4BYTE_KIND  4
   #define __Pyx_PyUnicode_READY(op)       (0)
   #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
   #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
   #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
   #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
   #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
   #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
 #endif
 #if CYTHON_COMPILING_IN_PYPY
@@ -110,6 +287,9 @@
 #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
   #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
 #endif
+#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
+  #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
+#endif
 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
   #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
 #endif
@@ -118,6 +298,13 @@
   #define PyObject_Free(p)     PyMem_Free(p)
   #define PyObject_Realloc(p)  PyMem_Realloc(p)
 #endif
+#if CYTHON_COMPILING_IN_PYSTON
+  #define __Pyx_PyCode_HasFreeVars(co)  PyCode_HasFreeVars(co)
+  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
+#else
+  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
+  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
+#endif
 #define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
 #define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
 #if PY_MAJOR_VERSION >= 3
@@ -145,7 +332,7 @@
 #ifndef PySet_CheckExact
   #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
 #endif
-#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
 #if PY_MAJOR_VERSION >= 3
   #define PyIntObject                  PyLongObject
   #define PyInt_Type                   PyLong_Type
@@ -184,18 +371,28 @@
 #else
   #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
 #endif
-#if PY_VERSION_HEX >= 0x030500B1
-#define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
-#define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
-#elif CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-typedef struct {
-    unaryfunc am_await;
-    unaryfunc am_aiter;
-    unaryfunc am_anext;
-} __Pyx_PyAsyncMethodsStruct;
-#define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
+#ifndef __has_attribute
+  #define __has_attribute(x) 0
+#endif
+#ifndef __has_cpp_attribute
+  #define __has_cpp_attribute(x) 0
+#endif
+#if CYTHON_USE_ASYNC_SLOTS
+  #if PY_VERSION_HEX >= 0x030500B1
+    #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
+    #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
+  #else
+    #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
+  #endif
 #else
-#define __Pyx_PyType_AsAsync(obj) NULL
+  #define __Pyx_PyType_AsAsync(obj) NULL
+#endif
+#ifndef __Pyx_PyAsyncMethodsStruct
+    typedef struct {
+        unaryfunc am_await;
+        unaryfunc am_aiter;
+        unaryfunc am_anext;
+    } __Pyx_PyAsyncMethodsStruct;
 #endif
 #ifndef CYTHON_RESTRICT
   #if defined(__GNUC__)
@@ -208,10 +405,68 @@ typedef struct {
     #define CYTHON_RESTRICT
   #endif
 #endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+#ifndef CYTHON_MAYBE_UNUSED_VAR
+#  if defined(__cplusplus)
+     template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
+#  else
+#    define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
+#  endif
+#endif
+#ifndef CYTHON_NCP_UNUSED
+# if CYTHON_COMPILING_IN_CPYTHON
+#  define CYTHON_NCP_UNUSED
+# else
+#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
+# endif
+#endif
 #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
+#ifdef _MSC_VER
+    #ifndef _MSC_STDINT_H_
+        #if _MSC_VER < 1300
+           typedef unsigned char     uint8_t;
+           typedef unsigned int      uint32_t;
+        #else
+           typedef unsigned __int8   uint8_t;
+           typedef unsigned __int32  uint32_t;
+        #endif
+    #endif
+#else
+   #include <stdint.h>
+#endif
+#ifndef CYTHON_FALLTHROUGH
+  #ifdef __cplusplus
+    #if __has_cpp_attribute(fallthrough)
+      #define CYTHON_FALLTHROUGH [[fallthrough]]
+    #elif __has_cpp_attribute(clang::fallthrough)
+      #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
+    #endif
+  #endif
+  #ifndef CYTHON_FALLTHROUGH
+    #if __has_attribute(fallthrough) || (defined(__GNUC__) && defined(__attribute__))
+      #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
+    #else
+      #define CYTHON_FALLTHROUGH
+    #endif
+  #endif
+#endif
 
 #ifndef CYTHON_INLINE
-  #if defined(__GNUC__)
+  #if defined(__clang__)
+    #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
+  #elif defined(__GNUC__)
     #define CYTHON_INLINE __inline__
   #elif defined(_MSC_VER)
     #define CYTHON_INLINE __inline
@@ -235,6 +490,11 @@ static CYTHON_INLINE float __PYX_NAN() {
   return value;
 }
 #endif
+#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
+#define __Pyx_truncl trunc
+#else
+#define __Pyx_truncl truncl
+#endif
 
 
 #define __PYX_ERR(f_index, lineno, Ln_error) \
@@ -242,14 +502,6 @@ static CYTHON_INLINE float __PYX_NAN() {
   __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \
 }
 
-#if PY_MAJOR_VERSION >= 3
-  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
-  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
-#else
-  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
-  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
-#endif
-
 #ifndef __PYX_EXTERN_C
   #ifdef __cplusplus
     #define __PYX_EXTERN_C extern "C"
@@ -270,30 +522,10 @@ static CYTHON_INLINE float __PYX_NAN() {
 #include <omp.h>
 #endif /* _OPENMP */
 
-#ifdef PYREX_WITHOUT_ASSERTIONS
+#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
 #define CYTHON_WITHOUT_ASSERTIONS
 #endif
 
-#ifndef CYTHON_UNUSED
-# if defined(__GNUC__)
-#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
-#     define CYTHON_UNUSED __attribute__ ((__unused__))
-#   else
-#     define CYTHON_UNUSED
-#   endif
-# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
-#   define CYTHON_UNUSED __attribute__ ((__unused__))
-# else
-#   define CYTHON_UNUSED
-# endif
-#endif
-#ifndef CYTHON_NCP_UNUSED
-# if CYTHON_COMPILING_IN_CPYTHON
-#  define CYTHON_NCP_UNUSED
-# else
-#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
-# endif
-#endif
 typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
 
@@ -321,8 +553,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
     #define __Pyx_sst_abs(value) abs(value)
 #elif SIZEOF_LONG >= SIZEOF_SIZE_T
     #define __Pyx_sst_abs(value) labs(value)
-#elif defined (_MSC_VER) && defined (_M_X64)
-    #define __Pyx_sst_abs(value) _abs64(value)
+#elif defined (_MSC_VER)
+    #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
     #define __Pyx_sst_abs(value) llabs(value)
 #elif defined (__GNUC__)
@@ -330,8 +562,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
 #else
     #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
 #endif
-static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*);
-static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
+static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
+static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
 #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
 #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
 #define __Pyx_PyBytes_FromString        PyBytes_FromString
@@ -344,23 +576,27 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
     #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
     #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
 #endif
-#define __Pyx_PyObject_AsSString(s)    ((signed char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))
+#define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))
+#define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))
+#define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))
+#define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))
+#define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))
+#define __Pyx_PyObject_AsWritableString(s)    ((char*) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsWritableSString(s)    ((signed char*) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))
+#define __Pyx_PyObject_AsUString(s)    ((const unsigned char*) __Pyx_PyObject_AsString(s))
 #define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
 #define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
 #define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
 #define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)
 #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
-#if PY_MAJOR_VERSION < 3
-static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
-{
+static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
     const Py_UNICODE *u_end = u;
     while (*u_end++) ;
     return (size_t)(u_end - u - 1);
 }
-#else
-#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen
-#endif
 #define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
 #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
 #define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
@@ -369,9 +605,11 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
 #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
+#define __Pyx_PySequence_Tuple(obj)\
+    (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_ASSUME_SAFE_MACROS
 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
 #else
 #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
@@ -467,10 +705,12 @@ bad:
   #define likely(x)   (x)
   #define unlikely(x) (x)
 #endif /* __GNUC__ */
+static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
 
-static PyObject *__pyx_m;
+static PyObject *__pyx_m = NULL;
 static PyObject *__pyx_d;
 static PyObject *__pyx_b;
+static PyObject *__pyx_cython_runtime;
 static PyObject *__pyx_empty_tuple;
 static PyObject *__pyx_empty_bytes;
 static PyObject *__pyx_empty_unicode;
@@ -484,13 +724,14 @@ static const char *__pyx_f[] = {
   "SLEPc/ST.pyx",
   "SLEPc/allocate.pxi",
   "SLEPc/slepcbv.pxi",
-  "SLEPc/BV.pyx",
+  "SLEPc/slepceps.pxi",
   "SLEPc/SLEPc.pyx",
   "SLEPc/slepcmpi.pxi",
   "SLEPc/slepcsys.pxi",
   "SLEPc/slepcfn.pxi",
   "SLEPc/slepcnep.pxi",
   "SLEPc/Sys.pyx",
+  "SLEPc/BV.pyx",
   "SLEPc/DS.pyx",
   "SLEPc/FN.pyx",
   "SLEPc/RG.pyx",
@@ -503,6 +744,18 @@ static const char *__pyx_f[] = {
   "slepc4py.SLEPc.pyx",
   "PETSc.pxd",
 };
+/* ForceInitThreads.proto */
+#ifndef __PYX_FORCE_INIT_THREADS
+  #define __PYX_FORCE_INIT_THREADS 0
+#endif
+
+/* NoFastGil.proto */
+#define __Pyx_PyGILState_Ensure PyGILState_Ensure
+#define __Pyx_PyGILState_Release PyGILState_Release
+#define __Pyx_FastGIL_Remember()
+#define __Pyx_FastGIL_Forget()
+#define __Pyx_FastGilFuncInit()
+
 
 /*--- Type declarations ---*/
 struct PyPetscCommObject;
@@ -538,7 +791,7 @@ struct PySlepcMFNObject;
 struct __pyx_obj_8slepc4py_5SLEPc__p_mem;
 struct __pyx_obj_8slepc4py_5SLEPc_Sys;
 
-/* "petsc4py/PETSc.pxd":70
+/* "petsc4py/PETSc.pxd":73
  * # --------------------------------------------------------------------
  * 
  * ctypedef public api class Comm [             # <<<<<<<<<<<<<<
@@ -555,7 +808,7 @@ typedef struct PyPetscCommObject PyPetscCommObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscComm_Type;
 
-/* "petsc4py/PETSc.pxd":78
+/* "petsc4py/PETSc.pxd":81
  *     cdef object base
  * 
  * ctypedef public api class Object [             # <<<<<<<<<<<<<<
@@ -574,7 +827,7 @@ typedef struct PyPetscObjectObject PyPetscObjectObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscObject_Type;
 
-/* "petsc4py/PETSc.pxd":90
+/* "petsc4py/PETSc.pxd":93
  *     cdef object get_dict(self)
  * 
  * ctypedef public api class Viewer(Object) [             # <<<<<<<<<<<<<<
@@ -589,7 +842,7 @@ typedef struct PyPetscViewerObject PyPetscViewerObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscViewer_Type;
 
-/* "petsc4py/PETSc.pxd":96
+/* "petsc4py/PETSc.pxd":99
  *     cdef PetscViewer vwr
  * 
  * ctypedef public api class Random(Object) [             # <<<<<<<<<<<<<<
@@ -604,7 +857,7 @@ typedef struct PyPetscRandomObject PyPetscRandomObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscRandom_Type;
 
-/* "petsc4py/PETSc.pxd":102
+/* "petsc4py/PETSc.pxd":105
  *     cdef PetscRandom rnd
  * 
  * ctypedef public api class IS(Object) [             # <<<<<<<<<<<<<<
@@ -619,7 +872,7 @@ typedef struct PyPetscISObject PyPetscISObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscIS_Type;
 
-/* "petsc4py/PETSc.pxd":108
+/* "petsc4py/PETSc.pxd":111
  *     cdef PetscIS iset
  * 
  * ctypedef public api class LGMap(Object) [             # <<<<<<<<<<<<<<
@@ -634,7 +887,7 @@ typedef struct PyPetscLGMapObject PyPetscLGMapObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscLGMap_Type;
 
-/* "petsc4py/PETSc.pxd":114
+/* "petsc4py/PETSc.pxd":117
  *     cdef PetscLGMap lgm
  * 
  * ctypedef public api class SF(Object) [             # <<<<<<<<<<<<<<
@@ -649,7 +902,7 @@ typedef struct PyPetscSFObject PyPetscSFObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscSF_Type;
 
-/* "petsc4py/PETSc.pxd":120
+/* "petsc4py/PETSc.pxd":123
  *     cdef PetscSF sf
  * 
  * ctypedef public api class Vec(Object) [             # <<<<<<<<<<<<<<
@@ -664,7 +917,7 @@ typedef struct PyPetscVecObject PyPetscVecObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscVec_Type;
 
-/* "petsc4py/PETSc.pxd":126
+/* "petsc4py/PETSc.pxd":129
  *     cdef PetscVec vec
  * 
  * ctypedef public api class Scatter(Object) [             # <<<<<<<<<<<<<<
@@ -679,7 +932,7 @@ typedef struct PyPetscScatterObject PyPetscScatterObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscScatter_Type;
 
-/* "petsc4py/PETSc.pxd":132
+/* "petsc4py/PETSc.pxd":135
  *     cdef PetscScatter sct
  * 
  * ctypedef public api class Section(Object) [             # <<<<<<<<<<<<<<
@@ -694,7 +947,7 @@ typedef struct PyPetscSectionObject PyPetscSectionObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscSection_Type;
 
-/* "petsc4py/PETSc.pxd":138
+/* "petsc4py/PETSc.pxd":141
  *     cdef PetscSection sec
  * 
  * ctypedef public api class Mat(Object) [             # <<<<<<<<<<<<<<
@@ -709,7 +962,7 @@ typedef struct PyPetscMatObject PyPetscMatObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscMat_Type;
 
-/* "petsc4py/PETSc.pxd":144
+/* "petsc4py/PETSc.pxd":147
  *     cdef PetscMat mat
  * 
  * ctypedef public api class NullSpace(Object) [             # <<<<<<<<<<<<<<
@@ -724,7 +977,7 @@ typedef struct PyPetscNullSpaceObject PyPetscNullSpaceObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscNullSpace_Type;
 
-/* "petsc4py/PETSc.pxd":150
+/* "petsc4py/PETSc.pxd":153
  *     cdef PetscNullSpace nsp
  * 
  * ctypedef public api class PC(Object) [             # <<<<<<<<<<<<<<
@@ -739,7 +992,7 @@ typedef struct PyPetscPCObject PyPetscPCObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscPC_Type;
 
-/* "petsc4py/PETSc.pxd":156
+/* "petsc4py/PETSc.pxd":159
  *     cdef PetscPC pc
  * 
  * ctypedef public api class KSP(Object) [             # <<<<<<<<<<<<<<
@@ -754,7 +1007,7 @@ typedef struct PyPetscKSPObject PyPetscKSPObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscKSP_Type;
 
-/* "petsc4py/PETSc.pxd":162
+/* "petsc4py/PETSc.pxd":165
  *     cdef PetscKSP ksp
  * 
  * ctypedef public api class SNES(Object) [             # <<<<<<<<<<<<<<
@@ -769,7 +1022,7 @@ typedef struct PyPetscSNESObject PyPetscSNESObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscSNES_Type;
 
-/* "petsc4py/PETSc.pxd":168
+/* "petsc4py/PETSc.pxd":171
  *     cdef PetscSNES snes
  * 
  * ctypedef public api class TS(Object) [             # <<<<<<<<<<<<<<
@@ -784,7 +1037,7 @@ typedef struct PyPetscTSObject PyPetscTSObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscTS_Type;
 
-/* "petsc4py/PETSc.pxd":174
+/* "petsc4py/PETSc.pxd":177
  *     cdef PetscTS ts
  * 
  * ctypedef public api class TAO(Object) [             # <<<<<<<<<<<<<<
@@ -799,7 +1052,7 @@ typedef struct PyPetscTAOObject PyPetscTAOObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscTAO_Type;
 
-/* "petsc4py/PETSc.pxd":180
+/* "petsc4py/PETSc.pxd":183
  *     cdef PetscTAO tao
  * 
  * ctypedef public api class AO(Object) [             # <<<<<<<<<<<<<<
@@ -814,7 +1067,7 @@ typedef struct PyPetscAOObject PyPetscAOObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscAO_Type;
 
-/* "petsc4py/PETSc.pxd":186
+/* "petsc4py/PETSc.pxd":189
  *     cdef PetscAO ao
  * 
  * ctypedef public api class DM(Object) [             # <<<<<<<<<<<<<<
@@ -829,7 +1082,7 @@ typedef struct PyPetscDMObject PyPetscDMObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscDM_Type;
 
-/* "petsc4py/PETSc.pxd":192
+/* "petsc4py/PETSc.pxd":195
  *     cdef PetscDM dm
  * 
  * ctypedef public api class Partitioner(Object) [             # <<<<<<<<<<<<<<
@@ -1021,7 +1274,7 @@ struct __pyx_obj_8slepc4py_5SLEPc_Sys {
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscObject_Type;
 
-/* "petsc4py/PETSc.pxd":78
+/* "petsc4py/PETSc.pxd":81
  *     cdef object base
  * 
  * ctypedef public api class Object [             # <<<<<<<<<<<<<<
@@ -1038,7 +1291,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_Object *__pyx_vtabptr_8petsc4py_
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscViewer_Type;
 
-/* "petsc4py/PETSc.pxd":90
+/* "petsc4py/PETSc.pxd":93
  *     cdef object get_dict(self)
  * 
  * ctypedef public api class Viewer(Object) [             # <<<<<<<<<<<<<<
@@ -1053,7 +1306,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_Viewer *__pyx_vtabptr_8petsc4py_
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscRandom_Type;
 
-/* "petsc4py/PETSc.pxd":96
+/* "petsc4py/PETSc.pxd":99
  *     cdef PetscViewer vwr
  * 
  * ctypedef public api class Random(Object) [             # <<<<<<<<<<<<<<
@@ -1068,7 +1321,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_Random *__pyx_vtabptr_8petsc4py_
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscIS_Type;
 
-/* "petsc4py/PETSc.pxd":102
+/* "petsc4py/PETSc.pxd":105
  *     cdef PetscRandom rnd
  * 
  * ctypedef public api class IS(Object) [             # <<<<<<<<<<<<<<
@@ -1083,7 +1336,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_IS *__pyx_vtabptr_8petsc4py_5PET
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscLGMap_Type;
 
-/* "petsc4py/PETSc.pxd":108
+/* "petsc4py/PETSc.pxd":111
  *     cdef PetscIS iset
  * 
  * ctypedef public api class LGMap(Object) [             # <<<<<<<<<<<<<<
@@ -1098,7 +1351,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_LGMap *__pyx_vtabptr_8petsc4py_5
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscSF_Type;
 
-/* "petsc4py/PETSc.pxd":114
+/* "petsc4py/PETSc.pxd":117
  *     cdef PetscLGMap lgm
  * 
  * ctypedef public api class SF(Object) [             # <<<<<<<<<<<<<<
@@ -1113,7 +1366,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_SF *__pyx_vtabptr_8petsc4py_5PET
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscVec_Type;
 
-/* "petsc4py/PETSc.pxd":120
+/* "petsc4py/PETSc.pxd":123
  *     cdef PetscSF sf
  * 
  * ctypedef public api class Vec(Object) [             # <<<<<<<<<<<<<<
@@ -1128,7 +1381,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_Vec *__pyx_vtabptr_8petsc4py_5PE
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscScatter_Type;
 
-/* "petsc4py/PETSc.pxd":126
+/* "petsc4py/PETSc.pxd":129
  *     cdef PetscVec vec
  * 
  * ctypedef public api class Scatter(Object) [             # <<<<<<<<<<<<<<
@@ -1143,7 +1396,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_Scatter *__pyx_vtabptr_8petsc4py
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscSection_Type;
 
-/* "petsc4py/PETSc.pxd":132
+/* "petsc4py/PETSc.pxd":135
  *     cdef PetscScatter sct
  * 
  * ctypedef public api class Section(Object) [             # <<<<<<<<<<<<<<
@@ -1158,7 +1411,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_Section *__pyx_vtabptr_8petsc4py
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscMat_Type;
 
-/* "petsc4py/PETSc.pxd":138
+/* "petsc4py/PETSc.pxd":141
  *     cdef PetscSection sec
  * 
  * ctypedef public api class Mat(Object) [             # <<<<<<<<<<<<<<
@@ -1173,7 +1426,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_Mat *__pyx_vtabptr_8petsc4py_5PE
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscNullSpace_Type;
 
-/* "petsc4py/PETSc.pxd":144
+/* "petsc4py/PETSc.pxd":147
  *     cdef PetscMat mat
  * 
  * ctypedef public api class NullSpace(Object) [             # <<<<<<<<<<<<<<
@@ -1188,7 +1441,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_NullSpace *__pyx_vtabptr_8petsc4
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscPC_Type;
 
-/* "petsc4py/PETSc.pxd":150
+/* "petsc4py/PETSc.pxd":153
  *     cdef PetscNullSpace nsp
  * 
  * ctypedef public api class PC(Object) [             # <<<<<<<<<<<<<<
@@ -1203,7 +1456,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_PC *__pyx_vtabptr_8petsc4py_5PET
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscKSP_Type;
 
-/* "petsc4py/PETSc.pxd":156
+/* "petsc4py/PETSc.pxd":159
  *     cdef PetscPC pc
  * 
  * ctypedef public api class KSP(Object) [             # <<<<<<<<<<<<<<
@@ -1218,7 +1471,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_KSP *__pyx_vtabptr_8petsc4py_5PE
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscSNES_Type;
 
-/* "petsc4py/PETSc.pxd":162
+/* "petsc4py/PETSc.pxd":165
  *     cdef PetscKSP ksp
  * 
  * ctypedef public api class SNES(Object) [             # <<<<<<<<<<<<<<
@@ -1233,7 +1486,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_SNES *__pyx_vtabptr_8petsc4py_5P
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscTS_Type;
 
-/* "petsc4py/PETSc.pxd":168
+/* "petsc4py/PETSc.pxd":171
  *     cdef PetscSNES snes
  * 
  * ctypedef public api class TS(Object) [             # <<<<<<<<<<<<<<
@@ -1248,7 +1501,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_TS *__pyx_vtabptr_8petsc4py_5PET
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscTAO_Type;
 
-/* "petsc4py/PETSc.pxd":174
+/* "petsc4py/PETSc.pxd":177
  *     cdef PetscTS ts
  * 
  * ctypedef public api class TAO(Object) [             # <<<<<<<<<<<<<<
@@ -1263,7 +1516,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_TAO *__pyx_vtabptr_8petsc4py_5PE
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscAO_Type;
 
-/* "petsc4py/PETSc.pxd":180
+/* "petsc4py/PETSc.pxd":183
  *     cdef PetscTAO tao
  * 
  * ctypedef public api class AO(Object) [             # <<<<<<<<<<<<<<
@@ -1278,7 +1531,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_AO *__pyx_vtabptr_8petsc4py_5PET
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscDM_Type;
 
-/* "petsc4py/PETSc.pxd":186
+/* "petsc4py/PETSc.pxd":189
  *     cdef PetscAO ao
  * 
  * ctypedef public api class DM(Object) [             # <<<<<<<<<<<<<<
@@ -1293,7 +1546,7 @@ static struct __pyx_vtabstruct_8petsc4py_5PETSc_DM *__pyx_vtabptr_8petsc4py_5PET
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyPetscPartitioner_Type;
 
-/* "petsc4py/PETSc.pxd":192
+/* "petsc4py/PETSc.pxd":195
  *     cdef PetscDM dm
  * 
  * ctypedef public api class Partitioner(Object) [             # <<<<<<<<<<<<<<
@@ -1521,7 +1774,7 @@ static struct __pyx_vtabstruct_8slepc4py_5SLEPc_MFN *__pyx_vtabptr_8slepc4py_5SL
 #define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
 
 /* PyObjectGetAttrStr.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_USE_TYPE_SLOTS
 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
     PyTypeObject* tp = Py_TYPE(obj);
     if (likely(tp->tp_getattro))
@@ -1539,6 +1792,20 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject
 /* GetBuiltinName.proto */
 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
 
+/* decode_c_string_utf16.proto */
+static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) {
+    int byteorder = 0;
+    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
+}
+static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) {
+    int byteorder = -1;
+    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
+}
+static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) {
+    int byteorder = 1;
+    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
+}
+
 /* decode_c_bytes.proto */
 static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
          const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop,
@@ -1555,6 +1822,24 @@ static CYTHON_INLINE PyObject* __Pyx_decode_bytes(
         start, stop, encoding, errors, decode_func);
 }
 
+/* PyCFunctionFastCall.proto */
+#if CYTHON_FAST_PYCCALL
+static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
+#else
+#define __Pyx_PyCFunction_FastCall(func, args, nargs)  (assert(0), NULL)
+#endif
+
+/* PyFunctionFastCall.proto */
+#if CYTHON_FAST_PYCALL
+#define __Pyx_PyFunction_FastCall(func, args, nargs)\
+    __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
+#if 1 || PY_VERSION_HEX < 0x030600B1
+static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs);
+#else
+#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
+#endif
+#endif
+
 /* PyObjectCall.proto */
 #if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
@@ -1582,31 +1867,36 @@ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
     Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
 
 /* KeywordStringCheck.proto */
-static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed);
-
-/* ForceInitThreads.proto */
-#ifndef __PYX_FORCE_INIT_THREADS
-  #define __PYX_FORCE_INIT_THREADS 0
-#endif
+static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed);
 
 /* PyThreadStateGet.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_FAST_THREAD_STATE
 #define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
-#define __Pyx_PyThreadState_assign  __pyx_tstate = PyThreadState_GET();
+#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
+#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
 #else
 #define __Pyx_PyThreadState_declare
 #define __Pyx_PyThreadState_assign
+#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
 #endif
 
 /* PyErrFetchRestore.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
 #define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
 #define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
 #define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
 #define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
 static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
+#else
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#endif
 #else
+#define __Pyx_PyErr_Clear() PyErr_Clear()
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
 #define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
 #define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
 #define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
@@ -1631,7 +1921,7 @@ static CYTHON_INLINE int __Pyx_IterFinish(void);
 static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
 
 /* SaveResetException.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_FAST_THREAD_STATE
 #define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
 static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
 #define __Pyx_ExceptionReset(type, value, tb)  __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
@@ -1642,7 +1932,7 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
 #endif
 
 /* PyErrExceptionMatches.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_FAST_THREAD_STATE
 #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
 #else
@@ -1650,7 +1940,7 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
 #endif
 
 /* GetException.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_FAST_THREAD_STATE
 #define __Pyx_GetException(type, value, tb)  __Pyx__GetException(__pyx_tstate, type, value, tb)
 static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
 #else
@@ -1678,10 +1968,27 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
     (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                               int wraparound, int boundscheck);
-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                      int is_list, int wraparound, int boundscheck);
 
+/* ListCompAppend.proto */
+#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
+static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
+    PyListObject* L = (PyListObject*) list;
+    Py_ssize_t len = Py_SIZE(list);
+    if (likely(L->allocated > len)) {
+        Py_INCREF(x);
+        PyList_SET_ITEM(list, len, x);
+        Py_SIZE(list) = len+1;
+        return 0;
+    }
+    return PyList_Append(list, x);
+}
+#else
+#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
+#endif
+
 /* RaiseDoubleKeywords.proto */
 static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
 
@@ -1691,7 +1998,7 @@ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
     const char* function_name);
 
 /* ListAppend.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
 static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
     PyListObject* L = (PyListObject*) list;
     Py_ssize_t len = Py_SIZE(list);
@@ -1709,30 +2016,16 @@ static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
 
 /* PyObjectCallMethod1.proto */
 static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
+static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg);
 
 /* append.proto */
 static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x);
 
-/* ListCompAppend.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
-    PyListObject* L = (PyListObject*) list;
-    Py_ssize_t len = Py_SIZE(list);
-    if (likely(L->allocated > len)) {
-        Py_INCREF(x);
-        PyList_SET_ITEM(list, len, x);
-        Py_SIZE(list) = len+1;
-        return 0;
-    }
-    return PyList_Append(list, x);
-}
-#else
-#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
-#endif
-
 /* ArgTypeTest.proto */
-static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
-    const char *name, int exact);
+#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
+    ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\
+        __Pyx__ArgTypeTest(obj, type, name, exact))
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);
 
 /* ExtTypeTest.proto */
 static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
@@ -1764,6 +2057,10 @@ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
 /* GetNameInClass.proto */
 static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name);
 
+/* ClassMethod.proto */
+#include "descrobject.h"
+static PyObject* __Pyx_Method_ClassMethod(PyObject *method);
+
 /* CalculateMetaclass.proto */
 static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);
 
@@ -1774,7 +2071,7 @@ static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObj
                                       PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);
 
 /* PyObjectSetAttrStr.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_USE_TYPE_SLOTS
 #define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL)
 static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
     PyTypeObject* tp = Py_TYPE(obj);
@@ -1807,6 +2104,9 @@ static PyObject *__Pyx_ImportModule(const char *name);
 static void __pyx_module_cleanup(PyObject *self);
 static int __Pyx_RegisterCleanup(void);
 
+/* CLineInTraceback.proto */
+static int __Pyx_CLineForTraceback(int c_line);
+
 /* CodeObjectCache.proto */
 typedef struct {
     PyCodeObject* code_object;
@@ -1943,10 +2243,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PetscInt(PetscInt value);
 /* CIntToPy.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PetscBool(PetscBool value);
 
-/* ClassMethod.proto */
-#include "descrobject.h"
-static PyObject* __Pyx_Method_ClassMethod(PyObject *method);
-
 /* CIntFromPy.proto */
 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
 
@@ -1957,6 +2253,9 @@ static CYTHON_INLINE PetscInt __Pyx_PyInt_As_PetscInt(PyObject *);
 static CYTHON_INLINE MatStructure __Pyx_PyInt_As_MatStructure(PyObject *);
 
 /* CIntFromPy.proto */
+static CYTHON_INLINE EPSConvergedReason __Pyx_PyInt_As_EPSConvergedReason(PyObject *);
+
+/* CIntFromPy.proto */
 static CYTHON_INLINE PetscBool __Pyx_PyInt_As_PetscBool(PyObject *);
 
 /* CIntFromPy.proto */
@@ -2043,6 +2342,18 @@ static CYTHON_INLINE NEPErrorType __Pyx_PyInt_As_NEPErrorType(PyObject *);
 /* CIntFromPy.proto */
 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
 
+/* FastTypeChecks.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
+static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
+static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
+static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
+#else
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
+#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
+#endif
+
 /* CheckBinaryVersion.proto */
 static int __Pyx_check_binary_version(void);
 
@@ -2084,6 +2395,8 @@ static MPI_Comm (*__pyx_f_8petsc4py_5PETSc_GetComm)(PyObject *, MPI_Comm); /*pro
 static MPI_Comm (*__pyx_f_8petsc4py_5PETSc_GetCommDefault)(void); /*proto*/
 static int (*__pyx_f_8petsc4py_5PETSc_PyPetscType_Register)(int, PyTypeObject *); /*proto*/
 
+/* Module declarations from 'cython' */
+
 /* Module declarations from 'slepc4py.SLEPc' */
 static PyTypeObject *__pyx_ptype_8slepc4py_5SLEPc_ST = 0;
 static PyTypeObject *__pyx_ptype_8slepc4py_5SLEPc_BV = 0;
@@ -2110,13 +2423,18 @@ static CYTHON_INLINE PyObject *__pyx_f_8slepc4py_5SLEPc_toReal(PetscReal); /*pro
 static CYTHON_INLINE PetscReal __pyx_f_8slepc4py_5SLEPc_asReal(PyObject *); /*proto*/
 static CYTHON_INLINE PyObject *__pyx_f_8slepc4py_5SLEPc_toScalar(PetscScalar); /*proto*/
 static CYTHON_INLINE PetscScalar __pyx_f_8slepc4py_5SLEPc_asScalar(PyObject *); /*proto*/
+static CYTHON_INLINE PyObject *__pyx_f_8slepc4py_5SLEPc_toComplex(PetscScalar, PetscScalar); /*proto*/
 static CYTHON_INLINE MPI_Comm __pyx_f_8slepc4py_5SLEPc_def_Comm(PyObject *, MPI_Comm); /*proto*/
 static CYTHON_INLINE MPI_Comm __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT(void); /*proto*/
 static CYTHON_INLINE MatStructure __pyx_f_8slepc4py_5SLEPc_matstructure(PyObject *); /*proto*/
 static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_PetscINCREF(PetscObject *); /*proto*/
 static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(PetscObject *); /*proto*/
+static CYTHON_INLINE PetscViewer __pyx_f_8slepc4py_5SLEPc_def_Viewer(struct PyPetscViewerObject *); /*proto*/
 static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_BV_Sizes(PyObject *, PetscInt *, PetscInt *); /*proto*/
 static PyObject *__pyx_f_8slepc4py_5SLEPc_iarray_s(PyObject *, PetscInt *, PetscScalar **); /*proto*/
+static CYTHON_INLINE struct PySlepcEPSObject *__pyx_f_8slepc4py_5SLEPc_ref_EPS(EPS); /*proto*/
+static int __pyx_f_8slepc4py_5SLEPc_EPS_Stopping(EPS, PetscInt, PetscInt, PetscInt, PetscInt, EPSConvergedReason *, void *); /*proto*/
+static int __pyx_f_8slepc4py_5SLEPc_EPS_Monitor(EPS, PetscInt, PetscInt, PetscScalar *, PetscScalar *, PetscReal *, PetscInt, void *); /*proto*/
 static CYTHON_INLINE struct PyPetscMatObject *__pyx_f_8slepc4py_5SLEPc_ref_Mat(Mat); /*proto*/
 static CYTHON_INLINE struct PySlepcNEPObject *__pyx_f_8slepc4py_5SLEPc_ref_NEP(NEP); /*proto*/
 static int __pyx_f_8slepc4py_5SLEPc_NEP_Function(NEP, PetscScalar, Mat, Mat, void *); /*proto*/
@@ -2198,7 +2516,8 @@ static const char __pyx_k_JD[] = "JD";
 static const char __pyx_k_VT[] = "VT";
 static const char __pyx_k_Vi[] = "Vi";
 static const char __pyx_k_Vr[] = "Vr";
-static const char __pyx_k__2[] = "\n";
+static const char __pyx_k__2[] = ",";
+static const char __pyx_k__5[] = "\n";
 static const char __pyx_k_bv[] = "bv";
 static const char __pyx_k_ds[] = "ds";
 static const char __pyx_k_fn[] = "fn";
@@ -2306,7 +2625,6 @@ static const char __pyx_k_maxit[] = "maxit";
 static const char __pyx_k_minor[] = "minor";
 static const char __pyx_k_npart[] = "npart";
 static const char __pyx_k_nrest[] = "nrest";
-static const char __pyx_k_patch[] = "patch";
 static const char __pyx_k_range[] = "range";
 static const char __pyx_k_ready[] = "ready";
 static const char __pyx_k_scale[] = "scale";
@@ -2406,6 +2724,7 @@ static const char __pyx_k_bv_type[] = "bv_type";
 static const char __pyx_k_delayed[] = "delayed";
 static const char __pyx_k_ds_type[] = "ds_type";
 static const char __pyx_k_fn_type[] = "fn_type";
+static const char __pyx_k_monitor[] = "monitor";
 static const char __pyx_k_prepare[] = "__prepare__";
 static const char __pyx_k_release[] = "release";
 static const char __pyx_k_rg_type[] = "rg_type";
@@ -2418,6 +2737,7 @@ static const char __pyx_k_CONSTANT[] = "CONSTANT";
 static const char __pyx_k_DIAGONAL[] = "DIAGONAL";
 static const char __pyx_k_EPSWhich[] = "EPSWhich";
 static const char __pyx_k_EXPLICIT[] = "EXPLICIT";
+static const char __pyx_k_GIT_Date[] = "GIT Date:";
 static const char __pyx_k_HARMONIC[] = "HARMONIC";
 static const char __pyx_k_IFNEEDED[] = "IFNEEDED";
 static const char __pyx_k_INTERPOL[] = "INTERPOL";
@@ -2455,6 +2775,7 @@ static const char __pyx_k_reorthog[] = "reorthog";
 static const char __pyx_k_setArray[] = "setArray";
 static const char __pyx_k_setShift[] = "setShift";
 static const char __pyx_k_setSizes[] = "setSizes";
+static const char __pyx_k_stopping[] = "stopping";
 static const char __pyx_k_subminor[] = "subminor";
 static const char __pyx_k_svd_type[] = "svd_type";
 static const char __pyx_k_trackall[] = "trackall";
@@ -2481,6 +2802,7 @@ static const char __pyx_k_metaclass[] = "__metaclass__";
 static const char __pyx_k_norm_type[] = "norm_type";
 static const char __pyx_k_operators[] = "operators";
 static const char __pyx_k_setTarget[] = "setTarget";
+static const char __pyx_k_spaceleft[] = "spaceleft";
 static const char __pyx_k_structure[] = "structure";
 static const char __pyx_k_CHEBYSHEV1[] = "CHEBYSHEV1";
 static const char __pyx_k_CHEBYSHEV2[] = "CHEBYSHEV2";
@@ -2502,6 +2824,7 @@ static const char __pyx_k_initialize[] = "_initialize";
 static const char __pyx_k_iterations[] = "iterations";
 static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
 static const char __pyx_k_setMatMode[] = "setMatMode";
+static const char __pyx_k_spaceright[] = "spaceright";
 static const char __pyx_k_CombineType[] = "CombineType";
 static const char __pyx_k_DSStateType[] = "DSStateType";
 static const char __pyx_k_KRYLOVSCHUR[] = "KRYLOVSCHUR";
@@ -2543,6 +2866,7 @@ static const char __pyx_k_ConvergedReason[] = "ConvergedReason";
 static const char __pyx_k_NEPRefineScheme[] = "NEPRefineScheme";
 static const char __pyx_k_OrthogBlockType[] = "OrthogBlockType";
 static const char __pyx_k_PEPRefineScheme[] = "PEPRefineScheme";
+static const char __pyx_k_SLEPc_SLEPc_pyx[] = "SLEPc/SLEPc.pyx";
 static const char __pyx_k_HARMONIC_LARGEST[] = "HARMONIC_LARGEST";
 static const char __pyx_k_OrthogRefineType[] = "OrthogRefineType";
 static const char __pyx_k_REFINED_HARMONIC[] = "REFINED_HARMONIC";
@@ -2565,6 +2889,7 @@ static const char __pyx_k_PEPConvergedReason[] = "PEPConvergedReason";
 static const char __pyx_k_SMALLEST_IMAGINARY[] = "SMALLEST_IMAGINARY";
 static const char __pyx_k_SMALLEST_MAGNITUDE[] = "SMALLEST_MAGNITUDE";
 static const char __pyx_k_SVDConvergedReason[] = "SVDConvergedReason";
+static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
 static const char __pyx_k_getWhichEigenpairs[] = "getWhichEigenpairs";
 static const char __pyx_k_setWhichEigenpairs[] = "setWhichEigenpairs";
 static const char __pyx_k_CONVERGED_ITERATING[] = "CONVERGED_ITERATING";
@@ -2612,7 +2937,6 @@ static const char __pyx_k_SVD_types_CROSS_Eigenproblem_wi[] = "\n    SVD types\n
 static const char __pyx_k_Scalable_Library_for_Eigenvalue[] = "\nScalable Library for Eigenvalue Problem Computations.\n";
 static const char __pyx_k_Scheme_for_solving_linear_syste[] = "\n    Scheme for solving linear systems during iterative refinement\n\n    - `SCHUR`:    Schur complement.\n    - `MBE`:      Mixed block elimination.\n    - `EXPLICIT`: Build the explicit matrix.\n    ";
 static const char __pyx_k_To_refer_to_one_of_the_matrices[] = "\n    To refer to one of the matrices stored internally in DS\n\n    - `A`:  first matrix of eigenproblem/singular value problem.\n    - `B`:  second matrix of a generalized eigenproblem.\n    - `C`:  third matrix of a quadratic eigenproblem.\n    - `T`:  tridiagonal matrix.\n    - `D`:  diagonal matrix.\n    - `Q`:  orthogonal matrix of (right) Schur vectors.\n    - `Z`:  orthogonal matrix of left Schur vectors.\n    - `X`:  [...]
-static const char __pyx_k_home_dalcinl_Devel_slepc4py_dev[] = "/home/dalcinl/Devel/slepc4py-dev/src/SLEPc/SLEPc.pyx";
 static const char __pyx_k_local_and_global_sizes_cannot_be[] = "local and global sizes cannot be both 'DECIDE'";
 static PyObject *__pyx_n_s_A;
 static PyObject *__pyx_n_s_ABS;
@@ -2723,6 +3047,7 @@ static PyObject *__pyx_n_s_GD;
 static PyObject *__pyx_n_s_GENERAL;
 static PyObject *__pyx_n_s_GHEP;
 static PyObject *__pyx_n_s_GHIEP;
+static PyObject *__pyx_kp_s_GIT_Date;
 static PyObject *__pyx_n_s_GNHEP;
 static PyObject *__pyx_n_s_GS;
 static PyObject *__pyx_n_s_GYROSCOPIC;
@@ -2847,6 +3172,7 @@ static PyObject *__pyx_n_s_SHELL;
 static PyObject *__pyx_n_s_SHIFT;
 static PyObject *__pyx_n_s_SIMPLE;
 static PyObject *__pyx_n_s_SINVERT;
+static PyObject *__pyx_kp_s_SLEPc_SLEPc_pyx;
 static PyObject *__pyx_n_s_SLP;
 static PyObject *__pyx_n_s_SMALLEST;
 static PyObject *__pyx_n_s_SMALLEST_IMAGINARY;
@@ -2901,6 +3227,7 @@ static PyObject *__pyx_n_s_X;
 static PyObject *__pyx_n_s_Y;
 static PyObject *__pyx_n_s_Z;
 static PyObject *__pyx_kp_s__2;
+static PyObject *__pyx_kp_s__5;
 static PyObject *__pyx_n_s_a;
 static PyObject *__pyx_n_s_alpha;
 static PyObject *__pyx_n_s_append;
@@ -2917,6 +3244,7 @@ static PyObject *__pyx_n_s_bv_type;
 static PyObject *__pyx_n_s_c;
 static PyObject *__pyx_n_s_center;
 static PyObject *__pyx_n_s_cform;
+static PyObject *__pyx_n_s_cline_in_traceback;
 static PyObject *__pyx_n_s_comm;
 static PyObject *__pyx_n_s_comp;
 static PyObject *__pyx_n_s_conv;
@@ -2962,7 +3290,6 @@ static PyObject *__pyx_n_s_getWhichEigenpairs;
 static PyObject *__pyx_n_s_getWhichSingularTriplets;
 static PyObject *__pyx_n_s_ghostUpdate;
 static PyObject *__pyx_n_s_globalup;
-static PyObject *__pyx_kp_s_home_dalcinl_Devel_slepc4py_dev;
 static PyObject *__pyx_n_s_i;
 static PyObject *__pyx_n_s_import;
 static PyObject *__pyx_n_s_indef;
@@ -2995,6 +3322,7 @@ static PyObject *__pyx_n_s_mfn_type;
 static PyObject *__pyx_n_s_minor;
 static PyObject *__pyx_n_s_mode;
 static PyObject *__pyx_n_s_module;
+static PyObject *__pyx_n_s_monitor;
 static PyObject *__pyx_n_s_mpd;
 static PyObject *__pyx_n_s_n;
 static PyObject *__pyx_n_s_ncv;
@@ -3007,7 +3335,6 @@ static PyObject *__pyx_n_s_nsv;
 static PyObject *__pyx_n_s_object;
 static PyObject *__pyx_n_s_operators;
 static PyObject *__pyx_n_s_orth;
-static PyObject *__pyx_n_s_patch;
 static PyObject *__pyx_n_s_pep_type;
 static PyObject *__pyx_n_s_petsc4py_PETSc;
 static PyObject *__pyx_n_s_prefix;
@@ -3051,10 +3378,13 @@ static PyObject *__pyx_n_s_shift;
 static PyObject *__pyx_n_s_sizes;
 static PyObject *__pyx_n_s_slepc4py_SLEPc;
 static PyObject *__pyx_n_s_space;
+static PyObject *__pyx_n_s_spaceleft;
+static PyObject *__pyx_n_s_spaceright;
 static PyObject *__pyx_n_s_split;
 static PyObject *__pyx_n_s_st;
 static PyObject *__pyx_n_s_st_type;
 static PyObject *__pyx_n_s_state;
+static PyObject *__pyx_n_s_stopping;
 static PyObject *__pyx_n_s_strip;
 static PyObject *__pyx_n_s_structure;
 static PyObject *__pyx_n_s_subint;
@@ -3076,8 +3406,8 @@ static PyObject *__pyx_n_s_x;
 static PyObject *__pyx_n_s_y;
 static int __pyx_pf_8slepc4py_5SLEPc_6_p_mem___cinit__(struct __pyx_obj_8slepc4py_5SLEPc__p_mem *__pyx_v_self); /* proto */
 static void __pyx_pf_8slepc4py_5SLEPc_6_p_mem_2__dealloc__(struct __pyx_obj_8slepc4py_5SLEPc__p_mem *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3Sys_getVersion(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_patch, PyObject *__pyx_v_devel, PyObject *__pyx_v_date, PyObject *__pyx_v_author); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3Sys_2getVersionInfo(CYTHON_UNUSED PyTypeObject *__pyx_v_cls); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3Sys_getVersion(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_devel, PyObject *__pyx_v_date, PyObject *__pyx_v_author); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3Sys_2getVersionInfo(PyTypeObject *__pyx_v_cls); /* proto */
 static int __pyx_pf_8slepc4py_5SLEPc_2ST___cinit__(struct PySlepcSTObject *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_2view(struct PySlepcSTObject *__pyx_v_self, struct PyPetscViewerObject *__pyx_v_viewer); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_4destroy(struct PySlepcSTObject *__pyx_v_self); /* proto */
@@ -3094,8 +3424,8 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_24setTransform(struct PySlepcSTOb
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_26getTransform(struct PySlepcSTObject *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_28setMatMode(struct PySlepcSTObject *__pyx_v_self, PyObject *__pyx_v_mode); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_30getMatMode(struct PySlepcSTObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_32setOperators(struct PySlepcSTObject *__pyx_v_self, PyObject *__pyx_v_operators); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_34getOperators(struct PySlepcSTObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_32setMatrices(struct PySlepcSTObject *__pyx_v_self, PyObject *__pyx_v_operators); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_34getMatrices(struct PySlepcSTObject *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_36setMatStructure(struct PySlepcSTObject *__pyx_v_self, PyObject *__pyx_v_structure); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_38setKSP(struct PySlepcSTObject *__pyx_v_self, struct PyPetscKSPObject *__pyx_v_ksp); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_40getKSP(struct PySlepcSTObject *__pyx_v_self); /* proto */
@@ -3252,42 +3582,45 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_88getOperators(struct PySlepcEPS
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_90setOperators(struct PySlepcEPSObject *__pyx_v_self, struct PyPetscMatObject *__pyx_v_A, struct PyPetscMatObject *__pyx_v_B); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_92setDeflationSpace(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_space); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_94setInitialSpace(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_space); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_96cancelMonitor(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_98setUp(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_100solve(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_102getIterationNumber(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_104getConvergedReason(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_106getConverged(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_108getEigenvalue(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_110getEigenvector(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_Vr, struct PyPetscVecObject *__pyx_v_Vi); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_112getEigenpair(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_Vr, struct PyPetscVecObject *__pyx_v_Vi); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_116getErrorEstimate(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_118computeError(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, PyObject *__pyx_v_etype); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_120errorView(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_etype, struct PyPetscViewerObject *__pyx_v_viewer); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_122setPowerShiftType(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_shift); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_124getPowerShiftType(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_126setArnoldiDelayed(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_delayed); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_128getArnoldiDelayed(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_130setLanczosReorthogType(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_reorthog); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_132getLanczosReorthogType(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_134setKrylovSchurRestart(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_keep); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_136getKrylovSchurRestart(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_138setKrylovSchurLocking(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_lock); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_140getKrylovSchurLocking(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_142setKrylovSchurPartitions(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_npart); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_144getKrylovSchurPartitions(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_146setKrylovSchurDetectZeros(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_detect); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_148getKrylovSchurDetectZeros(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_nev, PyObject *__pyx_v_ncv, PyObject *__pyx_v_mpd); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_152getKrylovSchurDimensions(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_154getKrylovSchurSubcommInfo(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_156getKrylovSchurSubcommPairs(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_V); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_158getKrylovSchurSubcommMats(struct PySlepcEPSObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_160updateKrylovSchurSubcommMats(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_s, PyObject *__pyx_v_a, struct PyPetscMatObject *__pyx_v_Au, PyObject *__pyx_v_t, PyObject *__pyx_v_b, struct PyPetscMatObject *__pyx_v_Bu, PyObject *__pyx_v_structure, PyObject *__pyx_v_globalup); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_subint); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_164setRQCGReset(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_nrest); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_166getRQCGReset(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_96setStoppingTest(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_stopping, PyObject *__pyx_v_args, PyObject *__pyx_v_kargs); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_98setMonitor(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_monitor, PyObject *__pyx_v_args, PyObject *__pyx_v_kargs); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_100getMonitor(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_102cancelMonitor(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_104setUp(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_106solve(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_108getIterationNumber(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_110getConvergedReason(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_112getConverged(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getEigenvalue(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_116getEigenvector(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_Vr, struct PyPetscVecObject *__pyx_v_Vi); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_118getEigenpair(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_Vr, struct PyPetscVecObject *__pyx_v_Vi); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_120getInvariantSubspace(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_122getErrorEstimate(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_124computeError(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, PyObject *__pyx_v_etype); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_126errorView(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_etype, struct PyPetscViewerObject *__pyx_v_viewer); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_128setPowerShiftType(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_shift); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_130getPowerShiftType(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_132setArnoldiDelayed(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_delayed); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_134getArnoldiDelayed(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_136setLanczosReorthogType(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_reorthog); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_138getLanczosReorthogType(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_140setKrylovSchurRestart(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_keep); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_142getKrylovSchurRestart(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_144setKrylovSchurLocking(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_lock); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_146getKrylovSchurLocking(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_148setKrylovSchurPartitions(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_npart); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_150getKrylovSchurPartitions(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_152setKrylovSchurDetectZeros(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_detect); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_154getKrylovSchurDetectZeros(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_156setKrylovSchurDimensions(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_nev, PyObject *__pyx_v_ncv, PyObject *__pyx_v_mpd); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_158getKrylovSchurDimensions(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_160getKrylovSchurSubcommInfo(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162getKrylovSchurSubcommPairs(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_V); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_164getKrylovSchurSubcommMats(struct PySlepcEPSObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_166updateKrylovSchurSubcommMats(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_s, PyObject *__pyx_v_a, struct PyPetscMatObject *__pyx_v_Au, PyObject *__pyx_v_t, PyObject *__pyx_v_b, struct PyPetscMatObject *__pyx_v_Bu, PyObject *__pyx_v_structure, PyObject *__pyx_v_globalup); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_168setKrylovSchurSubintervals(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_subint); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_170setRQCGReset(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_nrest); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_172getRQCGReset(struct PySlepcEPSObject *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_12problem_type___get__(struct PySlepcEPSObject *__pyx_v_self); /* proto */
 static int __pyx_pf_8slepc4py_5SLEPc_3EPS_12problem_type_2__set__(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_10extraction___get__(struct PySlepcEPSObject *__pyx_v_self); /* proto */
@@ -3327,7 +3660,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_38getBV(struct PySlepcSVDObject
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_40setBV(struct PySlepcSVDObject *__pyx_v_self, struct PySlepcBVObject *__pyx_v_V, struct PySlepcBVObject *__pyx_v_U); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_42getOperator(struct PySlepcSVDObject *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_44setOperator(struct PySlepcSVDObject *__pyx_v_self, struct PyPetscMatObject *__pyx_v_A); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_46setInitialSpace(struct PySlepcSVDObject *__pyx_v_self, PyObject *__pyx_v_space); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_46setInitialSpaces(struct PySlepcSVDObject *__pyx_v_self, PyObject *__pyx_v_spaceright, PyObject *__pyx_v_spaceleft); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_48cancelMonitor(struct PySlepcSVDObject *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_50setUp(struct PySlepcSVDObject *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_52solve(struct PySlepcSVDObject *__pyx_v_self); /* proto */
@@ -3374,43 +3707,45 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_26getProblemType(struct PySlepcP
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_28setProblemType(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_problem_type); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_30getWhichEigenpairs(struct PySlepcPEPObject *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_32setWhichEigenpairs(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_which); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_34getTolerances(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_36setTolerances(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_tol, PyObject *__pyx_v_max_it); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_38getConvergenceTest(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_40setConvergenceTest(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_conv); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getRefine(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_npart, PyObject *__pyx_v_tol, PyObject *__pyx_v_its, PyObject *__pyx_v_scheme); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_46getTrackAll(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_48setTrackAll(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_trackall); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_50getDimensions(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_52setDimensions(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_nev, PyObject *__pyx_v_ncv, PyObject *__pyx_v_mpd); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_54getST(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_56setST(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcSTObject *__pyx_v_st); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObject *__pyx_v_self, struct PyPetscVecObject *__pyx_v_Dl, struct PyPetscVecObject *__pyx_v_Dr); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_scale, PyObject *__pyx_v_alpha, struct PyPetscVecObject *__pyx_v_Dl, struct PyPetscVecObject *__pyx_v_Dr, PyObject *__pyx_v_its, PyObject *__pyx_v_lbda); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_62getBV(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_64setBV(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcBVObject *__pyx_v_bv); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_66getRG(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_68setRG(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcRGObject *__pyx_v_rg); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_70getOperators(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_72setOperators(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_operators); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_74setInitialSpace(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_space); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_76cancelMonitor(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_78setUp(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_80solve(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_82getIterationNumber(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_84getConvergedReason(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_86getConverged(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_88getEigenpair(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_Vr, struct PyPetscVecObject *__pyx_v_Vi); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_90getErrorEstimate(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_i); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_92computeError(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_i, PyObject *__pyx_v_etype); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_94errorView(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_etype, struct PyPetscViewerObject *__pyx_v_viewer); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_96setLinearEPS(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcEPSObject *__pyx_v_eps); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_98getLinearEPS(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_100setLinearCompanionForm(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_cform); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_102getLinearCompanionForm(struct PySlepcPEPObject *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_104setLinearExplicitMatrix(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_flag); /* proto */
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_106getLinearExplicitMatrix(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_34getTarget(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_36setTarget(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_target); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_38getTolerances(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_40setTolerances(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_tol, PyObject *__pyx_v_max_it); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getConvergenceTest(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setConvergenceTest(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_conv); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_46getRefine(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_48setRefine(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_npart, PyObject *__pyx_v_tol, PyObject *__pyx_v_its, PyObject *__pyx_v_scheme); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_50getTrackAll(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_52setTrackAll(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_trackall); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_54getDimensions(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_56setDimensions(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_nev, PyObject *__pyx_v_ncv, PyObject *__pyx_v_mpd); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getST(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setST(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcSTObject *__pyx_v_st); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_62getScale(struct PySlepcPEPObject *__pyx_v_self, struct PyPetscVecObject *__pyx_v_Dl, struct PyPetscVecObject *__pyx_v_Dr); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_64setScale(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_scale, PyObject *__pyx_v_alpha, struct PyPetscVecObject *__pyx_v_Dl, struct PyPetscVecObject *__pyx_v_Dr, PyObject *__pyx_v_its, PyObject *__pyx_v_lbda); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_66getBV(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_68setBV(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcBVObject *__pyx_v_bv); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_70getRG(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_72setRG(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcRGObject *__pyx_v_rg); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_74getOperators(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_76setOperators(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_operators); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_78setInitialSpace(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_space); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_80cancelMonitor(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_82setUp(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_84solve(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_86getIterationNumber(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_88getConvergedReason(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_90getConverged(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_92getEigenpair(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_Vr, struct PyPetscVecObject *__pyx_v_Vi); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_94getErrorEstimate(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_i); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_96computeError(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_i, PyObject *__pyx_v_etype); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_98errorView(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_etype, struct PyPetscViewerObject *__pyx_v_viewer); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_100setLinearEPS(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcEPSObject *__pyx_v_eps); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_102getLinearEPS(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_104setLinearCompanionForm(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_cform); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_106getLinearCompanionForm(struct PySlepcPEPObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_108setLinearExplicitMatrix(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_flag); /* proto */
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_110getLinearExplicitMatrix(struct PySlepcPEPObject *__pyx_v_self); /* proto */
 static int __pyx_pf_8slepc4py_5SLEPc_3NEP___cinit__(struct PySlepcNEPObject *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_2view(struct PySlepcNEPObject *__pyx_v_self, struct PyPetscViewerObject *__pyx_v_viewer); /* proto */
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_4destroy(struct PySlepcNEPObject *__pyx_v_self); /* proto */
@@ -3492,13 +3827,61 @@ static PyObject *__pyx_tp_new_8slepc4py_5SLEPc__p_mem(PyTypeObject *t, PyObject
 static PyObject *__pyx_tp_new_8slepc4py_5SLEPc_Sys(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
 static PyObject *__pyx_float_1_0;
 static PyObject *__pyx_int_0;
+static PyObject *__pyx_int_1;
 static PyObject *__pyx_tuple_;
 static PyObject *__pyx_tuple__3;
 static PyObject *__pyx_tuple__4;
-static PyObject *__pyx_tuple__5;
 static PyObject *__pyx_tuple__6;
-static PyObject *__pyx_codeobj__7;
-static PyObject *__pyx_codeobj__8;
+static PyObject *__pyx_tuple__7;
+static PyObject *__pyx_tuple__8;
+static PyObject *__pyx_tuple__9;
+static PyObject *__pyx_tuple__10;
+static PyObject *__pyx_tuple__11;
+static PyObject *__pyx_tuple__12;
+static PyObject *__pyx_tuple__13;
+static PyObject *__pyx_tuple__14;
+static PyObject *__pyx_tuple__15;
+static PyObject *__pyx_tuple__16;
+static PyObject *__pyx_tuple__17;
+static PyObject *__pyx_tuple__18;
+static PyObject *__pyx_tuple__19;
+static PyObject *__pyx_tuple__20;
+static PyObject *__pyx_tuple__21;
+static PyObject *__pyx_tuple__22;
+static PyObject *__pyx_tuple__23;
+static PyObject *__pyx_tuple__24;
+static PyObject *__pyx_tuple__25;
+static PyObject *__pyx_tuple__26;
+static PyObject *__pyx_tuple__27;
+static PyObject *__pyx_tuple__28;
+static PyObject *__pyx_tuple__29;
+static PyObject *__pyx_tuple__30;
+static PyObject *__pyx_tuple__31;
+static PyObject *__pyx_tuple__32;
+static PyObject *__pyx_tuple__33;
+static PyObject *__pyx_tuple__34;
+static PyObject *__pyx_tuple__35;
+static PyObject *__pyx_tuple__36;
+static PyObject *__pyx_tuple__37;
+static PyObject *__pyx_tuple__38;
+static PyObject *__pyx_tuple__39;
+static PyObject *__pyx_tuple__40;
+static PyObject *__pyx_tuple__41;
+static PyObject *__pyx_tuple__42;
+static PyObject *__pyx_tuple__43;
+static PyObject *__pyx_tuple__44;
+static PyObject *__pyx_tuple__45;
+static PyObject *__pyx_tuple__46;
+static PyObject *__pyx_tuple__47;
+static PyObject *__pyx_tuple__48;
+static PyObject *__pyx_tuple__49;
+static PyObject *__pyx_tuple__50;
+static PyObject *__pyx_tuple__51;
+static PyObject *__pyx_tuple__52;
+static PyObject *__pyx_tuple__53;
+static PyObject *__pyx_tuple__54;
+static PyObject *__pyx_codeobj__55;
+static PyObject *__pyx_codeobj__56;
 
 /* "SLEPc/SLEPc.pyx":26
  *     ctypedef char const_char "const char"
@@ -3710,7 +4093,7 @@ static CYTHON_INLINE PyObject *__pyx_f_8slepc4py_5SLEPc_str2bytes(PyObject *__py
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 40, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
       if (likely(__pyx_t_5)) {
         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
@@ -3746,7 +4129,7 @@ static CYTHON_INLINE PyObject *__pyx_f_8slepc4py_5SLEPc_str2bytes(PyObject *__py
  *     return s
  * 
  */
-  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_s); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(4, 41, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_s); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(4, 41, __pyx_L1_error)
   (__pyx_v_p[0]) = ((const char *)((char *)__pyx_t_6));
 
   /* "SLEPc/SLEPc.pyx":42
@@ -3845,7 +4228,7 @@ static CYTHON_INLINE PyObject *__pyx_f_8slepc4py_5SLEPc_S_(const char *__pyx_v_p
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_decode); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 47, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
       if (likely(__pyx_t_5)) {
         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
@@ -4103,7 +4486,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_SETERR(int __pyx_v_ierr) {
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   #ifdef WITH_THREAD
-  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
+  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("SETERR", 0);
 
@@ -4182,12 +4565,12 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_SETERR(int __pyx_v_ierr) {
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_WriteUnraisable("slepc4py.SLEPc.SETERR", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __Pyx_WriteUnraisable("slepc4py.SLEPc.SETERR", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
-  PyGILState_Release(__pyx_gilstate_save);
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
   return __pyx_r;
 }
@@ -4295,7 +4678,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_CHKERR(int __pyx_v_ierr) {
 }
 
 /* "SLEPc/SLEPc.pyx":96
- *     PetscScalar PyPetscScalar_AsPetscScalar(object) except*
+ *     PetscScalar PyPetscScalar_AsPetscScalar(object) except? <PetscScalar>-1.0
  * 
  * cdef inline object toInt(PetscInt value):             # <<<<<<<<<<<<<<
  *     return value
@@ -4323,7 +4706,7 @@ static CYTHON_INLINE PyObject *__pyx_f_8slepc4py_5SLEPc_toInt(PetscInt __pyx_v_v
   goto __pyx_L0;
 
   /* "SLEPc/SLEPc.pyx":96
- *     PetscScalar PyPetscScalar_AsPetscScalar(object) except*
+ *     PetscScalar PyPetscScalar_AsPetscScalar(object) except? <PetscScalar>-1.0
  * 
  * cdef inline object toInt(PetscInt value):             # <<<<<<<<<<<<<<
  *     return value
@@ -4362,7 +4745,7 @@ static CYTHON_INLINE PetscInt __pyx_f_8slepc4py_5SLEPc_asInt(PyObject *__pyx_v_v
  * 
  * cdef inline object toReal(PetscReal value):
  */
-  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_value); if (unlikely((__pyx_t_1 == (PetscInt)-1) && PyErr_Occurred())) __PYX_ERR(4, 99, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_value); if (unlikely((__pyx_t_1 == ((PetscInt)-1)) && PyErr_Occurred())) __PYX_ERR(4, 99, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
 
@@ -4451,7 +4834,7 @@ static CYTHON_INLINE PetscReal __pyx_f_8slepc4py_5SLEPc_asReal(PyObject *__pyx_v
  * 
  * cdef inline object toScalar(PetscScalar value):
  */
-  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (PetscReal)-1) && PyErr_Occurred())) __PYX_ERR(4, 104, __pyx_L1_error)
+  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == ((PetscReal)-1)) && PyErr_Occurred())) __PYX_ERR(4, 104, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
 
@@ -4477,7 +4860,7 @@ static CYTHON_INLINE PetscReal __pyx_f_8slepc4py_5SLEPc_asReal(PyObject *__pyx_v
  * 
  * cdef inline object toScalar(PetscScalar value):             # <<<<<<<<<<<<<<
  *     return PyPetscScalar_FromPetscScalar(value)
- * cdef inline PetscScalar asScalar(object value) except*:
+ * cdef inline PetscScalar asScalar(object value) except? <PetscScalar>-1.0:
  */
 
 static CYTHON_INLINE PyObject *__pyx_f_8slepc4py_5SLEPc_toScalar(PetscScalar __pyx_v_value) {
@@ -4490,7 +4873,7 @@ static CYTHON_INLINE PyObject *__pyx_f_8slepc4py_5SLEPc_toScalar(PetscScalar __p
  * 
  * cdef inline object toScalar(PetscScalar value):
  *     return PyPetscScalar_FromPetscScalar(value)             # <<<<<<<<<<<<<<
- * cdef inline PetscScalar asScalar(object value) except*:
+ * cdef inline PetscScalar asScalar(object value) except? <PetscScalar>-1.0:
  *     return PyPetscScalar_AsPetscScalar(value)
  */
   __Pyx_XDECREF(__pyx_r);
@@ -4505,7 +4888,7 @@ static CYTHON_INLINE PyObject *__pyx_f_8slepc4py_5SLEPc_toScalar(PetscScalar __p
  * 
  * cdef inline object toScalar(PetscScalar value):             # <<<<<<<<<<<<<<
  *     return PyPetscScalar_FromPetscScalar(value)
- * cdef inline PetscScalar asScalar(object value) except*:
+ * cdef inline PetscScalar asScalar(object value) except? <PetscScalar>-1.0:
  */
 
   /* function exit code */
@@ -4522,7 +4905,7 @@ static CYTHON_INLINE PyObject *__pyx_f_8slepc4py_5SLEPc_toScalar(PetscScalar __p
 /* "SLEPc/SLEPc.pyx":108
  * cdef inline object toScalar(PetscScalar value):
  *     return PyPetscScalar_FromPetscScalar(value)
- * cdef inline PetscScalar asScalar(object value) except*:             # <<<<<<<<<<<<<<
+ * cdef inline PetscScalar asScalar(object value) except? <PetscScalar>-1.0:             # <<<<<<<<<<<<<<
  *     return PyPetscScalar_AsPetscScalar(value)
  * 
  */
@@ -4535,19 +4918,19 @@ static CYTHON_INLINE PetscScalar __pyx_f_8slepc4py_5SLEPc_asScalar(PyObject *__p
 
   /* "SLEPc/SLEPc.pyx":109
  *     return PyPetscScalar_FromPetscScalar(value)
- * cdef inline PetscScalar asScalar(object value) except*:
+ * cdef inline PetscScalar asScalar(object value) except? <PetscScalar>-1.0:
  *     return PyPetscScalar_AsPetscScalar(value)             # <<<<<<<<<<<<<<
  * 
- * # -----------------------------------------------------------------------------
+ * cdef inline object toComplex(PetscScalar rvalue, PetscScalar ivalue):
  */
-  __pyx_t_1 = PyPetscScalar_AsPetscScalar(__pyx_v_value); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 109, __pyx_L1_error)
+  __pyx_t_1 = PyPetscScalar_AsPetscScalar(__pyx_v_value); if (unlikely(__pyx_t_1 == ((PetscScalar)((PetscScalar)(-1.0))) && PyErr_Occurred())) __PYX_ERR(4, 109, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
 
   /* "SLEPc/SLEPc.pyx":108
  * cdef inline object toScalar(PetscScalar value):
  *     return PyPetscScalar_FromPetscScalar(value)
- * cdef inline PetscScalar asScalar(object value) except*:             # <<<<<<<<<<<<<<
+ * cdef inline PetscScalar asScalar(object value) except? <PetscScalar>-1.0:             # <<<<<<<<<<<<<<
  *     return PyPetscScalar_AsPetscScalar(value)
  * 
  */
@@ -4555,8 +4938,72 @@ static CYTHON_INLINE PetscScalar __pyx_f_8slepc4py_5SLEPc_asScalar(PyObject *__p
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.asScalar", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = ((PetscScalar)(-1.0));
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "SLEPc/SLEPc.pyx":111
+ *     return PyPetscScalar_AsPetscScalar(value)
+ * 
+ * cdef inline object toComplex(PetscScalar rvalue, PetscScalar ivalue):             # <<<<<<<<<<<<<<
+ *     return complex(toScalar(rvalue),toScalar(ivalue))
+ * 
+ */
+
+static CYTHON_INLINE PyObject *__pyx_f_8slepc4py_5SLEPc_toComplex(PetscScalar __pyx_v_rvalue, PetscScalar __pyx_v_ivalue) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannySetupContext("toComplex", 0);
+
+  /* "SLEPc/SLEPc.pyx":112
+ * 
+ * cdef inline object toComplex(PetscScalar rvalue, PetscScalar ivalue):
+ *     return complex(toScalar(rvalue),toScalar(ivalue))             # <<<<<<<<<<<<<<
+ * 
+ * # -----------------------------------------------------------------------------
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_rvalue); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 112, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_ivalue); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 112, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 112, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyComplex_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 112, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "SLEPc/SLEPc.pyx":111
+ *     return PyPetscScalar_AsPetscScalar(value)
+ * 
+ * cdef inline object toComplex(PetscScalar rvalue, PetscScalar ivalue):             # <<<<<<<<<<<<<<
+ *     return complex(toScalar(rvalue),toScalar(ivalue))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("slepc4py.SLEPc.toComplex", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4640,8 +5087,8 @@ static CYTHON_INLINE MPI_Comm __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT(void)
   return __pyx_r;
 }
 
-/* "SLEPc/slepcsys.pxi":51
- *     int SlepcInitializeCalled
+/* "SLEPc/slepcsys.pxi":48
+ *     PetscBool SlepcInitializeCalled
  * 
  * cdef inline PetscMatStructure matstructure(object structure) \             # <<<<<<<<<<<<<<
  *     except <PetscMatStructure>(-1):
@@ -4656,7 +5103,7 @@ static CYTHON_INLINE MatStructure __pyx_f_8slepc4py_5SLEPc_matstructure(PyObject
   MatStructure __pyx_t_3;
   __Pyx_RefNannySetupContext("matstructure", 0);
 
-  /* "SLEPc/slepcsys.pxi":53
+  /* "SLEPc/slepcsys.pxi":50
  * cdef inline PetscMatStructure matstructure(object structure) \
  *     except <PetscMatStructure>(-1):
  *     if   structure is None:  return MAT_DIFFERENT_NONZERO_PATTERN             # <<<<<<<<<<<<<<
@@ -4670,7 +5117,7 @@ static CYTHON_INLINE MatStructure __pyx_f_8slepc4py_5SLEPc_matstructure(PyObject
     goto __pyx_L0;
   }
 
-  /* "SLEPc/slepcsys.pxi":54
+  /* "SLEPc/slepcsys.pxi":51
  *     except <PetscMatStructure>(-1):
  *     if   structure is None:  return MAT_DIFFERENT_NONZERO_PATTERN
  *     elif structure is False: return MAT_DIFFERENT_NONZERO_PATTERN             # <<<<<<<<<<<<<<
@@ -4684,7 +5131,7 @@ static CYTHON_INLINE MatStructure __pyx_f_8slepc4py_5SLEPc_matstructure(PyObject
     goto __pyx_L0;
   }
 
-  /* "SLEPc/slepcsys.pxi":55
+  /* "SLEPc/slepcsys.pxi":52
  *     if   structure is None:  return MAT_DIFFERENT_NONZERO_PATTERN
  *     elif structure is False: return MAT_DIFFERENT_NONZERO_PATTERN
  *     elif structure is True:  return MAT_SAME_NONZERO_PATTERN             # <<<<<<<<<<<<<<
@@ -4698,7 +5145,7 @@ static CYTHON_INLINE MatStructure __pyx_f_8slepc4py_5SLEPc_matstructure(PyObject
     goto __pyx_L0;
   }
 
-  /* "SLEPc/slepcsys.pxi":56
+  /* "SLEPc/slepcsys.pxi":53
  *     elif structure is False: return MAT_DIFFERENT_NONZERO_PATTERN
  *     elif structure is True:  return MAT_SAME_NONZERO_PATTERN
  *     else:                    return structure             # <<<<<<<<<<<<<<
@@ -4706,13 +5153,13 @@ static CYTHON_INLINE MatStructure __pyx_f_8slepc4py_5SLEPc_matstructure(PyObject
  * cdef inline int PetscINCREF(PetscObject *obj):
  */
   /*else*/ {
-    __pyx_t_3 = ((MatStructure)__Pyx_PyInt_As_MatStructure(__pyx_v_structure)); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 56, __pyx_L1_error)
+    __pyx_t_3 = ((MatStructure)__Pyx_PyInt_As_MatStructure(__pyx_v_structure)); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 53, __pyx_L1_error)
     __pyx_r = __pyx_t_3;
     goto __pyx_L0;
   }
 
-  /* "SLEPc/slepcsys.pxi":51
- *     int SlepcInitializeCalled
+  /* "SLEPc/slepcsys.pxi":48
+ *     PetscBool SlepcInitializeCalled
  * 
  * cdef inline PetscMatStructure matstructure(object structure) \             # <<<<<<<<<<<<<<
  *     except <PetscMatStructure>(-1):
@@ -4728,7 +5175,7 @@ static CYTHON_INLINE MatStructure __pyx_f_8slepc4py_5SLEPc_matstructure(PyObject
   return __pyx_r;
 }
 
-/* "SLEPc/slepcsys.pxi":58
+/* "SLEPc/slepcsys.pxi":55
  *     else:                    return structure
  * 
  * cdef inline int PetscINCREF(PetscObject *obj):             # <<<<<<<<<<<<<<
@@ -4742,7 +5189,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_PetscINCREF(PetscObject *__pyx
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("PetscINCREF", 0);
 
-  /* "SLEPc/slepcsys.pxi":59
+  /* "SLEPc/slepcsys.pxi":56
  * 
  * cdef inline int PetscINCREF(PetscObject *obj):
  *     if obj    == NULL: return 0             # <<<<<<<<<<<<<<
@@ -4755,7 +5202,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_PetscINCREF(PetscObject *__pyx
     goto __pyx_L0;
   }
 
-  /* "SLEPc/slepcsys.pxi":60
+  /* "SLEPc/slepcsys.pxi":57
  * cdef inline int PetscINCREF(PetscObject *obj):
  *     if obj    == NULL: return 0
  *     if obj[0] == NULL: return 0             # <<<<<<<<<<<<<<
@@ -4768,7 +5215,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_PetscINCREF(PetscObject *__pyx
     goto __pyx_L0;
   }
 
-  /* "SLEPc/slepcsys.pxi":61
+  /* "SLEPc/slepcsys.pxi":58
  *     if obj    == NULL: return 0
  *     if obj[0] == NULL: return 0
  *     return PetscObjectReference(obj[0])             # <<<<<<<<<<<<<<
@@ -4778,7 +5225,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_PetscINCREF(PetscObject *__pyx
   __pyx_r = PetscObjectReference((__pyx_v_obj[0]));
   goto __pyx_L0;
 
-  /* "SLEPc/slepcsys.pxi":58
+  /* "SLEPc/slepcsys.pxi":55
  *     else:                    return structure
  * 
  * cdef inline int PetscINCREF(PetscObject *obj):             # <<<<<<<<<<<<<<
@@ -4792,7 +5239,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_PetscINCREF(PetscObject *__pyx
   return __pyx_r;
 }
 
-/* "SLEPc/slepcsys.pxi":63
+/* "SLEPc/slepcsys.pxi":60
  *     return PetscObjectReference(obj[0])
  * 
  * cdef inline int SlepcCLEAR(PetscObject* obj):             # <<<<<<<<<<<<<<
@@ -4807,7 +5254,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(PetscObject *__pyx_
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("SlepcCLEAR", 0);
 
-  /* "SLEPc/slepcsys.pxi":64
+  /* "SLEPc/slepcsys.pxi":61
  * 
  * cdef inline int SlepcCLEAR(PetscObject* obj):
  *     if obj    == NULL: return 0             # <<<<<<<<<<<<<<
@@ -4820,7 +5267,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(PetscObject *__pyx_
     goto __pyx_L0;
   }
 
-  /* "SLEPc/slepcsys.pxi":65
+  /* "SLEPc/slepcsys.pxi":62
  * cdef inline int SlepcCLEAR(PetscObject* obj):
  *     if obj    == NULL: return 0
  *     if obj[0] == NULL: return 0             # <<<<<<<<<<<<<<
@@ -4833,7 +5280,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(PetscObject *__pyx_
     goto __pyx_L0;
   }
 
-  /* "SLEPc/slepcsys.pxi":67
+  /* "SLEPc/slepcsys.pxi":64
  *     if obj[0] == NULL: return 0
  *     cdef PetscObject tmp
  *     tmp = obj[0]; obj[0] = NULL             # <<<<<<<<<<<<<<
@@ -4843,17 +5290,17 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(PetscObject *__pyx_
   __pyx_v_tmp = (__pyx_v_obj[0]);
   (__pyx_v_obj[0]) = NULL;
 
-  /* "SLEPc/slepcsys.pxi":68
+  /* "SLEPc/slepcsys.pxi":65
  *     cdef PetscObject tmp
  *     tmp = obj[0]; obj[0] = NULL
  *     return PetscObjectDestroy(&tmp)             # <<<<<<<<<<<<<<
  * 
- * cdef extern from * nogil:
+ * cdef inline PetscViewer def_Viewer(Viewer viewer):
  */
   __pyx_r = PetscObjectDestroy((&__pyx_v_tmp));
   goto __pyx_L0;
 
-  /* "SLEPc/slepcsys.pxi":63
+  /* "SLEPc/slepcsys.pxi":60
  *     return PetscObjectReference(obj[0])
  * 
  * cdef inline int SlepcCLEAR(PetscObject* obj):             # <<<<<<<<<<<<<<
@@ -4867,6 +5314,47 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(PetscObject *__pyx_
   return __pyx_r;
 }
 
+/* "SLEPc/slepcsys.pxi":67
+ *     return PetscObjectDestroy(&tmp)
+ * 
+ * cdef inline PetscViewer def_Viewer(Viewer viewer):             # <<<<<<<<<<<<<<
+ *    return viewer.vwr if viewer is not None else <PetscViewer>NULL
+ */
+
+static CYTHON_INLINE PetscViewer __pyx_f_8slepc4py_5SLEPc_def_Viewer(struct PyPetscViewerObject *__pyx_v_viewer) {
+  PetscViewer __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PetscViewer __pyx_t_1;
+  int __pyx_t_2;
+  __Pyx_RefNannySetupContext("def_Viewer", 0);
+
+  /* "SLEPc/slepcsys.pxi":68
+ * 
+ * cdef inline PetscViewer def_Viewer(Viewer viewer):
+ *    return viewer.vwr if viewer is not None else <PetscViewer>NULL             # <<<<<<<<<<<<<<
+ */
+  __pyx_t_2 = (((PyObject *)__pyx_v_viewer) != Py_None);
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_viewer->vwr;
+  } else {
+    __pyx_t_1 = ((PetscViewer)NULL);
+  }
+  __pyx_r = __pyx_t_1;
+  goto __pyx_L0;
+
+  /* "SLEPc/slepcsys.pxi":67
+ *     return PetscObjectDestroy(&tmp)
+ * 
+ * cdef inline PetscViewer def_Viewer(Viewer viewer):             # <<<<<<<<<<<<<<
+ *    return viewer.vwr if viewer is not None else <PetscViewer>NULL
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 /* "SLEPc/slepcbv.pxi":73
  * 
  * 
@@ -4930,7 +5418,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_BV_Sizes(PyObject *__pyx_v_siz
  */
       if ((likely(PyTuple_CheckExact(__pyx_v_size))) || (PyList_CheckExact(__pyx_v_size))) {
         PyObject* sequence = __pyx_v_size;
-        #if CYTHON_COMPILING_IN_CPYTHON
+        #if !CYTHON_COMPILING_IN_PYPY
         Py_ssize_t size = Py_SIZE(sequence);
         #else
         Py_ssize_t size = PySequence_Size(sequence);
@@ -4940,7 +5428,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_BV_Sizes(PyObject *__pyx_v_siz
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
           __PYX_ERR(2, 82, __pyx_L3_error)
         }
-        #if CYTHON_COMPILING_IN_CPYTHON
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
         if (likely(PyTuple_CheckExact(sequence))) {
           __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
           __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
@@ -4961,20 +5449,20 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_BV_Sizes(PyObject *__pyx_v_siz
         __pyx_t_6 = PyObject_GetIter(__pyx_v_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 82, __pyx_L3_error)
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
-        index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L11_unpacking_failed;
+        index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L9_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_4);
-        index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L11_unpacking_failed;
+        index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L9_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_5);
         if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(2, 82, __pyx_L3_error)
         __pyx_t_7 = NULL;
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        goto __pyx_L12_unpacking_done;
-        __pyx_L11_unpacking_failed:;
+        goto __pyx_L10_unpacking_done;
+        __pyx_L9_unpacking_failed:;
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __pyx_t_7 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
         __PYX_ERR(2, 82, __pyx_L3_error)
-        __pyx_L12_unpacking_done:;
+        __pyx_L10_unpacking_done:;
       }
       __pyx_v_on = __pyx_t_4;
       __pyx_t_4 = 0;
@@ -4992,9 +5480,8 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_BV_Sizes(PyObject *__pyx_v_siz
     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    goto __pyx_L10_try_end;
+    goto __pyx_L8_try_end;
     __pyx_L3_error:;
-    __Pyx_PyThreadState_assign
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -5040,19 +5527,17 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_BV_Sizes(PyObject *__pyx_v_siz
  *         on, oN = size
  *     except (TypeError, ValueError):
  */
-    __Pyx_PyThreadState_assign
     __Pyx_XGIVEREF(__pyx_t_1);
     __Pyx_XGIVEREF(__pyx_t_2);
     __Pyx_XGIVEREF(__pyx_t_3);
     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
     goto __pyx_L1_error;
     __pyx_L4_exception_handled:;
-    __Pyx_PyThreadState_assign
     __Pyx_XGIVEREF(__pyx_t_1);
     __Pyx_XGIVEREF(__pyx_t_2);
     __Pyx_XGIVEREF(__pyx_t_3);
     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
-    __pyx_L10_try_end:;
+    __pyx_L8_try_end:;
   }
 
   /* "SLEPc/slepcbv.pxi":85
@@ -5065,7 +5550,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_BV_Sizes(PyObject *__pyx_v_siz
   __pyx_t_9 = (__pyx_v_on != Py_None);
   __pyx_t_10 = (__pyx_t_9 != 0);
   if (__pyx_t_10) {
-    __pyx_t_11 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_on); if (unlikely(__pyx_t_11 == -1L && PyErr_Occurred())) __PYX_ERR(2, 85, __pyx_L1_error)
+    __pyx_t_11 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_on); if (unlikely(__pyx_t_11 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(2, 85, __pyx_L1_error)
     __pyx_v_n = __pyx_t_11;
   }
 
@@ -5079,7 +5564,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_BV_Sizes(PyObject *__pyx_v_siz
   __pyx_t_10 = (__pyx_v_oN != Py_None);
   __pyx_t_9 = (__pyx_t_10 != 0);
   if (__pyx_t_9) {
-    __pyx_t_11 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_oN); if (unlikely(__pyx_t_11 == -1L && PyErr_Occurred())) __PYX_ERR(2, 86, __pyx_L1_error)
+    __pyx_t_11 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_oN); if (unlikely(__pyx_t_11 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(2, 86, __pyx_L1_error)
     __pyx_v_N = __pyx_t_11;
   }
 
@@ -5094,11 +5579,11 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_BV_Sizes(PyObject *__pyx_v_siz
   if (__pyx_t_10) {
   } else {
     __pyx_t_9 = __pyx_t_10;
-    goto __pyx_L18_bool_binop_done;
+    goto __pyx_L16_bool_binop_done;
   }
   __pyx_t_10 = ((__pyx_v_N == PETSC_DECIDE) != 0);
   __pyx_t_9 = __pyx_t_10;
-  __pyx_L18_bool_binop_done:;
+  __pyx_L16_bool_binop_done:;
   if (__pyx_t_9) {
     __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 87, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
@@ -5189,7 +5674,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_iarray_s(PyObject *__pyx_v_array, Pets
  *     cdef object mem = allocate(n*sizeof(PetscScalar),<void**>&a)
  */
   __pyx_v_i = 0;
-  __pyx_t_1 = PyObject_Length(__pyx_v_array); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(7, 48, __pyx_L1_error)
+  __pyx_t_1 = PyObject_Length(__pyx_v_array); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(7, 48, __pyx_L1_error)
   __pyx_v_n = __pyx_t_1;
 
   /* "SLEPc/slepcfn.pxi":49
@@ -5224,7 +5709,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_iarray_s(PyObject *__pyx_v_array, Pets
   for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
     __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_array, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 51, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 51, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_t_2); if (unlikely(__pyx_t_3 == ((PetscScalar)((PetscScalar)(-1.0))) && PyErr_Occurred())) __PYX_ERR(7, 51, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     (__pyx_v_a[__pyx_v_i]) = __pyx_t_3;
   }
@@ -5282,6 +5767,675 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_iarray_s(PyObject *__pyx_v_array, Pets
   return __pyx_r;
 }
 
+/* "SLEPc/slepceps.pxi":260
+ * # -----------------------------------------------------------------------------
+ * 
+ * cdef inline EPS ref_EPS(SlepcEPS eps):             # <<<<<<<<<<<<<<
+ *     cdef EPS ob = <EPS> EPS()
+ *     ob.eps = eps
+ */
+
+static CYTHON_INLINE struct PySlepcEPSObject *__pyx_f_8slepc4py_5SLEPc_ref_EPS(EPS __pyx_v_eps) {
+  struct PySlepcEPSObject *__pyx_v_ob = 0;
+  struct PySlepcEPSObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannySetupContext("ref_EPS", 0);
+
+  /* "SLEPc/slepceps.pxi":261
+ * 
+ * cdef inline EPS ref_EPS(SlepcEPS eps):
+ *     cdef EPS ob = <EPS> EPS()             # <<<<<<<<<<<<<<
+ *     ob.eps = eps
+ *     PetscINCREF(ob.obj)
+ */
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 261, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_t_1;
+  __Pyx_INCREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_ob = ((struct PySlepcEPSObject *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "SLEPc/slepceps.pxi":262
+ * cdef inline EPS ref_EPS(SlepcEPS eps):
+ *     cdef EPS ob = <EPS> EPS()
+ *     ob.eps = eps             # <<<<<<<<<<<<<<
+ *     PetscINCREF(ob.obj)
+ *     return ob
+ */
+  __pyx_v_ob->eps = __pyx_v_eps;
+
+  /* "SLEPc/slepceps.pxi":263
+ *     cdef EPS ob = <EPS> EPS()
+ *     ob.eps = eps
+ *     PetscINCREF(ob.obj)             # <<<<<<<<<<<<<<
+ *     return ob
+ * 
+ */
+  __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_ob->__pyx_base.obj);
+
+  /* "SLEPc/slepceps.pxi":264
+ *     ob.eps = eps
+ *     PetscINCREF(ob.obj)
+ *     return ob             # <<<<<<<<<<<<<<
+ * 
+ * # -----------------------------------------------------------------------------
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __Pyx_INCREF(((PyObject *)__pyx_v_ob));
+  __pyx_r = __pyx_v_ob;
+  goto __pyx_L0;
+
+  /* "SLEPc/slepceps.pxi":260
+ * # -----------------------------------------------------------------------------
+ * 
+ * cdef inline EPS ref_EPS(SlepcEPS eps):             # <<<<<<<<<<<<<<
+ *     cdef EPS ob = <EPS> EPS()
+ *     ob.eps = eps
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("slepc4py.SLEPc.ref_EPS", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_ob);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "SLEPc/slepceps.pxi":268
+ * # -----------------------------------------------------------------------------
+ * 
+ * cdef int EPS_Stopping(             # <<<<<<<<<<<<<<
+ *     SlepcEPS                eps,
+ *     PetscInt                its,
+ */
+
+static int __pyx_f_8slepc4py_5SLEPc_EPS_Stopping(EPS __pyx_v_eps, PetscInt __pyx_v_its, PetscInt __pyx_v_max_it, PetscInt __pyx_v_nconv, PetscInt __pyx_v_nev, EPSConvergedReason *__pyx_v_r, CYTHON_UNUSED void *__pyx_v_ctx) {
+  struct PySlepcEPSObject *__pyx_v_Eps = 0;
+  PyObject *__pyx_v_stopping = NULL;
+  PyObject *__pyx_v_args = NULL;
+  PyObject *__pyx_v_kargs = NULL;
+  PyObject *__pyx_v_reason = NULL;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *(*__pyx_t_6)(PyObject *);
+  int __pyx_t_7;
+  int __pyx_t_8;
+  EPSConvergedReason __pyx_t_9;
+  #ifdef WITH_THREAD
+  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+  #endif
+  __Pyx_RefNannySetupContext("EPS_Stopping", 0);
+
+  /* "SLEPc/slepceps.pxi":277
+ *     void                    *ctx,
+ *     ) except PETSC_ERR_PYTHON with gil:
+ *     cdef EPS Eps = ref_EPS(eps)             # <<<<<<<<<<<<<<
+ *     (stopping, args, kargs) = Eps.get_attr('__stopping__')
+ *     reason = stopping(Eps, toInt(its), toInt(max_it), toInt(nconv), toInt(nev), *args, **kargs)
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_f_8slepc4py_5SLEPc_ref_EPS(__pyx_v_eps)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 277, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_Eps = ((struct PySlepcEPSObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "SLEPc/slepceps.pxi":278
+ *     ) except PETSC_ERR_PYTHON with gil:
+ *     cdef EPS Eps = ref_EPS(eps)
+ *     (stopping, args, kargs) = Eps.get_attr('__stopping__')             # <<<<<<<<<<<<<<
+ *     reason = stopping(Eps, toInt(its), toInt(max_it), toInt(nconv), toInt(nev), *args, **kargs)
+ *     if   reason is None:  r[0] = EPS_CONVERGED_ITERATING
+ */
+  __pyx_t_1 = ((struct __pyx_vtabstruct_8slepc4py_5SLEPc_EPS *)__pyx_v_Eps->__pyx_base.__pyx_vtab)->__pyx_base.get_attr(((struct PyPetscObjectObject *)__pyx_v_Eps), ((char *)"__stopping__")); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 278, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
+    PyObject* sequence = __pyx_t_1;
+    #if !CYTHON_COMPILING_IN_PYPY
+    Py_ssize_t size = Py_SIZE(sequence);
+    #else
+    Py_ssize_t size = PySequence_Size(sequence);
+    #endif
+    if (unlikely(size != 3)) {
+      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      __PYX_ERR(3, 278, __pyx_L1_error)
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
+      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
+    } else {
+      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
+      __pyx_t_4 = PyList_GET_ITEM(sequence, 2); 
+    }
+    __Pyx_INCREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_t_4);
+    #else
+    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 278, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 278, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 278, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    #endif
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  } else {
+    Py_ssize_t index = -1;
+    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 278, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
+    index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_2);
+    index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_3);
+    index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_4);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(3, 278, __pyx_L1_error)
+    __pyx_t_6 = NULL;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L4_unpacking_done;
+    __pyx_L3_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_6 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    __PYX_ERR(3, 278, __pyx_L1_error)
+    __pyx_L4_unpacking_done:;
+  }
+  __pyx_v_stopping = __pyx_t_2;
+  __pyx_t_2 = 0;
+  __pyx_v_args = __pyx_t_3;
+  __pyx_t_3 = 0;
+  __pyx_v_kargs = __pyx_t_4;
+  __pyx_t_4 = 0;
+
+  /* "SLEPc/slepceps.pxi":279
+ *     cdef EPS Eps = ref_EPS(eps)
+ *     (stopping, args, kargs) = Eps.get_attr('__stopping__')
+ *     reason = stopping(Eps, toInt(its), toInt(max_it), toInt(nconv), toInt(nev), *args, **kargs)             # <<<<<<<<<<<<<<
+ *     if   reason is None:  r[0] = EPS_CONVERGED_ITERATING
+ *     elif reason is False: r[0] = EPS_CONVERGED_ITERATING
+ */
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_its); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 279, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_max_it); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 279, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_nconv); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 279, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_nev); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 279, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_5 = PyTuple_New(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 279, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_INCREF(((PyObject *)__pyx_v_Eps));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_Eps));
+  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_Eps));
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_t_2);
+  __pyx_t_1 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 279, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyNumber_Add(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 279, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (unlikely(__pyx_v_kargs == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
+    __PYX_ERR(3, 279, __pyx_L1_error)
+  }
+  if (likely(PyDict_CheckExact(__pyx_v_kargs))) {
+    __pyx_t_2 = PyDict_Copy(__pyx_v_kargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 279, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+  } else {
+    __pyx_t_2 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_kargs, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 279, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+  }
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_stopping, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 279, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_reason = __pyx_t_5;
+  __pyx_t_5 = 0;
+
+  /* "SLEPc/slepceps.pxi":280
+ *     (stopping, args, kargs) = Eps.get_attr('__stopping__')
+ *     reason = stopping(Eps, toInt(its), toInt(max_it), toInt(nconv), toInt(nev), *args, **kargs)
+ *     if   reason is None:  r[0] = EPS_CONVERGED_ITERATING             # <<<<<<<<<<<<<<
+ *     elif reason is False: r[0] = EPS_CONVERGED_ITERATING
+ *     elif reason is True:  r[0] = EPS_CONVERGED_USER
+ */
+  __pyx_t_7 = (__pyx_v_reason == Py_None);
+  __pyx_t_8 = (__pyx_t_7 != 0);
+  if (__pyx_t_8) {
+    (__pyx_v_r[0]) = EPS_CONVERGED_ITERATING;
+    goto __pyx_L5;
+  }
+
+  /* "SLEPc/slepceps.pxi":281
+ *     reason = stopping(Eps, toInt(its), toInt(max_it), toInt(nconv), toInt(nev), *args, **kargs)
+ *     if   reason is None:  r[0] = EPS_CONVERGED_ITERATING
+ *     elif reason is False: r[0] = EPS_CONVERGED_ITERATING             # <<<<<<<<<<<<<<
+ *     elif reason is True:  r[0] = EPS_CONVERGED_USER
+ *     else:                 r[0] = reason
+ */
+  __pyx_t_8 = (__pyx_v_reason == Py_False);
+  __pyx_t_7 = (__pyx_t_8 != 0);
+  if (__pyx_t_7) {
+    (__pyx_v_r[0]) = EPS_CONVERGED_ITERATING;
+    goto __pyx_L5;
+  }
+
+  /* "SLEPc/slepceps.pxi":282
+ *     if   reason is None:  r[0] = EPS_CONVERGED_ITERATING
+ *     elif reason is False: r[0] = EPS_CONVERGED_ITERATING
+ *     elif reason is True:  r[0] = EPS_CONVERGED_USER             # <<<<<<<<<<<<<<
+ *     else:                 r[0] = reason
+ * 
+ */
+  __pyx_t_7 = (__pyx_v_reason == Py_True);
+  __pyx_t_8 = (__pyx_t_7 != 0);
+  if (__pyx_t_8) {
+    (__pyx_v_r[0]) = EPS_CONVERGED_USER;
+    goto __pyx_L5;
+  }
+
+  /* "SLEPc/slepceps.pxi":283
+ *     elif reason is False: r[0] = EPS_CONVERGED_ITERATING
+ *     elif reason is True:  r[0] = EPS_CONVERGED_USER
+ *     else:                 r[0] = reason             # <<<<<<<<<<<<<<
+ * 
+ * # -----------------------------------------------------------------------------
+ */
+  /*else*/ {
+    __pyx_t_9 = ((EPSConvergedReason)__Pyx_PyInt_As_EPSConvergedReason(__pyx_v_reason)); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 283, __pyx_L1_error)
+    (__pyx_v_r[0]) = __pyx_t_9;
+  }
+  __pyx_L5:;
+
+  /* "SLEPc/slepceps.pxi":268
+ * # -----------------------------------------------------------------------------
+ * 
+ * cdef int EPS_Stopping(             # <<<<<<<<<<<<<<
+ *     SlepcEPS                eps,
+ *     PetscInt                its,
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("slepc4py.SLEPc.EPS_Stopping", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = (-1);
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_Eps);
+  __Pyx_XDECREF(__pyx_v_stopping);
+  __Pyx_XDECREF(__pyx_v_args);
+  __Pyx_XDECREF(__pyx_v_kargs);
+  __Pyx_XDECREF(__pyx_v_reason);
+  __Pyx_RefNannyFinishContext();
+  #ifdef WITH_THREAD
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
+  #endif
+  return __pyx_r;
+}
+
+/* "SLEPc/slepceps.pxi":287
+ * # -----------------------------------------------------------------------------
+ * 
+ * cdef int EPS_Monitor(             # <<<<<<<<<<<<<<
+ *     SlepcEPS    eps,
+ *     PetscInt    its,
+ */
+
+static int __pyx_f_8slepc4py_5SLEPc_EPS_Monitor(EPS __pyx_v_eps, PetscInt __pyx_v_its, PetscInt __pyx_v_nconv, PetscScalar *__pyx_v_eigr, PetscScalar *__pyx_v_eigi, PetscReal *__pyx_v_errest, PetscInt __pyx_v_nest, CYTHON_UNUSED void *__pyx_v_ctx) {
+  struct PySlepcEPSObject *__pyx_v_Eps = 0;
+  PyObject *__pyx_v_monitorlist = 0;
+  PyObject *__pyx_v_eig = 0;
+  PyObject *__pyx_v_err = 0;
+  PyObject *__pyx_v_monitor = NULL;
+  PyObject *__pyx_v_args = NULL;
+  PyObject *__pyx_v_kargs = NULL;
+  PetscInt __pyx_v_i;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PetscInt __pyx_t_4;
+  PetscInt __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  Py_ssize_t __pyx_t_7;
+  PyObject *(*__pyx_t_8)(PyObject *);
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *(*__pyx_t_13)(PyObject *);
+  #ifdef WITH_THREAD
+  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+  #endif
+  __Pyx_RefNannySetupContext("EPS_Monitor", 0);
+
+  /* "SLEPc/slepceps.pxi":297
+ *     void        *ctx,
+ *     ) except PETSC_ERR_PYTHON with gil:
+ *     cdef EPS Eps = ref_EPS(eps)             # <<<<<<<<<<<<<<
+ *     cdef object monitorlist = Eps.get_attr('__monitor__')
+ *     if monitorlist is None: return 0
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_f_8slepc4py_5SLEPc_ref_EPS(__pyx_v_eps)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 297, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_Eps = ((struct PySlepcEPSObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "SLEPc/slepceps.pxi":298
+ *     ) except PETSC_ERR_PYTHON with gil:
+ *     cdef EPS Eps = ref_EPS(eps)
+ *     cdef object monitorlist = Eps.get_attr('__monitor__')             # <<<<<<<<<<<<<<
+ *     if monitorlist is None: return 0
+ *     cdef object eig = [toComplex(eigr[i], eigi[i]) for i in range(nest)]
+ */
+  __pyx_t_1 = ((struct __pyx_vtabstruct_8slepc4py_5SLEPc_EPS *)__pyx_v_Eps->__pyx_base.__pyx_vtab)->__pyx_base.get_attr(((struct PyPetscObjectObject *)__pyx_v_Eps), ((char *)"__monitor__")); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 298, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_monitorlist = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "SLEPc/slepceps.pxi":299
+ *     cdef EPS Eps = ref_EPS(eps)
+ *     cdef object monitorlist = Eps.get_attr('__monitor__')
+ *     if monitorlist is None: return 0             # <<<<<<<<<<<<<<
+ *     cdef object eig = [toComplex(eigr[i], eigi[i]) for i in range(nest)]
+ *     cdef object err = [toReal(errest[i]) for i in range(nest)]
+ */
+  __pyx_t_2 = (__pyx_v_monitorlist == Py_None);
+  __pyx_t_3 = (__pyx_t_2 != 0);
+  if (__pyx_t_3) {
+    __pyx_r = 0;
+    goto __pyx_L0;
+  }
+
+  /* "SLEPc/slepceps.pxi":300
+ *     cdef object monitorlist = Eps.get_attr('__monitor__')
+ *     if monitorlist is None: return 0
+ *     cdef object eig = [toComplex(eigr[i], eigi[i]) for i in range(nest)]             # <<<<<<<<<<<<<<
+ *     cdef object err = [toReal(errest[i]) for i in range(nest)]
+ *     for (monitor, args, kargs) in monitorlist:
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 300, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = __pyx_v_nest;
+  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
+    __pyx_v_i = __pyx_t_5;
+    __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_toComplex((__pyx_v_eigr[__pyx_v_i]), (__pyx_v_eigi[__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 300, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(3, 300, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  }
+  __pyx_v_eig = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "SLEPc/slepceps.pxi":301
+ *     if monitorlist is None: return 0
+ *     cdef object eig = [toComplex(eigr[i], eigi[i]) for i in range(nest)]
+ *     cdef object err = [toReal(errest[i]) for i in range(nest)]             # <<<<<<<<<<<<<<
+ *     for (monitor, args, kargs) in monitorlist:
+ *         monitor(Eps, toInt(its), toInt(nconv), eig, err, *args, **kargs)
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 301, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = __pyx_v_nest;
+  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
+    __pyx_v_i = __pyx_t_5;
+    __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_toReal((__pyx_v_errest[__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 301, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(3, 301, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  }
+  __pyx_v_err = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "SLEPc/slepceps.pxi":302
+ *     cdef object eig = [toComplex(eigr[i], eigi[i]) for i in range(nest)]
+ *     cdef object err = [toReal(errest[i]) for i in range(nest)]
+ *     for (monitor, args, kargs) in monitorlist:             # <<<<<<<<<<<<<<
+ *         monitor(Eps, toInt(its), toInt(nconv), eig, err, *args, **kargs)
+ *     return 0
+ */
+  if (likely(PyList_CheckExact(__pyx_v_monitorlist)) || PyTuple_CheckExact(__pyx_v_monitorlist)) {
+    __pyx_t_1 = __pyx_v_monitorlist; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0;
+    __pyx_t_8 = NULL;
+  } else {
+    __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_monitorlist); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 302, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 302, __pyx_L1_error)
+  }
+  for (;;) {
+    if (likely(!__pyx_t_8)) {
+      if (likely(PyList_CheckExact(__pyx_t_1))) {
+        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_1)) break;
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(3, 302, __pyx_L1_error)
+        #else
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 302, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        #endif
+      } else {
+        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(3, 302, __pyx_L1_error)
+        #else
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 302, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        #endif
+      }
+    } else {
+      __pyx_t_6 = __pyx_t_8(__pyx_t_1);
+      if (unlikely(!__pyx_t_6)) {
+        PyObject* exc_type = PyErr_Occurred();
+        if (exc_type) {
+          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+          else __PYX_ERR(3, 302, __pyx_L1_error)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_6);
+    }
+    if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
+      PyObject* sequence = __pyx_t_6;
+      #if !CYTHON_COMPILING_IN_PYPY
+      Py_ssize_t size = Py_SIZE(sequence);
+      #else
+      Py_ssize_t size = PySequence_Size(sequence);
+      #endif
+      if (unlikely(size != 3)) {
+        if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+        __PYX_ERR(3, 302, __pyx_L1_error)
+      }
+      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+      if (likely(PyTuple_CheckExact(sequence))) {
+        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); 
+        __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); 
+        __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2); 
+      } else {
+        __pyx_t_9 = PyList_GET_ITEM(sequence, 0); 
+        __pyx_t_10 = PyList_GET_ITEM(sequence, 1); 
+        __pyx_t_11 = PyList_GET_ITEM(sequence, 2); 
+      }
+      __Pyx_INCREF(__pyx_t_9);
+      __Pyx_INCREF(__pyx_t_10);
+      __Pyx_INCREF(__pyx_t_11);
+      #else
+      __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 302, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_9);
+      __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 302, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_10);
+      __pyx_t_11 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 302, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      #endif
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    } else {
+      Py_ssize_t index = -1;
+      __pyx_t_12 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(3, 302, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_12);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext;
+      index = 0; __pyx_t_9 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_9)) goto __pyx_L10_unpacking_failed;
+      __Pyx_GOTREF(__pyx_t_9);
+      index = 1; __pyx_t_10 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_10)) goto __pyx_L10_unpacking_failed;
+      __Pyx_GOTREF(__pyx_t_10);
+      index = 2; __pyx_t_11 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_11)) goto __pyx_L10_unpacking_failed;
+      __Pyx_GOTREF(__pyx_t_11);
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 3) < 0) __PYX_ERR(3, 302, __pyx_L1_error)
+      __pyx_t_13 = NULL;
+      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+      goto __pyx_L11_unpacking_done;
+      __pyx_L10_unpacking_failed:;
+      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+      __pyx_t_13 = NULL;
+      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+      __PYX_ERR(3, 302, __pyx_L1_error)
+      __pyx_L11_unpacking_done:;
+    }
+    __Pyx_XDECREF_SET(__pyx_v_monitor, __pyx_t_9);
+    __pyx_t_9 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_args, __pyx_t_10);
+    __pyx_t_10 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_kargs, __pyx_t_11);
+    __pyx_t_11 = 0;
+
+    /* "SLEPc/slepceps.pxi":303
+ *     cdef object err = [toReal(errest[i]) for i in range(nest)]
+ *     for (monitor, args, kargs) in monitorlist:
+ *         monitor(Eps, toInt(its), toInt(nconv), eig, err, *args, **kargs)             # <<<<<<<<<<<<<<
+ *     return 0
+ * 
+ */
+    __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_its); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 303, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_11 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_nconv); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 303, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __pyx_t_10 = PyTuple_New(5); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 303, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
+    __Pyx_INCREF(((PyObject *)__pyx_v_Eps));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_Eps));
+    PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_v_Eps));
+    __Pyx_GIVEREF(__pyx_t_6);
+    PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+    __Pyx_GIVEREF(__pyx_t_11);
+    PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_11);
+    __Pyx_INCREF(__pyx_v_eig);
+    __Pyx_GIVEREF(__pyx_v_eig);
+    PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_v_eig);
+    __Pyx_INCREF(__pyx_v_err);
+    __Pyx_GIVEREF(__pyx_v_err);
+    PyTuple_SET_ITEM(__pyx_t_10, 4, __pyx_v_err);
+    __pyx_t_6 = 0;
+    __pyx_t_11 = 0;
+    __pyx_t_11 = __Pyx_PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 303, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __pyx_t_6 = PyNumber_Add(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 303, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    if (unlikely(__pyx_v_kargs == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
+      __PYX_ERR(3, 303, __pyx_L1_error)
+    }
+    if (likely(PyDict_CheckExact(__pyx_v_kargs))) {
+      __pyx_t_11 = PyDict_Copy(__pyx_v_kargs); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 303, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+    } else {
+      __pyx_t_11 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_kargs, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 303, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+    }
+    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_v_monitor, __pyx_t_6, __pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 303, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+
+    /* "SLEPc/slepceps.pxi":302
+ *     cdef object eig = [toComplex(eigr[i], eigi[i]) for i in range(nest)]
+ *     cdef object err = [toReal(errest[i]) for i in range(nest)]
+ *     for (monitor, args, kargs) in monitorlist:             # <<<<<<<<<<<<<<
+ *         monitor(Eps, toInt(its), toInt(nconv), eig, err, *args, **kargs)
+ *     return 0
+ */
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "SLEPc/slepceps.pxi":304
+ *     for (monitor, args, kargs) in monitorlist:
+ *         monitor(Eps, toInt(its), toInt(nconv), eig, err, *args, **kargs)
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * # -----------------------------------------------------------------------------
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  /* "SLEPc/slepceps.pxi":287
+ * # -----------------------------------------------------------------------------
+ * 
+ * cdef int EPS_Monitor(             # <<<<<<<<<<<<<<
+ *     SlepcEPS    eps,
+ *     PetscInt    its,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_AddTraceback("slepc4py.SLEPc.EPS_Monitor", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = (-1);
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_Eps);
+  __Pyx_XDECREF(__pyx_v_monitorlist);
+  __Pyx_XDECREF(__pyx_v_eig);
+  __Pyx_XDECREF(__pyx_v_err);
+  __Pyx_XDECREF(__pyx_v_monitor);
+  __Pyx_XDECREF(__pyx_v_args);
+  __Pyx_XDECREF(__pyx_v_kargs);
+  __Pyx_RefNannyFinishContext();
+  #ifdef WITH_THREAD
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
+  #endif
+  return __pyx_r;
+}
+
 /* "SLEPc/slepcnep.pxi":116
  * # -----------------------------------------------------------------------------
  * 
@@ -5474,7 +6628,7 @@ static int __pyx_f_8slepc4py_5SLEPc_NEP_Function(NEP __pyx_v_nep, PetscScalar __
   PyObject *(*__pyx_t_6)(PyObject *);
   Mat __pyx_t_7;
   #ifdef WITH_THREAD
-  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
+  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("NEP_Function", 0);
 
@@ -5525,7 +6679,7 @@ static int __pyx_f_8slepc4py_5SLEPc_NEP_Function(NEP __pyx_v_nep, PetscScalar __
   __Pyx_GOTREF(__pyx_t_1);
   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
     PyObject* sequence = __pyx_t_1;
-    #if CYTHON_COMPILING_IN_CPYTHON
+    #if !CYTHON_COMPILING_IN_PYPY
     Py_ssize_t size = Py_SIZE(sequence);
     #else
     Py_ssize_t size = PySequence_Size(sequence);
@@ -5535,7 +6689,7 @@ static int __pyx_f_8slepc4py_5SLEPc_NEP_Function(NEP __pyx_v_nep, PetscScalar __
       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
       __PYX_ERR(8, 142, __pyx_L1_error)
     }
-    #if CYTHON_COMPILING_IN_CPYTHON
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
     if (likely(PyTuple_CheckExact(sequence))) {
       __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
       __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
@@ -5610,7 +6764,7 @@ static int __pyx_f_8slepc4py_5SLEPc_NEP_Function(NEP __pyx_v_nep, PetscScalar __
   __Pyx_GIVEREF(((PyObject *)__pyx_v_Bmat));
   PyTuple_SET_ITEM(__pyx_t_4, 3, ((PyObject *)__pyx_v_Bmat));
   __pyx_t_1 = 0;
-  __pyx_t_1 = PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 143, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 143, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 143, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -5705,7 +6859,7 @@ static int __pyx_f_8slepc4py_5SLEPc_NEP_Function(NEP __pyx_v_nep, PetscScalar __
   __Pyx_XDECREF(__pyx_v_retv);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
-  PyGILState_Release(__pyx_gilstate_save);
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
   return __pyx_r;
 }
@@ -5736,7 +6890,7 @@ static int __pyx_f_8slepc4py_5SLEPc_NEP_Jacobian(NEP __pyx_v_nep, PetscScalar __
   PyObject *(*__pyx_t_6)(PyObject *);
   Mat __pyx_t_7;
   #ifdef WITH_THREAD
-  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
+  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("NEP_Jacobian", 0);
 
@@ -5775,7 +6929,7 @@ static int __pyx_f_8slepc4py_5SLEPc_NEP_Jacobian(NEP __pyx_v_nep, PetscScalar __
   __Pyx_GOTREF(__pyx_t_1);
   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
     PyObject* sequence = __pyx_t_1;
-    #if CYTHON_COMPILING_IN_CPYTHON
+    #if !CYTHON_COMPILING_IN_PYPY
     Py_ssize_t size = Py_SIZE(sequence);
     #else
     Py_ssize_t size = PySequence_Size(sequence);
@@ -5785,7 +6939,7 @@ static int __pyx_f_8slepc4py_5SLEPc_NEP_Jacobian(NEP __pyx_v_nep, PetscScalar __
       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
       __PYX_ERR(8, 159, __pyx_L1_error)
     }
-    #if CYTHON_COMPILING_IN_CPYTHON
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
     if (likely(PyTuple_CheckExact(sequence))) {
       __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
       __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
@@ -5857,7 +7011,7 @@ static int __pyx_f_8slepc4py_5SLEPc_NEP_Jacobian(NEP __pyx_v_nep, PetscScalar __
   __Pyx_GIVEREF(((PyObject *)__pyx_v_Jmat));
   PyTuple_SET_ITEM(__pyx_t_4, 2, ((PyObject *)__pyx_v_Jmat));
   __pyx_t_1 = 0;
-  __pyx_t_1 = PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 160, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 160, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 160, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -5937,7 +7091,7 @@ static int __pyx_f_8slepc4py_5SLEPc_NEP_Jacobian(NEP __pyx_v_nep, PetscScalar __
   __Pyx_XDECREF(__pyx_v_retv);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
-  PyGILState_Release(__pyx_gilstate_save);
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
   return __pyx_r;
 }
@@ -5945,16 +7099,15 @@ static int __pyx_f_8slepc4py_5SLEPc_NEP_Jacobian(NEP __pyx_v_nep, PetscScalar __
 /* "SLEPc/Sys.pyx":6
  * 
  *     @classmethod
- *     def getVersion(cls, patch=False, devel=False,             # <<<<<<<<<<<<<<
- *                    date=False, author=False):
- *         cdef int cmajor = SLEPC_VERSION_MAJOR
+ *     def getVersion(cls, devel=False, date=False, author=False):             # <<<<<<<<<<<<<<
+ *         cdef char cversion[256]
+ *         cdef PetscInt major=0, minor=0, micro=0, release=0
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_8slepc4py_5SLEPc_3Sys_1getVersion(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3Sys_getVersion[] = "Sys.getVersion(type cls, patch=False, devel=False, date=False, author=False)";
+static char __pyx_doc_8slepc4py_5SLEPc_3Sys_getVersion[] = "Sys.getVersion(type cls, devel=False, date=False, author=False)";
 static PyObject *__pyx_pw_8slepc4py_5SLEPc_3Sys_1getVersion(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_patch = 0;
   PyObject *__pyx_v_devel = 0;
   PyObject *__pyx_v_date = 0;
   PyObject *__pyx_v_author = 0;
@@ -5962,28 +7115,21 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3Sys_1getVersion(PyObject *__pyx_v_cl
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getVersion (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_patch,&__pyx_n_s_devel,&__pyx_n_s_date,&__pyx_n_s_author,0};
-    PyObject* values[4] = {0,0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_devel,&__pyx_n_s_date,&__pyx_n_s_author,0};
+    PyObject* values[3] = {0,0,0};
     values[0] = ((PyObject *)Py_False);
     values[1] = ((PyObject *)Py_False);
-
-    /* "SLEPc/Sys.pyx":7
- *     @classmethod
- *     def getVersion(cls, patch=False, devel=False,
- *                    date=False, author=False):             # <<<<<<<<<<<<<<
- *         cdef int cmajor = SLEPC_VERSION_MAJOR
- *         cdef int cminor = SLEPC_VERSION_MINOR
- */
     values[2] = ((PyObject *)Py_False);
-    values[3] = ((PyObject *)Py_False);
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -5991,23 +7137,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3Sys_1getVersion(PyObject *__pyx_v_cl
       switch (pos_args) {
         case  0:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_patch);
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_devel);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_devel);
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_date);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_date);
-          if (value) { values[2] = value; kw_args--; }
-        }
-        case  3:
-        if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_author);
-          if (value) { values[3] = value; kw_args--; }
+          if (value) { values[2] = value; kw_args--; }
         }
       }
       if (unlikely(kw_args > 0)) {
@@ -6015,450 +7158,480 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3Sys_1getVersion(PyObject *__pyx_v_cl
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_patch = values[0];
-    __pyx_v_devel = values[1];
-    __pyx_v_date = values[2];
-    __pyx_v_author = values[3];
+    __pyx_v_devel = values[0];
+    __pyx_v_date = values[1];
+    __pyx_v_author = values[2];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getVersion", 0, 0, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 6, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getVersion", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 6, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.Sys.getVersion", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3Sys_getVersion(((PyTypeObject*)__pyx_v_cls), __pyx_v_patch, __pyx_v_devel, __pyx_v_date, __pyx_v_author);
-
-  /* "SLEPc/Sys.pyx":6
- * 
- *     @classmethod
- *     def getVersion(cls, patch=False, devel=False,             # <<<<<<<<<<<<<<
- *                    date=False, author=False):
- *         cdef int cmajor = SLEPC_VERSION_MAJOR
- */
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3Sys_getVersion(((PyTypeObject*)__pyx_v_cls), __pyx_v_devel, __pyx_v_date, __pyx_v_author);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3Sys_getVersion(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_patch, PyObject *__pyx_v_devel, PyObject *__pyx_v_date, PyObject *__pyx_v_author) {
-  int __pyx_v_cmajor;
-  int __pyx_v_cminor;
-  int __pyx_v_cmicro;
-  int __pyx_v_cpatch;
-  int __pyx_v_cdevel;
-  const char *__pyx_v_cdate;
-  const char *__pyx_v_cauthorinfo;
-  PyObject *__pyx_v_version = NULL;
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3Sys_getVersion(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_devel, PyObject *__pyx_v_date, PyObject *__pyx_v_author) {
+  char __pyx_v_cversion[0x100];
+  PetscInt __pyx_v_major;
+  PetscInt __pyx_v_minor;
+  PetscInt __pyx_v_micro;
+  PetscInt __pyx_v_release;
   PyObject *__pyx_v_out = NULL;
+  PyObject *__pyx_v_version = NULL;
+  PyObject *__pyx_v_vstr = NULL;
   PyObject *__pyx_v_s = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  int __pyx_t_5;
+  PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   int __pyx_t_7;
-  Py_ssize_t __pyx_t_8;
-  PyObject *(*__pyx_t_9)(PyObject *);
-  PyObject *__pyx_t_10 = NULL;
+  int __pyx_t_8;
+  Py_ssize_t __pyx_t_9;
+  PyObject *(*__pyx_t_10)(PyObject *);
+  PyObject *__pyx_t_11 = NULL;
   __Pyx_RefNannySetupContext("getVersion", 0);
+  __Pyx_INCREF(__pyx_v_date);
   __Pyx_INCREF(__pyx_v_author);
 
   /* "SLEPc/Sys.pyx":8
- *     def getVersion(cls, patch=False, devel=False,
- *                    date=False, author=False):
- *         cdef int cmajor = SLEPC_VERSION_MAJOR             # <<<<<<<<<<<<<<
- *         cdef int cminor = SLEPC_VERSION_MINOR
- *         cdef int cmicro = SLEPC_VERSION_SUBMINOR
+ *     def getVersion(cls, devel=False, date=False, author=False):
+ *         cdef char cversion[256]
+ *         cdef PetscInt major=0, minor=0, micro=0, release=0             # <<<<<<<<<<<<<<
+ *         CHKERR( SlepcGetVersion(cversion, sizeof(cversion)) )
+ *         CHKERR( SlepcGetVersionNumber(&major, &minor, &micro, &release) )
  */
-  __pyx_v_cmajor = SLEPC_VERSION_MAJOR;
+  __pyx_v_major = 0;
+  __pyx_v_minor = 0;
+  __pyx_v_micro = 0;
+  __pyx_v_release = 0;
 
   /* "SLEPc/Sys.pyx":9
- *                    date=False, author=False):
- *         cdef int cmajor = SLEPC_VERSION_MAJOR
- *         cdef int cminor = SLEPC_VERSION_MINOR             # <<<<<<<<<<<<<<
- *         cdef int cmicro = SLEPC_VERSION_SUBMINOR
- *         cdef int cpatch = SLEPC_VERSION_PATCH
+ *         cdef char cversion[256]
+ *         cdef PetscInt major=0, minor=0, micro=0, release=0
+ *         CHKERR( SlepcGetVersion(cversion, sizeof(cversion)) )             # <<<<<<<<<<<<<<
+ *         CHKERR( SlepcGetVersionNumber(&major, &minor, &micro, &release) )
+ *         out = version = (toInt(major), toInt(minor), toInt(micro))
  */
-  __pyx_v_cminor = SLEPC_VERSION_MINOR;
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SlepcGetVersion(__pyx_v_cversion, (sizeof(__pyx_v_cversion)))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 9, __pyx_L1_error)
 
   /* "SLEPc/Sys.pyx":10
- *         cdef int cmajor = SLEPC_VERSION_MAJOR
- *         cdef int cminor = SLEPC_VERSION_MINOR
- *         cdef int cmicro = SLEPC_VERSION_SUBMINOR             # <<<<<<<<<<<<<<
- *         cdef int cpatch = SLEPC_VERSION_PATCH
- *         cdef int cdevel = not SLEPC_VERSION_RELEASE
+ *         cdef PetscInt major=0, minor=0, micro=0, release=0
+ *         CHKERR( SlepcGetVersion(cversion, sizeof(cversion)) )
+ *         CHKERR( SlepcGetVersionNumber(&major, &minor, &micro, &release) )             # <<<<<<<<<<<<<<
+ *         out = version = (toInt(major), toInt(minor), toInt(micro))
+ *         if devel or date or author:
  */
-  __pyx_v_cmicro = SLEPC_VERSION_SUBMINOR;
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SlepcGetVersionNumber((&__pyx_v_major), (&__pyx_v_minor), (&__pyx_v_micro), (&__pyx_v_release))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 10, __pyx_L1_error)
 
   /* "SLEPc/Sys.pyx":11
- *         cdef int cminor = SLEPC_VERSION_MINOR
- *         cdef int cmicro = SLEPC_VERSION_SUBMINOR
- *         cdef int cpatch = SLEPC_VERSION_PATCH             # <<<<<<<<<<<<<<
- *         cdef int cdevel = not SLEPC_VERSION_RELEASE
- *         cdef const_char *cdate       = SLEPC_VERSION_DATE
+ *         CHKERR( SlepcGetVersion(cversion, sizeof(cversion)) )
+ *         CHKERR( SlepcGetVersionNumber(&major, &minor, &micro, &release) )
+ *         out = version = (toInt(major), toInt(minor), toInt(micro))             # <<<<<<<<<<<<<<
+ *         if devel or date or author:
+ *             out = [version]
  */
-  __pyx_v_cpatch = SLEPC_VERSION_PATCH;
-
-  /* "SLEPc/Sys.pyx":12
- *         cdef int cmicro = SLEPC_VERSION_SUBMINOR
- *         cdef int cpatch = SLEPC_VERSION_PATCH
- *         cdef int cdevel = not SLEPC_VERSION_RELEASE             # <<<<<<<<<<<<<<
- *         cdef const_char *cdate       = SLEPC_VERSION_DATE
- *         cdef const_char *cauthorinfo = SLEPC_AUTHOR_INFO
- */
-  __pyx_v_cdevel = (!SLEPC_VERSION_RELEASE);
-
-  /* "SLEPc/Sys.pyx":13
- *         cdef int cpatch = SLEPC_VERSION_PATCH
- *         cdef int cdevel = not SLEPC_VERSION_RELEASE
- *         cdef const_char *cdate       = SLEPC_VERSION_DATE             # <<<<<<<<<<<<<<
- *         cdef const_char *cauthorinfo = SLEPC_AUTHOR_INFO
- *         version = (cmajor, cminor, cmicro)
- */
-  __pyx_v_cdate = SLEPC_VERSION_DATE;
-
-  /* "SLEPc/Sys.pyx":14
- *         cdef int cdevel = not SLEPC_VERSION_RELEASE
- *         cdef const_char *cdate       = SLEPC_VERSION_DATE
- *         cdef const_char *cauthorinfo = SLEPC_AUTHOR_INFO             # <<<<<<<<<<<<<<
- *         version = (cmajor, cminor, cmicro)
- *         out = version
- */
-  __pyx_v_cauthorinfo = SLEPC_AUTHOR_INFO;
-
-  /* "SLEPc/Sys.pyx":15
- *         cdef const_char *cdate       = SLEPC_VERSION_DATE
- *         cdef const_char *cauthorinfo = SLEPC_AUTHOR_INFO
- *         version = (cmajor, cminor, cmicro)             # <<<<<<<<<<<<<<
- *         out = version
- *         if patch or devel or date or author:
- */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_cmajor); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 15, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_cminor); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 15, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_major); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 11, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_cmicro); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 15, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_minor); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 11, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 15, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_micro); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 11, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 11, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_3);
-  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
-  __pyx_t_1 = 0;
+  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
   __pyx_t_2 = 0;
   __pyx_t_3 = 0;
-  __pyx_v_version = __pyx_t_4;
   __pyx_t_4 = 0;
+  __Pyx_INCREF(__pyx_t_5);
+  __pyx_v_out = __pyx_t_5;
+  __Pyx_INCREF(__pyx_t_5);
+  __pyx_v_version = __pyx_t_5;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "SLEPc/Sys.pyx":16
- *         cdef const_char *cauthorinfo = SLEPC_AUTHOR_INFO
- *         version = (cmajor, cminor, cmicro)
- *         out = version             # <<<<<<<<<<<<<<
- *         if patch or devel or date or author:
- *             out = [version]
- */
-  __Pyx_INCREF(__pyx_v_version);
-  __pyx_v_out = __pyx_v_version;
-
-  /* "SLEPc/Sys.pyx":17
- *         version = (cmajor, cminor, cmicro)
- *         out = version
- *         if patch or devel or date or author:             # <<<<<<<<<<<<<<
+  /* "SLEPc/Sys.pyx":12
+ *         CHKERR( SlepcGetVersionNumber(&major, &minor, &micro, &release) )
+ *         out = version = (toInt(major), toInt(minor), toInt(micro))
+ *         if devel or date or author:             # <<<<<<<<<<<<<<
  *             out = [version]
- *             if patch:
+ *             if devel:
  */
-  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_patch); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 17, __pyx_L1_error)
-  if (!__pyx_t_6) {
-  } else {
-    __pyx_t_5 = __pyx_t_6;
-    goto __pyx_L4_bool_binop_done;
-  }
-  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_devel); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 17, __pyx_L1_error)
-  if (!__pyx_t_6) {
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_devel); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(9, 12, __pyx_L1_error)
+  if (!__pyx_t_7) {
   } else {
-    __pyx_t_5 = __pyx_t_6;
+    __pyx_t_6 = __pyx_t_7;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_date); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 17, __pyx_L1_error)
-  if (!__pyx_t_6) {
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_date); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(9, 12, __pyx_L1_error)
+  if (!__pyx_t_7) {
   } else {
-    __pyx_t_5 = __pyx_t_6;
+    __pyx_t_6 = __pyx_t_7;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_author); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 17, __pyx_L1_error)
-  __pyx_t_5 = __pyx_t_6;
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_author); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(9, 12, __pyx_L1_error)
+  __pyx_t_6 = __pyx_t_7;
   __pyx_L4_bool_binop_done:;
-  if (__pyx_t_5) {
+  if (__pyx_t_6) {
 
-    /* "SLEPc/Sys.pyx":18
- *         out = version
- *         if patch or devel or date or author:
+    /* "SLEPc/Sys.pyx":13
+ *         out = version = (toInt(major), toInt(minor), toInt(micro))
+ *         if devel or date or author:
  *             out = [version]             # <<<<<<<<<<<<<<
- *             if patch:
- *                 out.append(cpatch)
+ *             if devel:
+ *                 out.append(not <bint>release)
  */
-    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 18, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 13, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_v_version);
     __Pyx_GIVEREF(__pyx_v_version);
-    PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_version);
-    __Pyx_DECREF_SET(__pyx_v_out, __pyx_t_4);
-    __pyx_t_4 = 0;
+    PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_version);
+    __Pyx_DECREF_SET(__pyx_v_out, __pyx_t_5);
+    __pyx_t_5 = 0;
 
-    /* "SLEPc/Sys.pyx":19
- *         if patch or devel or date or author:
+    /* "SLEPc/Sys.pyx":14
+ *         if devel or date or author:
  *             out = [version]
- *             if patch:             # <<<<<<<<<<<<<<
- *                 out.append(cpatch)
- *             if devel:
+ *             if devel:             # <<<<<<<<<<<<<<
+ *                 out.append(not <bint>release)
+ *             if date:
  */
-    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_patch); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 19, __pyx_L1_error)
-    if (__pyx_t_5) {
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_devel); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 14, __pyx_L1_error)
+    if (__pyx_t_6) {
 
-      /* "SLEPc/Sys.pyx":20
+      /* "SLEPc/Sys.pyx":15
  *             out = [version]
- *             if patch:
- *                 out.append(cpatch)             # <<<<<<<<<<<<<<
  *             if devel:
- *                 out.append(<bint>cdevel)
+ *                 out.append(not <bint>release)             # <<<<<<<<<<<<<<
+ *             if date:
+ *                 vstr = bytes2str(cversion)
  */
-      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_cpatch); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 20, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_t_4); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(9, 20, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_5 = __Pyx_PyBool_FromLong((!((__pyx_v_release != 0) != 0))); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 15, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_8 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_t_5); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(9, 15, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "SLEPc/Sys.pyx":19
- *         if patch or devel or date or author:
+      /* "SLEPc/Sys.pyx":14
+ *         if devel or date or author:
  *             out = [version]
- *             if patch:             # <<<<<<<<<<<<<<
- *                 out.append(cpatch)
- *             if devel:
- */
-    }
-
-    /* "SLEPc/Sys.pyx":21
- *             if patch:
- *                 out.append(cpatch)
  *             if devel:             # <<<<<<<<<<<<<<
- *                 out.append(<bint>cdevel)
+ *                 out.append(not <bint>release)
  *             if date:
  */
-    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_devel); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 21, __pyx_L1_error)
-    if (__pyx_t_5) {
+    }
 
-      /* "SLEPc/Sys.pyx":22
- *                 out.append(cpatch)
+    /* "SLEPc/Sys.pyx":16
  *             if devel:
- *                 out.append(<bint>cdevel)             # <<<<<<<<<<<<<<
+ *                 out.append(not <bint>release)
+ *             if date:             # <<<<<<<<<<<<<<
+ *                 vstr = bytes2str(cversion)
+ *                 if release != 0:
+ */
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_date); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 16, __pyx_L1_error)
+    if (__pyx_t_6) {
+
+      /* "SLEPc/Sys.pyx":17
+ *                 out.append(not <bint>release)
  *             if date:
- *                 out.append(bytes2str(cdate))
+ *                 vstr = bytes2str(cversion)             # <<<<<<<<<<<<<<
+ *                 if release != 0:
+ *                     date = vstr.split(",", 1)[-1].strip()
  */
-      __pyx_t_4 = __Pyx_PyBool_FromLong((__pyx_v_cdevel != 0)); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 22, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_t_4); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(9, 22, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_cversion); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 17, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_v_vstr = __pyx_t_5;
+      __pyx_t_5 = 0;
 
-      /* "SLEPc/Sys.pyx":21
- *             if patch:
- *                 out.append(cpatch)
- *             if devel:             # <<<<<<<<<<<<<<
- *                 out.append(<bint>cdevel)
+      /* "SLEPc/Sys.pyx":18
+ *             if date:
+ *                 vstr = bytes2str(cversion)
+ *                 if release != 0:             # <<<<<<<<<<<<<<
+ *                     date = vstr.split(",", 1)[-1].strip()
+ *                 else:
+ */
+      __pyx_t_6 = ((__pyx_v_release != 0) != 0);
+      if (__pyx_t_6) {
+
+        /* "SLEPc/Sys.pyx":19
+ *                 vstr = bytes2str(cversion)
+ *                 if release != 0:
+ *                     date = vstr.split(",", 1)[-1].strip()             # <<<<<<<<<<<<<<
+ *                 else:
+ *                     date = vstr.split("GIT Date:")[-1].strip()
+ */
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_vstr, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 19, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 19, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 19, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 19, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_t_4 = NULL;
+        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+          if (likely(__pyx_t_4)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+            __Pyx_INCREF(__pyx_t_4);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_3, function);
+          }
+        }
+        if (__pyx_t_4) {
+          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 19, __pyx_L1_error)
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        } else {
+          __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 19, __pyx_L1_error)
+        }
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_DECREF_SET(__pyx_v_date, __pyx_t_5);
+        __pyx_t_5 = 0;
+
+        /* "SLEPc/Sys.pyx":18
  *             if date:
+ *                 vstr = bytes2str(cversion)
+ *                 if release != 0:             # <<<<<<<<<<<<<<
+ *                     date = vstr.split(",", 1)[-1].strip()
+ *                 else:
  */
-    }
+        goto __pyx_L9;
+      }
 
-    /* "SLEPc/Sys.pyx":23
- *             if devel:
- *                 out.append(<bint>cdevel)
- *             if date:             # <<<<<<<<<<<<<<
- *                 out.append(bytes2str(cdate))
+      /* "SLEPc/Sys.pyx":21
+ *                     date = vstr.split(",", 1)[-1].strip()
+ *                 else:
+ *                     date = vstr.split("GIT Date:")[-1].strip()             # <<<<<<<<<<<<<<
+ *                 out.append(date)
  *             if author:
  */
-    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_date); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 23, __pyx_L1_error)
-    if (__pyx_t_5) {
+      /*else*/ {
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_vstr, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 21, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 21, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 21, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_strip); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 21, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_t_3 = NULL;
+        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+          if (likely(__pyx_t_3)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+            __Pyx_INCREF(__pyx_t_3);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_4, function);
+          }
+        }
+        if (__pyx_t_3) {
+          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 21, __pyx_L1_error)
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        } else {
+          __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 21, __pyx_L1_error)
+        }
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_DECREF_SET(__pyx_v_date, __pyx_t_5);
+        __pyx_t_5 = 0;
+      }
+      __pyx_L9:;
 
-      /* "SLEPc/Sys.pyx":24
- *                 out.append(<bint>cdevel)
- *             if date:
- *                 out.append(bytes2str(cdate))             # <<<<<<<<<<<<<<
+      /* "SLEPc/Sys.pyx":22
+ *                 else:
+ *                     date = vstr.split("GIT Date:")[-1].strip()
+ *                 out.append(date)             # <<<<<<<<<<<<<<
  *             if author:
- *                 author = bytes2str(cauthorinfo).split('\n')
+ *                 author = bytes2str(SLEPC_AUTHOR_INFO).split('\n')
  */
-      __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_cdate); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 24, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_t_4); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(9, 24, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_8 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_v_date); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(9, 22, __pyx_L1_error)
 
-      /* "SLEPc/Sys.pyx":23
+      /* "SLEPc/Sys.pyx":16
  *             if devel:
- *                 out.append(<bint>cdevel)
+ *                 out.append(not <bint>release)
  *             if date:             # <<<<<<<<<<<<<<
- *                 out.append(bytes2str(cdate))
- *             if author:
+ *                 vstr = bytes2str(cversion)
+ *                 if release != 0:
  */
     }
 
-    /* "SLEPc/Sys.pyx":25
- *             if date:
- *                 out.append(bytes2str(cdate))
+    /* "SLEPc/Sys.pyx":23
+ *                     date = vstr.split("GIT Date:")[-1].strip()
+ *                 out.append(date)
  *             if author:             # <<<<<<<<<<<<<<
- *                 author = bytes2str(cauthorinfo).split('\n')
- *                 author = [s.strip() for s in author if s]
+ *                 author = bytes2str(SLEPC_AUTHOR_INFO).split('\n')
+ *                 author = tuple([s.strip() for s in author if s])
  */
-    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_author); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 25, __pyx_L1_error)
-    if (__pyx_t_5) {
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_author); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 23, __pyx_L1_error)
+    if (__pyx_t_6) {
 
-      /* "SLEPc/Sys.pyx":26
- *                 out.append(bytes2str(cdate))
+      /* "SLEPc/Sys.pyx":24
+ *                 out.append(date)
  *             if author:
- *                 author = bytes2str(cauthorinfo).split('\n')             # <<<<<<<<<<<<<<
- *                 author = [s.strip() for s in author if s]
+ *                 author = bytes2str(SLEPC_AUTHOR_INFO).split('\n')             # <<<<<<<<<<<<<<
+ *                 author = tuple([s.strip() for s in author if s])
  *                 out.append(author)
  */
-      __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_cauthorinfo); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 26, __pyx_L1_error)
+      __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_bytes2str(SLEPC_AUTHOR_INFO); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 24, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 24, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 26, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 24, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 26, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_DECREF_SET(__pyx_v_author, __pyx_t_4);
-      __pyx_t_4 = 0;
+      __Pyx_DECREF_SET(__pyx_v_author, __pyx_t_5);
+      __pyx_t_5 = 0;
 
-      /* "SLEPc/Sys.pyx":27
+      /* "SLEPc/Sys.pyx":25
  *             if author:
- *                 author = bytes2str(cauthorinfo).split('\n')
- *                 author = [s.strip() for s in author if s]             # <<<<<<<<<<<<<<
+ *                 author = bytes2str(SLEPC_AUTHOR_INFO).split('\n')
+ *                 author = tuple([s.strip() for s in author if s])             # <<<<<<<<<<<<<<
  *                 out.append(author)
  *         return tuple(out)
  */
-      __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 27, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 25, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
       if (likely(PyList_CheckExact(__pyx_v_author)) || PyTuple_CheckExact(__pyx_v_author)) {
-        __pyx_t_3 = __pyx_v_author; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0;
-        __pyx_t_9 = NULL;
+        __pyx_t_4 = __pyx_v_author; __Pyx_INCREF(__pyx_t_4); __pyx_t_9 = 0;
+        __pyx_t_10 = NULL;
       } else {
-        __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_author); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 27, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 27, __pyx_L1_error)
+        __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_author); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 25, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 25, __pyx_L1_error)
       }
       for (;;) {
-        if (likely(!__pyx_t_9)) {
-          if (likely(PyList_CheckExact(__pyx_t_3))) {
-            if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break;
-            #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 27, __pyx_L1_error)
+        if (likely(!__pyx_t_10)) {
+          if (likely(PyList_CheckExact(__pyx_t_4))) {
+            if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_4)) break;
+            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+            __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_3); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(9, 25, __pyx_L1_error)
             #else
-            __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 27, __pyx_L1_error)
-            __Pyx_GOTREF(__pyx_t_2);
+            __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 25, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_3);
             #endif
           } else {
-            if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
-            #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(9, 27, __pyx_L1_error)
+            if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
+            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+            __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_3); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(9, 25, __pyx_L1_error)
             #else
-            __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 27, __pyx_L1_error)
-            __Pyx_GOTREF(__pyx_t_2);
+            __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 25, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_3);
             #endif
           }
         } else {
-          __pyx_t_2 = __pyx_t_9(__pyx_t_3);
-          if (unlikely(!__pyx_t_2)) {
+          __pyx_t_3 = __pyx_t_10(__pyx_t_4);
+          if (unlikely(!__pyx_t_3)) {
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
-              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else __PYX_ERR(9, 27, __pyx_L1_error)
+              if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+              else __PYX_ERR(9, 25, __pyx_L1_error)
             }
             break;
           }
-          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_GOTREF(__pyx_t_3);
         }
-        __Pyx_XDECREF_SET(__pyx_v_s, __pyx_t_2);
-        __pyx_t_2 = 0;
-        __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_s); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(9, 27, __pyx_L1_error)
-        if (__pyx_t_5) {
-          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_strip); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 27, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_1);
-          __pyx_t_10 = NULL;
-          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
-            __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_1);
-            if (likely(__pyx_t_10)) {
-              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-              __Pyx_INCREF(__pyx_t_10);
+        __Pyx_XDECREF_SET(__pyx_v_s, __pyx_t_3);
+        __pyx_t_3 = 0;
+        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_s); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 25, __pyx_L1_error)
+        if (__pyx_t_6) {
+          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_strip); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 25, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_11 = NULL;
+          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+            __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2);
+            if (likely(__pyx_t_11)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+              __Pyx_INCREF(__pyx_t_11);
               __Pyx_INCREF(function);
-              __Pyx_DECREF_SET(__pyx_t_1, function);
+              __Pyx_DECREF_SET(__pyx_t_2, function);
             }
           }
-          if (__pyx_t_10) {
-            __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 27, __pyx_L1_error)
-            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (__pyx_t_11) {
+            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 25, __pyx_L1_error)
+            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
           } else {
-            __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 27, __pyx_L1_error)
+            __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 25, __pyx_L1_error)
           }
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_2))) __PYX_ERR(9, 27, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_3))) __PYX_ERR(9, 25, __pyx_L1_error)
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         }
       }
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 25, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF_SET(__pyx_v_author, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "SLEPc/Sys.pyx":28
- *                 author = bytes2str(cauthorinfo).split('\n')
- *                 author = [s.strip() for s in author if s]
+      /* "SLEPc/Sys.pyx":26
+ *                 author = bytes2str(SLEPC_AUTHOR_INFO).split('\n')
+ *                 author = tuple([s.strip() for s in author if s])
  *                 out.append(author)             # <<<<<<<<<<<<<<
  *         return tuple(out)
  * 
  */
-      __pyx_t_7 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_v_author); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(9, 28, __pyx_L1_error)
+      __pyx_t_8 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_v_author); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(9, 26, __pyx_L1_error)
 
-      /* "SLEPc/Sys.pyx":25
- *             if date:
- *                 out.append(bytes2str(cdate))
+      /* "SLEPc/Sys.pyx":23
+ *                     date = vstr.split("GIT Date:")[-1].strip()
+ *                 out.append(date)
  *             if author:             # <<<<<<<<<<<<<<
- *                 author = bytes2str(cauthorinfo).split('\n')
- *                 author = [s.strip() for s in author if s]
+ *                 author = bytes2str(SLEPC_AUTHOR_INFO).split('\n')
+ *                 author = tuple([s.strip() for s in author if s])
  */
     }
 
-    /* "SLEPc/Sys.pyx":17
- *         version = (cmajor, cminor, cmicro)
- *         out = version
- *         if patch or devel or date or author:             # <<<<<<<<<<<<<<
+    /* "SLEPc/Sys.pyx":12
+ *         CHKERR( SlepcGetVersionNumber(&major, &minor, &micro, &release) )
+ *         out = version = (toInt(major), toInt(minor), toInt(micro))
+ *         if devel or date or author:             # <<<<<<<<<<<<<<
  *             out = [version]
- *             if patch:
+ *             if devel:
  */
   }
 
-  /* "SLEPc/Sys.pyx":29
- *                 author = [s.strip() for s in author if s]
+  /* "SLEPc/Sys.pyx":27
+ *                 author = tuple([s.strip() for s in author if s])
  *                 out.append(author)
  *         return tuple(out)             # <<<<<<<<<<<<<<
  * 
  *     @classmethod
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PySequence_Tuple(__pyx_v_out); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 29, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_out); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 27, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_r = __pyx_t_4;
   __pyx_t_4 = 0;
@@ -6467,36 +7640,38 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3Sys_getVersion(CYTHON_UNUSED PyTypeO
   /* "SLEPc/Sys.pyx":6
  * 
  *     @classmethod
- *     def getVersion(cls, patch=False, devel=False,             # <<<<<<<<<<<<<<
- *                    date=False, author=False):
- *         cdef int cmajor = SLEPC_VERSION_MAJOR
+ *     def getVersion(cls, devel=False, date=False, author=False):             # <<<<<<<<<<<<<<
+ *         cdef char cversion[256]
+ *         cdef PetscInt major=0, minor=0, micro=0, release=0
  */
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_11);
   __Pyx_AddTraceback("slepc4py.SLEPc.Sys.getVersion", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_version);
   __Pyx_XDECREF(__pyx_v_out);
+  __Pyx_XDECREF(__pyx_v_version);
+  __Pyx_XDECREF(__pyx_v_vstr);
   __Pyx_XDECREF(__pyx_v_s);
+  __Pyx_XDECREF(__pyx_v_date);
   __Pyx_XDECREF(__pyx_v_author);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "SLEPc/Sys.pyx":32
+/* "SLEPc/Sys.pyx":30
  * 
  *     @classmethod
  *     def getVersionInfo(cls):             # <<<<<<<<<<<<<<
- *         cdef int cmajor = SLEPC_VERSION_MAJOR
- *         cdef int cminor = SLEPC_VERSION_MINOR
+ *         version, dev, date, author = cls.getVersion(True, True, True)
+ *         return dict(major      = version[0],
  */
 
 /* Python wrapper */
@@ -6516,296 +7691,203 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3Sys_3getVersionInfo(PyObject *__pyx_
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3Sys_2getVersionInfo(CYTHON_UNUSED PyTypeObject *__pyx_v_cls) {
-  int __pyx_v_cmajor;
-  int __pyx_v_cminor;
-  int __pyx_v_cmicro;
-  int __pyx_v_cpatch;
-  int __pyx_v_crelease;
-  const char *__pyx_v_cdate;
-  const char *__pyx_v_cauthorinfo;
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3Sys_2getVersionInfo(PyTypeObject *__pyx_v_cls) {
+  PyObject *__pyx_v_version = NULL;
+  PyObject *__pyx_v_dev = NULL;
+  PyObject *__pyx_v_date = NULL;
   PyObject *__pyx_v_author = NULL;
-  PyObject *__pyx_v_s = NULL;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  Py_ssize_t __pyx_t_3;
-  PyObject *(*__pyx_t_4)(PyObject *);
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
-  int __pyx_t_6;
-  PyObject *__pyx_t_7 = NULL;
-  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *(*__pyx_t_7)(PyObject *);
+  int __pyx_t_8;
   __Pyx_RefNannySetupContext("getVersionInfo", 0);
 
-  /* "SLEPc/Sys.pyx":33
+  /* "SLEPc/Sys.pyx":31
  *     @classmethod
  *     def getVersionInfo(cls):
- *         cdef int cmajor = SLEPC_VERSION_MAJOR             # <<<<<<<<<<<<<<
- *         cdef int cminor = SLEPC_VERSION_MINOR
- *         cdef int cmicro = SLEPC_VERSION_SUBMINOR
- */
-  __pyx_v_cmajor = SLEPC_VERSION_MAJOR;
-
-  /* "SLEPc/Sys.pyx":34
- *     def getVersionInfo(cls):
- *         cdef int cmajor = SLEPC_VERSION_MAJOR
- *         cdef int cminor = SLEPC_VERSION_MINOR             # <<<<<<<<<<<<<<
- *         cdef int cmicro = SLEPC_VERSION_SUBMINOR
- *         cdef int cpatch = SLEPC_VERSION_PATCH
+ *         version, dev, date, author = cls.getVersion(True, True, True)             # <<<<<<<<<<<<<<
+ *         return dict(major      = version[0],
+ *                     minor      = version[1],
  */
-  __pyx_v_cminor = SLEPC_VERSION_MINOR;
-
-  /* "SLEPc/Sys.pyx":35
- *         cdef int cmajor = SLEPC_VERSION_MAJOR
- *         cdef int cminor = SLEPC_VERSION_MINOR
- *         cdef int cmicro = SLEPC_VERSION_SUBMINOR             # <<<<<<<<<<<<<<
- *         cdef int cpatch = SLEPC_VERSION_PATCH
- *         cdef int crelease = SLEPC_VERSION_RELEASE
- */
-  __pyx_v_cmicro = SLEPC_VERSION_SUBMINOR;
-
-  /* "SLEPc/Sys.pyx":36
- *         cdef int cminor = SLEPC_VERSION_MINOR
- *         cdef int cmicro = SLEPC_VERSION_SUBMINOR
- *         cdef int cpatch = SLEPC_VERSION_PATCH             # <<<<<<<<<<<<<<
- *         cdef int crelease = SLEPC_VERSION_RELEASE
- *         cdef const_char *cdate       = SLEPC_VERSION_DATE
- */
-  __pyx_v_cpatch = SLEPC_VERSION_PATCH;
-
-  /* "SLEPc/Sys.pyx":37
- *         cdef int cmicro = SLEPC_VERSION_SUBMINOR
- *         cdef int cpatch = SLEPC_VERSION_PATCH
- *         cdef int crelease = SLEPC_VERSION_RELEASE             # <<<<<<<<<<<<<<
- *         cdef const_char *cdate       = SLEPC_VERSION_DATE
- *         cdef const_char *cauthorinfo = SLEPC_AUTHOR_INFO
- */
-  __pyx_v_crelease = SLEPC_VERSION_RELEASE;
-
-  /* "SLEPc/Sys.pyx":38
- *         cdef int cpatch = SLEPC_VERSION_PATCH
- *         cdef int crelease = SLEPC_VERSION_RELEASE
- *         cdef const_char *cdate       = SLEPC_VERSION_DATE             # <<<<<<<<<<<<<<
- *         cdef const_char *cauthorinfo = SLEPC_AUTHOR_INFO
- *         author = bytes2str(cauthorinfo).split('\n')
- */
-  __pyx_v_cdate = SLEPC_VERSION_DATE;
-
-  /* "SLEPc/Sys.pyx":39
- *         cdef int crelease = SLEPC_VERSION_RELEASE
- *         cdef const_char *cdate       = SLEPC_VERSION_DATE
- *         cdef const_char *cauthorinfo = SLEPC_AUTHOR_INFO             # <<<<<<<<<<<<<<
- *         author = bytes2str(cauthorinfo).split('\n')
- *         author = [s.strip() for s in author if s]
- */
-  __pyx_v_cauthorinfo = SLEPC_AUTHOR_INFO;
-
-  /* "SLEPc/Sys.pyx":40
- *         cdef const_char *cdate       = SLEPC_VERSION_DATE
- *         cdef const_char *cauthorinfo = SLEPC_AUTHOR_INFO
- *         author = bytes2str(cauthorinfo).split('\n')             # <<<<<<<<<<<<<<
- *         author = [s.strip() for s in author if s]
- *         return dict(major      = cmajor,
- */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_cauthorinfo); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 40, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cls), __pyx_n_s_getVersion); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 31, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 40, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 31, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 40, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_v_author = __pyx_t_1;
-  __pyx_t_1 = 0;
-
-  /* "SLEPc/Sys.pyx":41
- *         cdef const_char *cauthorinfo = SLEPC_AUTHOR_INFO
- *         author = bytes2str(cauthorinfo).split('\n')
- *         author = [s.strip() for s in author if s]             # <<<<<<<<<<<<<<
- *         return dict(major      = cmajor,
- *                     minor      = cminor,
- */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 41, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (likely(PyList_CheckExact(__pyx_v_author)) || PyTuple_CheckExact(__pyx_v_author)) {
-    __pyx_t_2 = __pyx_v_author; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
-    __pyx_t_4 = NULL;
-  } else {
-    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_author); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 41, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 41, __pyx_L1_error)
-  }
-  for (;;) {
-    if (likely(!__pyx_t_4)) {
-      if (likely(PyList_CheckExact(__pyx_t_2))) {
-        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
-        #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(9, 41, __pyx_L1_error)
-        #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 41, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_5);
-        #endif
-      } else {
-        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
-        #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(9, 41, __pyx_L1_error)
-        #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 41, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_5);
-        #endif
-      }
+  if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
+    PyObject* sequence = __pyx_t_2;
+    #if !CYTHON_COMPILING_IN_PYPY
+    Py_ssize_t size = Py_SIZE(sequence);
+    #else
+    Py_ssize_t size = PySequence_Size(sequence);
+    #endif
+    if (unlikely(size != 4)) {
+      if (size > 4) __Pyx_RaiseTooManyValuesError(4);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      __PYX_ERR(9, 31, __pyx_L1_error)
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
+      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
+      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 3); 
     } else {
-      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
-      if (unlikely(!__pyx_t_5)) {
-        PyObject* exc_type = PyErr_Occurred();
-        if (exc_type) {
-          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(9, 41, __pyx_L1_error)
-        }
-        break;
-      }
-      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
+      __pyx_t_4 = PyList_GET_ITEM(sequence, 2); 
+      __pyx_t_5 = PyList_GET_ITEM(sequence, 3); 
     }
-    __Pyx_XDECREF_SET(__pyx_v_s, __pyx_t_5);
-    __pyx_t_5 = 0;
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_s); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(9, 41, __pyx_L1_error)
-    if (__pyx_t_6) {
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_strip); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 41, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
-        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
-        if (likely(__pyx_t_8)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
-          __Pyx_INCREF(__pyx_t_8);
-          __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_7, function);
-        }
-      }
-      if (__pyx_t_8) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 41, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      } else {
-        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 41, __pyx_L1_error)
+    __Pyx_INCREF(__pyx_t_1);
+    __Pyx_INCREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_t_4);
+    __Pyx_INCREF(__pyx_t_5);
+    #else
+    {
+      Py_ssize_t i;
+      PyObject** temps[4] = {&__pyx_t_1,&__pyx_t_3,&__pyx_t_4,&__pyx_t_5};
+      for (i=0; i < 4; i++) {
+        PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(9, 31, __pyx_L1_error)
+        __Pyx_GOTREF(item);
+        *(temps[i]) = item;
       }
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(9, 41, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     }
+    #endif
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    Py_ssize_t index = -1;
+    PyObject** temps[4] = {&__pyx_t_1,&__pyx_t_3,&__pyx_t_4,&__pyx_t_5};
+    __pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 31, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
+    for (index=0; index < 4; index++) {
+      PyObject* item = __pyx_t_7(__pyx_t_6); if (unlikely(!item)) goto __pyx_L3_unpacking_failed;
+      __Pyx_GOTREF(item);
+      *(temps[index]) = item;
+    }
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 4) < 0) __PYX_ERR(9, 31, __pyx_L1_error)
+    __pyx_t_7 = NULL;
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    goto __pyx_L4_unpacking_done;
+    __pyx_L3_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_7 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    __PYX_ERR(9, 31, __pyx_L1_error)
+    __pyx_L4_unpacking_done:;
   }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF_SET(__pyx_v_author, __pyx_t_1);
+  __pyx_v_version = __pyx_t_1;
   __pyx_t_1 = 0;
+  __pyx_v_dev = __pyx_t_3;
+  __pyx_t_3 = 0;
+  __pyx_v_date = __pyx_t_4;
+  __pyx_t_4 = 0;
+  __pyx_v_author = __pyx_t_5;
+  __pyx_t_5 = 0;
 
-  /* "SLEPc/Sys.pyx":42
- *         author = bytes2str(cauthorinfo).split('\n')
- *         author = [s.strip() for s in author if s]
- *         return dict(major      = cmajor,             # <<<<<<<<<<<<<<
- *                     minor      = cminor,
- *                     subminor   = cmicro,
+  /* "SLEPc/Sys.pyx":32
+ *     def getVersionInfo(cls):
+ *         version, dev, date, author = cls.getVersion(True, True, True)
+ *         return dict(major      = version[0],             # <<<<<<<<<<<<<<
+ *                     minor      = version[1],
+ *                     subminor   = version[2],
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 42, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_cmajor); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 42, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 32, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_major, __pyx_t_2) < 0) __PYX_ERR(9, 42, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "SLEPc/Sys.pyx":43
- *         author = [s.strip() for s in author if s]
- *         return dict(major      = cmajor,
- *                     minor      = cminor,             # <<<<<<<<<<<<<<
- *                     subminor   = cmicro,
- *                     patch      = cpatch,
- */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_cminor); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 43, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_minor, __pyx_t_2) < 0) __PYX_ERR(9, 42, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_version, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 32, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_major, __pyx_t_5) < 0) __PYX_ERR(9, 32, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "SLEPc/Sys.pyx":44
- *         return dict(major      = cmajor,
- *                     minor      = cminor,
- *                     subminor   = cmicro,             # <<<<<<<<<<<<<<
- *                     patch      = cpatch,
- *                     release    = <bint>crelease,
+  /* "SLEPc/Sys.pyx":33
+ *         version, dev, date, author = cls.getVersion(True, True, True)
+ *         return dict(major      = version[0],
+ *                     minor      = version[1],             # <<<<<<<<<<<<<<
+ *                     subminor   = version[2],
+ *                     release    = not dev,
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_cmicro); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 44, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_subminor, __pyx_t_2) < 0) __PYX_ERR(9, 42, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_version, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_minor, __pyx_t_5) < 0) __PYX_ERR(9, 32, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "SLEPc/Sys.pyx":45
- *                     minor      = cminor,
- *                     subminor   = cmicro,
- *                     patch      = cpatch,             # <<<<<<<<<<<<<<
- *                     release    = <bint>crelease,
- *                     date       = bytes2str(cdate),
+  /* "SLEPc/Sys.pyx":34
+ *         return dict(major      = version[0],
+ *                     minor      = version[1],
+ *                     subminor   = version[2],             # <<<<<<<<<<<<<<
+ *                     release    = not dev,
+ *                     date       = date,
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_cpatch); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 45, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_patch, __pyx_t_2) < 0) __PYX_ERR(9, 42, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_version, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_subminor, __pyx_t_5) < 0) __PYX_ERR(9, 32, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "SLEPc/Sys.pyx":46
- *                     subminor   = cmicro,
- *                     patch      = cpatch,
- *                     release    = <bint>crelease,             # <<<<<<<<<<<<<<
- *                     date       = bytes2str(cdate),
+  /* "SLEPc/Sys.pyx":35
+ *                     minor      = version[1],
+ *                     subminor   = version[2],
+ *                     release    = not dev,             # <<<<<<<<<<<<<<
+ *                     date       = date,
  *                     authorinfo = author)
  */
-  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_crelease != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 46, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_release, __pyx_t_2) < 0) __PYX_ERR(9, 42, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_dev); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(9, 35, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyBool_FromLong((!__pyx_t_8)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_release, __pyx_t_5) < 0) __PYX_ERR(9, 32, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "SLEPc/Sys.pyx":47
- *                     patch      = cpatch,
- *                     release    = <bint>crelease,
- *                     date       = bytes2str(cdate),             # <<<<<<<<<<<<<<
+  /* "SLEPc/Sys.pyx":36
+ *                     subminor   = version[2],
+ *                     release    = not dev,
+ *                     date       = date,             # <<<<<<<<<<<<<<
  *                     authorinfo = author)
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_cdate); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 47, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_date, __pyx_t_2) < 0) __PYX_ERR(9, 42, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_date, __pyx_v_date) < 0) __PYX_ERR(9, 32, __pyx_L1_error)
 
-  /* "SLEPc/Sys.pyx":48
- *                     release    = <bint>crelease,
- *                     date       = bytes2str(cdate),
+  /* "SLEPc/Sys.pyx":37
+ *                     release    = not dev,
+ *                     date       = date,
  *                     authorinfo = author)             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_authorinfo, __pyx_v_author) < 0) __PYX_ERR(9, 42, __pyx_L1_error)
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_authorinfo, __pyx_v_author) < 0) __PYX_ERR(9, 32, __pyx_L1_error)
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/Sys.pyx":32
+  /* "SLEPc/Sys.pyx":30
  * 
  *     @classmethod
  *     def getVersionInfo(cls):             # <<<<<<<<<<<<<<
- *         cdef int cmajor = SLEPC_VERSION_MAJOR
- *         cdef int cminor = SLEPC_VERSION_MINOR
+ *         version, dev, date, author = cls.getVersion(True, True, True)
+ *         return dict(major      = version[0],
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
   __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_6);
   __Pyx_AddTraceback("slepc4py.SLEPc.Sys.getVersionInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_version);
+  __Pyx_XDECREF(__pyx_v_dev);
+  __Pyx_XDECREF(__pyx_v_date);
   __Pyx_XDECREF(__pyx_v_author);
-  __Pyx_XDECREF(__pyx_v_s);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
@@ -6897,6 +7979,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_3view(PyObject *__pyx_v_self, PyO
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -6914,6 +7997,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_3view(PyObject *__pyx_v_self, PyO
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -6945,42 +8029,25 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_2view(struct PySlepcSTObject *__p
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
-  PetscViewer __pyx_t_3;
-  int __pyx_t_4;
   __Pyx_RefNannySetupContext("view", 0);
 
   /* "SLEPc/ST.pyx":57
  *                 output is used.
  *         """
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( STView(self.st, vwr) )
+ * 
  */
-  __pyx_v_vwr = NULL;
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
   /* "SLEPc/ST.pyx":58
  *         """
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
- *         CHKERR( STView(self.st, vwr) )
- * 
- */
-  __pyx_t_1 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_3;
-  }
-
-  /* "SLEPc/ST.pyx":59
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( STView(self.st, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     def destroy(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STView(__pyx_v_self->st, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 59, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STView(__pyx_v_self->st, __pyx_v_vwr)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 58, __pyx_L1_error)
 
   /* "SLEPc/ST.pyx":47
  *         self.st = NULL
@@ -7002,7 +8069,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_2view(struct PySlepcSTObject *__p
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":61
+/* "SLEPc/ST.pyx":60
  *         CHKERR( STView(self.st, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -7033,16 +8100,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_4destroy(struct PySlepcSTObject *
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("destroy", 0);
 
-  /* "SLEPc/ST.pyx":65
+  /* "SLEPc/ST.pyx":64
  *         Destroys the ST object.
  *         """
  *         CHKERR( STDestroy(&self.st) )             # <<<<<<<<<<<<<<
  *         self.st = NULL
  *         return self
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STDestroy((&__pyx_v_self->st))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 65, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STDestroy((&__pyx_v_self->st))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 64, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":66
+  /* "SLEPc/ST.pyx":65
  *         """
  *         CHKERR( STDestroy(&self.st) )
  *         self.st = NULL             # <<<<<<<<<<<<<<
@@ -7051,7 +8118,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_4destroy(struct PySlepcSTObject *
  */
   __pyx_v_self->st = NULL;
 
-  /* "SLEPc/ST.pyx":67
+  /* "SLEPc/ST.pyx":66
  *         CHKERR( STDestroy(&self.st) )
  *         self.st = NULL
  *         return self             # <<<<<<<<<<<<<<
@@ -7063,7 +8130,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_4destroy(struct PySlepcSTObject *
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/ST.pyx":61
+  /* "SLEPc/ST.pyx":60
  *         CHKERR( STView(self.st, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -7081,7 +8148,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_4destroy(struct PySlepcSTObject *
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":69
+/* "SLEPc/ST.pyx":68
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -7112,16 +8179,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_6reset(struct PySlepcSTObject *__
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("reset", 0);
 
-  /* "SLEPc/ST.pyx":73
+  /* "SLEPc/ST.pyx":72
  *         Resets the ST object.
  *         """
  *         CHKERR( STReset(self.st) )             # <<<<<<<<<<<<<<
  * 
  *     def create(self, comm=None):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STReset(__pyx_v_self->st)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 73, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STReset(__pyx_v_self->st)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 72, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":69
+  /* "SLEPc/ST.pyx":68
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -7141,7 +8208,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_6reset(struct PySlepcSTObject *__
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":75
+/* "SLEPc/ST.pyx":74
  *         CHKERR( STReset(self.st) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -7166,6 +8233,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_9create(PyObject *__pyx_v_self, P
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -7178,11 +8246,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_9create(PyObject *__pyx_v_self, P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(0, 75, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(0, 74, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -7191,7 +8260,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_9create(PyObject *__pyx_v_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 75, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 74, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.ST.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -7213,17 +8282,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_8create(struct PySlepcSTObject *_
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("create", 0);
 
-  /* "SLEPc/ST.pyx":85
+  /* "SLEPc/ST.pyx":84
  *               processes.
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())             # <<<<<<<<<<<<<<
  *         cdef SlepcST newst = NULL
  *         CHKERR( STCreate(ccomm, &newst) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 85, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 84, __pyx_L1_error)
   __pyx_v_ccomm = __pyx_t_1;
 
-  /* "SLEPc/ST.pyx":86
+  /* "SLEPc/ST.pyx":85
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcST newst = NULL             # <<<<<<<<<<<<<<
@@ -7232,16 +8301,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_8create(struct PySlepcSTObject *_
  */
   __pyx_v_newst = NULL;
 
-  /* "SLEPc/ST.pyx":87
+  /* "SLEPc/ST.pyx":86
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcST newst = NULL
  *         CHKERR( STCreate(ccomm, &newst) )             # <<<<<<<<<<<<<<
  *         SlepcCLEAR(self.obj); self.st = newst
  *         return self
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STCreate(__pyx_v_ccomm, (&__pyx_v_newst))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 87, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STCreate(__pyx_v_ccomm, (&__pyx_v_newst))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 86, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":88
+  /* "SLEPc/ST.pyx":87
  *         cdef SlepcST newst = NULL
  *         CHKERR( STCreate(ccomm, &newst) )
  *         SlepcCLEAR(self.obj); self.st = newst             # <<<<<<<<<<<<<<
@@ -7251,7 +8320,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_8create(struct PySlepcSTObject *_
   __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(__pyx_v_self->__pyx_base.obj);
   __pyx_v_self->st = __pyx_v_newst;
 
-  /* "SLEPc/ST.pyx":89
+  /* "SLEPc/ST.pyx":88
  *         CHKERR( STCreate(ccomm, &newst) )
  *         SlepcCLEAR(self.obj); self.st = newst
  *         return self             # <<<<<<<<<<<<<<
@@ -7263,7 +8332,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_8create(struct PySlepcSTObject *_
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/ST.pyx":75
+  /* "SLEPc/ST.pyx":74
  *         CHKERR( STReset(self.st) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -7281,7 +8350,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_8create(struct PySlepcSTObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":91
+/* "SLEPc/ST.pyx":90
  *         return self
  * 
  *     def setType(self, st_type):             # <<<<<<<<<<<<<<
@@ -7305,6 +8374,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_11setType(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -7315,7 +8385,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_11setType(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(0, 91, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(0, 90, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -7326,7 +8396,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_11setType(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 91, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 90, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.ST.setType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -7348,7 +8418,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_10setType(struct PySlepcSTObject
   __Pyx_RefNannySetupContext("setType", 0);
   __Pyx_INCREF(__pyx_v_st_type);
 
-  /* "SLEPc/ST.pyx":109
+  /* "SLEPc/ST.pyx":108
  *         evaluating the different available methods.
  *         """
  *         cdef SlepcSTType cval = NULL             # <<<<<<<<<<<<<<
@@ -7357,28 +8427,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_10setType(struct PySlepcSTObject
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/ST.pyx":110
+  /* "SLEPc/ST.pyx":109
  *         """
  *         cdef SlepcSTType cval = NULL
  *         st_type = str2bytes(st_type, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( STSetType(self.st, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_st_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_st_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_st_type, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/ST.pyx":111
+  /* "SLEPc/ST.pyx":110
  *         cdef SlepcSTType cval = NULL
  *         st_type = str2bytes(st_type, &cval)
  *         CHKERR( STSetType(self.st, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getType(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetType(__pyx_v_self->st, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 111, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetType(__pyx_v_self->st, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 110, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":91
+  /* "SLEPc/ST.pyx":90
  *         return self
  * 
  *     def setType(self, st_type):             # <<<<<<<<<<<<<<
@@ -7400,7 +8470,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_10setType(struct PySlepcSTObject
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":113
+/* "SLEPc/ST.pyx":112
  *         CHKERR( STSetType(self.st, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -7433,7 +8503,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_12getType(struct PySlepcSTObject
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getType", 0);
 
-  /* "SLEPc/ST.pyx":122
+  /* "SLEPc/ST.pyx":121
  *               The spectral transformation currently being used.
  *         """
  *         cdef SlepcSTType st_type = NULL             # <<<<<<<<<<<<<<
@@ -7442,16 +8512,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_12getType(struct PySlepcSTObject
  */
   __pyx_v_st_type = NULL;
 
-  /* "SLEPc/ST.pyx":123
+  /* "SLEPc/ST.pyx":122
  *         """
  *         cdef SlepcSTType st_type = NULL
  *         CHKERR( STGetType(self.st, &st_type) )             # <<<<<<<<<<<<<<
  *         return bytes2str(st_type)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetType(__pyx_v_self->st, (&__pyx_v_st_type))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 123, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetType(__pyx_v_self->st, (&__pyx_v_st_type))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 122, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":124
+  /* "SLEPc/ST.pyx":123
  *         cdef SlepcSTType st_type = NULL
  *         CHKERR( STGetType(self.st, &st_type) )
  *         return bytes2str(st_type)             # <<<<<<<<<<<<<<
@@ -7459,13 +8529,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_12getType(struct PySlepcSTObject
  *     def setOptionsPrefix(self, prefix):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_st_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_st_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/ST.pyx":113
+  /* "SLEPc/ST.pyx":112
  *         CHKERR( STSetType(self.st, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -7484,7 +8554,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_12getType(struct PySlepcSTObject
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":126
+/* "SLEPc/ST.pyx":125
  *         return bytes2str(st_type)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -7508,6 +8578,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_15setOptionsPrefix(PyObject *__py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -7518,7 +8589,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_15setOptionsPrefix(PyObject *__py
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(0, 126, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(0, 125, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -7529,7 +8600,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_15setOptionsPrefix(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 126, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 125, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.ST.setOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -7551,7 +8622,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_14setOptionsPrefix(struct PySlepc
   __Pyx_RefNannySetupContext("setOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/ST.pyx":143
+  /* "SLEPc/ST.pyx":142
  *         AUTOMATICALLY the hyphen.
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -7560,28 +8631,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_14setOptionsPrefix(struct PySlepc
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/ST.pyx":144
+  /* "SLEPc/ST.pyx":143
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( STSetOptionsPrefix(self.st, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/ST.pyx":145
+  /* "SLEPc/ST.pyx":144
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( STSetOptionsPrefix(self.st, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getOptionsPrefix(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetOptionsPrefix(__pyx_v_self->st, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 145, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetOptionsPrefix(__pyx_v_self->st, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 144, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":126
+  /* "SLEPc/ST.pyx":125
  *         return bytes2str(st_type)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -7603,7 +8674,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_14setOptionsPrefix(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":147
+/* "SLEPc/ST.pyx":146
  *         CHKERR( STSetOptionsPrefix(self.st, cval) )
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -7636,7 +8707,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_16getOptionsPrefix(struct PySlepc
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getOptionsPrefix", 0);
 
-  /* "SLEPc/ST.pyx":157
+  /* "SLEPc/ST.pyx":156
  *                 The prefix string set for this ST object.
  *         """
  *         cdef const_char *prefix = NULL             # <<<<<<<<<<<<<<
@@ -7645,16 +8716,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_16getOptionsPrefix(struct PySlepc
  */
   __pyx_v_prefix = NULL;
 
-  /* "SLEPc/ST.pyx":158
+  /* "SLEPc/ST.pyx":157
  *         """
  *         cdef const_char *prefix = NULL
  *         CHKERR( STGetOptionsPrefix(self.st, &prefix) )             # <<<<<<<<<<<<<<
  *         return bytes2str(prefix)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetOptionsPrefix(__pyx_v_self->st, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 158, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetOptionsPrefix(__pyx_v_self->st, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 157, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":159
+  /* "SLEPc/ST.pyx":158
  *         cdef const_char *prefix = NULL
  *         CHKERR( STGetOptionsPrefix(self.st, &prefix) )
  *         return bytes2str(prefix)             # <<<<<<<<<<<<<<
@@ -7662,13 +8733,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_16getOptionsPrefix(struct PySlepc
  *     def setFromOptions(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 158, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/ST.pyx":147
+  /* "SLEPc/ST.pyx":146
  *         CHKERR( STSetOptionsPrefix(self.st, cval) )
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -7687,7 +8758,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_16getOptionsPrefix(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":161
+/* "SLEPc/ST.pyx":160
  *         return bytes2str(prefix)
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -7718,16 +8789,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_18setFromOptions(struct PySlepcST
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setFromOptions", 0);
 
-  /* "SLEPc/ST.pyx":171
+  /* "SLEPc/ST.pyx":170
  *         To see all options, run your program with the -help option.
  *         """
  *         CHKERR( STSetFromOptions(self.st) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetFromOptions(__pyx_v_self->st)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 171, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetFromOptions(__pyx_v_self->st)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 170, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":161
+  /* "SLEPc/ST.pyx":160
  *         return bytes2str(prefix)
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -7747,7 +8818,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_18setFromOptions(struct PySlepcST
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":175
+/* "SLEPc/ST.pyx":174
  *     #
  * 
  *     def setShift(self, shift):             # <<<<<<<<<<<<<<
@@ -7771,6 +8842,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_21setShift(PyObject *__pyx_v_self
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -7781,7 +8853,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_21setShift(PyObject *__pyx_v_self
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setShift") < 0)) __PYX_ERR(0, 175, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setShift") < 0)) __PYX_ERR(0, 174, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -7792,7 +8864,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_21setShift(PyObject *__pyx_v_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setShift", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 175, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setShift", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 174, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.ST.setShift", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -7813,26 +8885,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_20setShift(struct PySlepcSTObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setShift", 0);
 
-  /* "SLEPc/ST.pyx":190
+  /* "SLEPc/ST.pyx":189
  *         factorization.
  *         """
  *         cdef PetscScalar sval = asScalar(shift)             # <<<<<<<<<<<<<<
  *         CHKERR( STSetShift(self.st, sval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_shift); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 190, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_shift); if (unlikely(__pyx_t_1 == ((PetscScalar)((PetscScalar)(-1.0))) && PyErr_Occurred())) __PYX_ERR(0, 189, __pyx_L1_error)
   __pyx_v_sval = __pyx_t_1;
 
-  /* "SLEPc/ST.pyx":191
+  /* "SLEPc/ST.pyx":190
  *         """
  *         cdef PetscScalar sval = asScalar(shift)
  *         CHKERR( STSetShift(self.st, sval) )             # <<<<<<<<<<<<<<
  * 
  *     def getShift(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetShift(__pyx_v_self->st, __pyx_v_sval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 191, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetShift(__pyx_v_self->st, __pyx_v_sval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 190, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":175
+  /* "SLEPc/ST.pyx":174
  *     #
  * 
  *     def setShift(self, shift):             # <<<<<<<<<<<<<<
@@ -7852,7 +8924,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_20setShift(struct PySlepcSTObject
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":193
+/* "SLEPc/ST.pyx":192
  *         CHKERR( STSetShift(self.st, sval) )
  * 
  *     def getShift(self):             # <<<<<<<<<<<<<<
@@ -7885,7 +8957,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_22getShift(struct PySlepcSTObject
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getShift", 0);
 
-  /* "SLEPc/ST.pyx":202
+  /* "SLEPc/ST.pyx":201
  *                The value of the shift.
  *         """
  *         cdef PetscScalar sval = 0             # <<<<<<<<<<<<<<
@@ -7894,16 +8966,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_22getShift(struct PySlepcSTObject
  */
   __pyx_v_sval = 0.0;
 
-  /* "SLEPc/ST.pyx":203
+  /* "SLEPc/ST.pyx":202
  *         """
  *         cdef PetscScalar sval = 0
  *         CHKERR( STGetShift(self.st, &sval) )             # <<<<<<<<<<<<<<
  *         return toScalar(sval)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetShift(__pyx_v_self->st, (&__pyx_v_sval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 203, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetShift(__pyx_v_self->st, (&__pyx_v_sval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 202, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":204
+  /* "SLEPc/ST.pyx":203
  *         cdef PetscScalar sval = 0
  *         CHKERR( STGetShift(self.st, &sval) )
  *         return toScalar(sval)             # <<<<<<<<<<<<<<
@@ -7911,13 +8983,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_22getShift(struct PySlepcSTObject
  *     def setTransform(self, flag):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 204, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/ST.pyx":193
+  /* "SLEPc/ST.pyx":192
  *         CHKERR( STSetShift(self.st, sval) )
  * 
  *     def getShift(self):             # <<<<<<<<<<<<<<
@@ -7936,7 +9008,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_22getShift(struct PySlepcSTObject
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":206
+/* "SLEPc/ST.pyx":205
  *         return toScalar(sval)
  * 
  *     def setTransform(self, flag):             # <<<<<<<<<<<<<<
@@ -7960,6 +9032,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_25setTransform(PyObject *__pyx_v_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -7970,7 +9043,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_25setTransform(PyObject *__pyx_v_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTransform") < 0)) __PYX_ERR(0, 206, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTransform") < 0)) __PYX_ERR(0, 205, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -7981,7 +9054,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_25setTransform(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setTransform", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 206, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setTransform", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 205, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.ST.setTransform", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -8002,26 +9075,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_24setTransform(struct PySlepcSTOb
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setTransform", 0);
 
-  /* "SLEPc/ST.pyx":220
+  /* "SLEPc/ST.pyx":219
  *               otherwise it is applied to the original problem.
  *         """
  *         cdef PetscBool sval = flag             # <<<<<<<<<<<<<<
  *         CHKERR( STSetTransform(self.st, sval) )
  * 
  */
-  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_flag)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 220, __pyx_L1_error)
+  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_flag)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 219, __pyx_L1_error)
   __pyx_v_sval = __pyx_t_1;
 
-  /* "SLEPc/ST.pyx":221
+  /* "SLEPc/ST.pyx":220
  *         """
  *         cdef PetscBool sval = flag
  *         CHKERR( STSetTransform(self.st, sval) )             # <<<<<<<<<<<<<<
  * 
  *     def getTransform(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetTransform(__pyx_v_self->st, __pyx_v_sval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 221, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetTransform(__pyx_v_self->st, __pyx_v_sval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 220, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":206
+  /* "SLEPc/ST.pyx":205
  *         return toScalar(sval)
  * 
  *     def setTransform(self, flag):             # <<<<<<<<<<<<<<
@@ -8041,7 +9114,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_24setTransform(struct PySlepcSTOb
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":223
+/* "SLEPc/ST.pyx":222
  *         CHKERR( STSetTransform(self.st, sval) )
  * 
  *     def getTransform(self):             # <<<<<<<<<<<<<<
@@ -8074,7 +9147,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_26getTransform(struct PySlepcSTOb
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getTransform", 0);
 
-  /* "SLEPc/ST.pyx":237
+  /* "SLEPc/ST.pyx":236
  *                otherwise it is applied to the original problem.
  *         """
  *         cdef PetscBool sval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -8083,16 +9156,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_26getTransform(struct PySlepcSTOb
  */
   __pyx_v_sval = PETSC_FALSE;
 
-  /* "SLEPc/ST.pyx":238
+  /* "SLEPc/ST.pyx":237
  *         """
  *         cdef PetscBool sval = PETSC_FALSE
  *         CHKERR( STGetTransform(self.st, &sval) )             # <<<<<<<<<<<<<<
  *         return sval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetTransform(__pyx_v_self->st, (&__pyx_v_sval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 238, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetTransform(__pyx_v_self->st, (&__pyx_v_sval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 237, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":239
+  /* "SLEPc/ST.pyx":238
  *         cdef PetscBool sval = PETSC_FALSE
  *         CHKERR( STGetTransform(self.st, &sval) )
  *         return sval             # <<<<<<<<<<<<<<
@@ -8100,13 +9173,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_26getTransform(struct PySlepcSTOb
  *     def setMatMode(self, mode):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_sval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 239, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_sval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 238, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/ST.pyx":223
+  /* "SLEPc/ST.pyx":222
  *         CHKERR( STSetTransform(self.st, sval) )
  * 
  *     def getTransform(self):             # <<<<<<<<<<<<<<
@@ -8125,7 +9198,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_26getTransform(struct PySlepcSTOb
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":241
+/* "SLEPc/ST.pyx":240
  *         return sval
  * 
  *     def setMatMode(self, mode):             # <<<<<<<<<<<<<<
@@ -8149,6 +9222,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_29setMatMode(PyObject *__pyx_v_se
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -8159,7 +9233,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_29setMatMode(PyObject *__pyx_v_se
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setMatMode") < 0)) __PYX_ERR(0, 241, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setMatMode") < 0)) __PYX_ERR(0, 240, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -8170,7 +9244,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_29setMatMode(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setMatMode", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 241, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setMatMode", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 240, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.ST.setMatMode", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -8191,26 +9265,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_28setMatMode(struct PySlepcSTObje
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setMatMode", 0);
 
-  /* "SLEPc/ST.pyx":276
+  /* "SLEPc/ST.pyx":275
  *         `setMatStructure()`.
  *         """
  *         cdef SlepcSTMatMode val = mode             # <<<<<<<<<<<<<<
  *         CHKERR( STSetMatMode(self.st, val) )
  * 
  */
-  __pyx_t_1 = ((STMatMode)__Pyx_PyInt_As_STMatMode(__pyx_v_mode)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 276, __pyx_L1_error)
+  __pyx_t_1 = ((STMatMode)__Pyx_PyInt_As_STMatMode(__pyx_v_mode)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 275, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/ST.pyx":277
+  /* "SLEPc/ST.pyx":276
  *         """
  *         cdef SlepcSTMatMode val = mode
  *         CHKERR( STSetMatMode(self.st, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getMatMode(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetMatMode(__pyx_v_self->st, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 277, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetMatMode(__pyx_v_self->st, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 276, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":241
+  /* "SLEPc/ST.pyx":240
  *         return sval
  * 
  *     def setMatMode(self, mode):             # <<<<<<<<<<<<<<
@@ -8230,7 +9304,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_28setMatMode(struct PySlepcSTObje
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":279
+/* "SLEPc/ST.pyx":278
  *         CHKERR( STSetMatMode(self.st, val) )
  * 
  *     def getMatMode(self):             # <<<<<<<<<<<<<<
@@ -8263,7 +9337,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_30getMatMode(struct PySlepcSTObje
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getMatMode", 0);
 
-  /* "SLEPc/ST.pyx":289
+  /* "SLEPc/ST.pyx":288
  *               The mode flag.
  *         """
  *         cdef SlepcSTMatMode val = ST_MATMODE_INPLACE             # <<<<<<<<<<<<<<
@@ -8272,30 +9346,30 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_30getMatMode(struct PySlepcSTObje
  */
   __pyx_v_val = ST_MATMODE_INPLACE;
 
-  /* "SLEPc/ST.pyx":290
+  /* "SLEPc/ST.pyx":289
  *         """
  *         cdef SlepcSTMatMode val = ST_MATMODE_INPLACE
  *         CHKERR( STGetMatMode(self.st, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetMatMode(__pyx_v_self->st, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 290, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetMatMode(__pyx_v_self->st, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 289, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":291
+  /* "SLEPc/ST.pyx":290
  *         cdef SlepcSTMatMode val = ST_MATMODE_INPLACE
  *         CHKERR( STGetMatMode(self.st, &val) )
  *         return val             # <<<<<<<<<<<<<<
  * 
- *     def setOperators(self, operators):
+ *     def setMatrices(self, operators):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_STMatMode(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_STMatMode(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 290, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/ST.pyx":279
+  /* "SLEPc/ST.pyx":278
  *         CHKERR( STSetMatMode(self.st, val) )
  * 
  *     def getMatMode(self):             # <<<<<<<<<<<<<<
@@ -8314,22 +9388,22 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_30getMatMode(struct PySlepcSTObje
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":293
+/* "SLEPc/ST.pyx":292
  *         return val
  * 
- *     def setOperators(self, operators):             # <<<<<<<<<<<<<<
+ *     def setMatrices(self, operators):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the matrices associated with the eigenvalue problem.
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_33setOperators(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_2ST_32setOperators[] = "ST.setOperators(self, operators)\n\n        Sets the matrices associated with the eigenvalue problem.\n\n        Parameters\n        ----------\n        operators: sequence of Mat\n           The matrices associated with the eigensystem.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_33setOperators(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_33setMatrices(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_2ST_32setMatrices[] = "ST.setMatrices(self, operators)\n\n        Sets the matrices associated with the eigenvalue problem.\n\n        Parameters\n        ----------\n        operators: sequence of Mat\n           The matrices associated with the eigensystem.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_33setMatrices(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_operators = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("setOperators (wrapper)", 0);
+  __Pyx_RefNannySetupContext("setMatrices (wrapper)", 0);
   {
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_operators,0};
     PyObject* values[1] = {0};
@@ -8338,6 +9412,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_33setOperators(PyObject *__pyx_v_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -8348,7 +9423,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_33setOperators(PyObject *__pyx_v_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOperators") < 0)) __PYX_ERR(0, 293, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setMatrices") < 0)) __PYX_ERR(0, 292, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -8359,20 +9434,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_33setOperators(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOperators", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 293, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setMatrices", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 292, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("slepc4py.SLEPc.ST.setOperators", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("slepc4py.SLEPc.ST.setMatrices", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2ST_32setOperators(((struct PySlepcSTObject *)__pyx_v_self), __pyx_v_operators);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2ST_32setMatrices(((struct PySlepcSTObject *)__pyx_v_self), __pyx_v_operators);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_32setOperators(struct PySlepcSTObject *__pyx_v_self, PyObject *__pyx_v_operators) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_32setMatrices(struct PySlepcSTObject *__pyx_v_self, PyObject *__pyx_v_operators) {
   Mat *__pyx_v_mats;
   Py_ssize_t __pyx_v_k;
   Py_ssize_t __pyx_v_n;
@@ -8383,22 +9458,22 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_32setOperators(struct PySlepcSTOb
   Py_ssize_t __pyx_t_2;
   Mat __pyx_t_3;
   int __pyx_t_4;
-  __Pyx_RefNannySetupContext("setOperators", 0);
+  __Pyx_RefNannySetupContext("setMatrices", 0);
   __Pyx_INCREF(__pyx_v_operators);
 
-  /* "SLEPc/ST.pyx":302
+  /* "SLEPc/ST.pyx":301
  *            The matrices associated with the eigensystem.
  *         """
  *         operators = tuple(operators)             # <<<<<<<<<<<<<<
  *         cdef PetscMat *mats = NULL
  *         cdef Py_ssize_t k=0, n = len(operators)
  */
-  __pyx_t_1 = PySequence_Tuple(__pyx_v_operators); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_operators); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 301, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_operators, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/ST.pyx":303
+  /* "SLEPc/ST.pyx":302
  *         """
  *         operators = tuple(operators)
  *         cdef PetscMat *mats = NULL             # <<<<<<<<<<<<<<
@@ -8407,7 +9482,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_32setOperators(struct PySlepcSTOb
  */
   __pyx_v_mats = NULL;
 
-  /* "SLEPc/ST.pyx":304
+  /* "SLEPc/ST.pyx":303
  *         operators = tuple(operators)
  *         cdef PetscMat *mats = NULL
  *         cdef Py_ssize_t k=0, n = len(operators)             # <<<<<<<<<<<<<<
@@ -8415,51 +9490,51 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_32setOperators(struct PySlepcSTOb
  *         for k from 0 <= k < n: mats[k] = (<Mat?>operators[k]).mat
  */
   __pyx_v_k = 0;
-  __pyx_t_2 = PyObject_Length(__pyx_v_operators); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 304, __pyx_L1_error)
+  __pyx_t_2 = PyObject_Length(__pyx_v_operators); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 303, __pyx_L1_error)
   __pyx_v_n = __pyx_t_2;
 
-  /* "SLEPc/ST.pyx":305
+  /* "SLEPc/ST.pyx":304
  *         cdef PetscMat *mats = NULL
  *         cdef Py_ssize_t k=0, n = len(operators)
  *         cdef tmp = allocate(<size_t>n*sizeof(PetscMat),<void**>&mats)             # <<<<<<<<<<<<<<
  *         for k from 0 <= k < n: mats[k] = (<Mat?>operators[k]).mat
- *         CHKERR( STSetOperators(self.st, <PetscInt>n, mats) )
+ *         CHKERR( STSetMatrices(self.st, <PetscInt>n, mats) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_n) * (sizeof(Mat))), ((void **)(&__pyx_v_mats))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_n) * (sizeof(Mat))), ((void **)(&__pyx_v_mats))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_tmp = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "SLEPc/ST.pyx":306
+  /* "SLEPc/ST.pyx":305
  *         cdef Py_ssize_t k=0, n = len(operators)
  *         cdef tmp = allocate(<size_t>n*sizeof(PetscMat),<void**>&mats)
  *         for k from 0 <= k < n: mats[k] = (<Mat?>operators[k]).mat             # <<<<<<<<<<<<<<
- *         CHKERR( STSetOperators(self.st, <PetscInt>n, mats) )
+ *         CHKERR( STSetMatrices(self.st, <PetscInt>n, mats) )
  * 
  */
   __pyx_t_2 = __pyx_v_n;
   for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_2; __pyx_v_k++) {
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_operators, __pyx_v_k, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_operators, __pyx_v_k, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8petsc4py_5PETSc_Mat)))) __PYX_ERR(0, 306, __pyx_L1_error)
+    if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8petsc4py_5PETSc_Mat)))) __PYX_ERR(0, 305, __pyx_L1_error)
     __pyx_t_3 = ((struct PyPetscMatObject *)__pyx_t_1)->mat;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     (__pyx_v_mats[__pyx_v_k]) = __pyx_t_3;
   }
 
-  /* "SLEPc/ST.pyx":307
+  /* "SLEPc/ST.pyx":306
  *         cdef tmp = allocate(<size_t>n*sizeof(PetscMat),<void**>&mats)
  *         for k from 0 <= k < n: mats[k] = (<Mat?>operators[k]).mat
- *         CHKERR( STSetOperators(self.st, <PetscInt>n, mats) )             # <<<<<<<<<<<<<<
+ *         CHKERR( STSetMatrices(self.st, <PetscInt>n, mats) )             # <<<<<<<<<<<<<<
  * 
- *     def getOperators(self):
+ *     def getMatrices(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetOperators(__pyx_v_self->st, ((PetscInt)__pyx_v_n), __pyx_v_mats)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 307, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetMatrices(__pyx_v_self->st, ((PetscInt)__pyx_v_n), __pyx_v_mats)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 306, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":293
+  /* "SLEPc/ST.pyx":292
  *         return val
  * 
- *     def setOperators(self, operators):             # <<<<<<<<<<<<<<
+ *     def setMatrices(self, operators):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the matrices associated with the eigenvalue problem.
  */
@@ -8469,7 +9544,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_32setOperators(struct PySlepcSTOb
   goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("slepc4py.SLEPc.ST.setOperators", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("slepc4py.SLEPc.ST.setMatrices", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_tmp);
@@ -8479,32 +9554,32 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_32setOperators(struct PySlepcSTOb
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":309
- *         CHKERR( STSetOperators(self.st, <PetscInt>n, mats) )
+/* "SLEPc/ST.pyx":308
+ *         CHKERR( STSetMatrices(self.st, <PetscInt>n, mats) )
  * 
- *     def getOperators(self):             # <<<<<<<<<<<<<<
+ *     def getMatrices(self):             # <<<<<<<<<<<<<<
  *         """
  *         Gets the matrices associated with the eigenvalue problem.
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_35getOperators(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_2ST_34getOperators[] = "ST.getOperators(self)\n\n        Gets the matrices associated with the eigenvalue problem.\n\n        Returns\n        -------\n        operators: tuple of Mat\n           The matrices associated with the eigensystem.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_35getOperators(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_35getMatrices(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_2ST_34getMatrices[] = "ST.getMatrices(self)\n\n        Gets the matrices associated with the eigenvalue problem.\n\n        Returns\n        -------\n        operators: tuple of Mat\n           The matrices associated with the eigensystem.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_35getMatrices(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("getOperators (wrapper)", 0);
+  __Pyx_RefNannySetupContext("getMatrices (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
-    __Pyx_RaiseArgtupleInvalid("getOperators", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
-  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getOperators", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2ST_34getOperators(((struct PySlepcSTObject *)__pyx_v_self));
+    __Pyx_RaiseArgtupleInvalid("getMatrices", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
+  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getMatrices", 0))) return NULL;
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2ST_34getMatrices(((struct PySlepcSTObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_34getOperators(struct PySlepcSTObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_34getMatrices(struct PySlepcSTObject *__pyx_v_self) {
   struct PyPetscMatObject *__pyx_v_A = 0;
   Mat __pyx_v_mat;
   PetscInt __pyx_v_k;
@@ -8516,9 +9591,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_34getOperators(struct PySlepcSTOb
   PyObject *__pyx_t_2 = NULL;
   PetscInt __pyx_t_3;
   int __pyx_t_4;
-  __Pyx_RefNannySetupContext("getOperators", 0);
+  __Pyx_RefNannySetupContext("getMatrices", 0);
 
-  /* "SLEPc/ST.pyx":319
+  /* "SLEPc/ST.pyx":318
  *         """
  *         cdef Mat A
  *         cdef PetscMat mat = NULL             # <<<<<<<<<<<<<<
@@ -8527,7 +9602,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_34getOperators(struct PySlepcSTOb
  */
   __pyx_v_mat = NULL;
 
-  /* "SLEPc/ST.pyx":320
+  /* "SLEPc/ST.pyx":319
  *         cdef Mat A
  *         cdef PetscMat mat = NULL
  *         cdef PetscInt k=0, n=0             # <<<<<<<<<<<<<<
@@ -8537,71 +9612,71 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_34getOperators(struct PySlepcSTOb
   __pyx_v_k = 0;
   __pyx_v_n = 0;
 
-  /* "SLEPc/ST.pyx":321
+  /* "SLEPc/ST.pyx":320
  *         cdef PetscMat mat = NULL
  *         cdef PetscInt k=0, n=0
  *         CHKERR( STGetNumMatrices(self.st, &n) )             # <<<<<<<<<<<<<<
  *         cdef object operators = []
  *         for k from 0 <= k < n:
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetNumMatrices(__pyx_v_self->st, (&__pyx_v_n))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 321, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetNumMatrices(__pyx_v_self->st, (&__pyx_v_n))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 320, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":322
+  /* "SLEPc/ST.pyx":321
  *         cdef PetscInt k=0, n=0
  *         CHKERR( STGetNumMatrices(self.st, &n) )
  *         cdef object operators = []             # <<<<<<<<<<<<<<
  *         for k from 0 <= k < n:
- *             CHKERR( STGetOperators(self.st, k, &mat) )
+ *             CHKERR( STGetMatrix(self.st, k, &mat) )
  */
-  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L1_error)
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_operators = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "SLEPc/ST.pyx":323
+  /* "SLEPc/ST.pyx":322
  *         CHKERR( STGetNumMatrices(self.st, &n) )
  *         cdef object operators = []
  *         for k from 0 <= k < n:             # <<<<<<<<<<<<<<
- *             CHKERR( STGetOperators(self.st, k, &mat) )
+ *             CHKERR( STGetMatrix(self.st, k, &mat) )
  *             A = Mat(); A.mat = mat; PetscINCREF(A.obj)
  */
   __pyx_t_3 = __pyx_v_n;
   for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_3; __pyx_v_k++) {
 
-    /* "SLEPc/ST.pyx":324
+    /* "SLEPc/ST.pyx":323
  *         cdef object operators = []
  *         for k from 0 <= k < n:
- *             CHKERR( STGetOperators(self.st, k, &mat) )             # <<<<<<<<<<<<<<
+ *             CHKERR( STGetMatrix(self.st, k, &mat) )             # <<<<<<<<<<<<<<
  *             A = Mat(); A.mat = mat; PetscINCREF(A.obj)
  *             operators.append(A)
  */
-    __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetOperators(__pyx_v_self->st, __pyx_v_k, (&__pyx_v_mat))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 324, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetMatrix(__pyx_v_self->st, __pyx_v_k, (&__pyx_v_mat))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 323, __pyx_L1_error)
 
-    /* "SLEPc/ST.pyx":325
+    /* "SLEPc/ST.pyx":324
  *         for k from 0 <= k < n:
- *             CHKERR( STGetOperators(self.st, k, &mat) )
+ *             CHKERR( STGetMatrix(self.st, k, &mat) )
  *             A = Mat(); A.mat = mat; PetscINCREF(A.obj)             # <<<<<<<<<<<<<<
  *             operators.append(A)
  *         return tuple(operators)
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 325, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_XDECREF_SET(__pyx_v_A, ((struct PyPetscMatObject *)__pyx_t_2));
     __pyx_t_2 = 0;
     __pyx_v_A->mat = __pyx_v_mat;
     __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_A->__pyx_base.obj);
 
-    /* "SLEPc/ST.pyx":326
- *             CHKERR( STGetOperators(self.st, k, &mat) )
+    /* "SLEPc/ST.pyx":325
+ *             CHKERR( STGetMatrix(self.st, k, &mat) )
  *             A = Mat(); A.mat = mat; PetscINCREF(A.obj)
  *             operators.append(A)             # <<<<<<<<<<<<<<
  *         return tuple(operators)
  * 
  */
-    __pyx_t_4 = __Pyx_PyObject_Append(__pyx_v_operators, ((PyObject *)__pyx_v_A)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 326, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Append(__pyx_v_operators, ((PyObject *)__pyx_v_A)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 325, __pyx_L1_error)
   }
 
-  /* "SLEPc/ST.pyx":327
+  /* "SLEPc/ST.pyx":326
  *             A = Mat(); A.mat = mat; PetscINCREF(A.obj)
  *             operators.append(A)
  *         return tuple(operators)             # <<<<<<<<<<<<<<
@@ -8609,16 +9684,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_34getOperators(struct PySlepcSTOb
  *     def setMatStructure(self, structure):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = PySequence_Tuple(__pyx_v_operators); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 327, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_v_operators); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 326, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/ST.pyx":309
- *         CHKERR( STSetOperators(self.st, <PetscInt>n, mats) )
+  /* "SLEPc/ST.pyx":308
+ *         CHKERR( STSetMatrices(self.st, <PetscInt>n, mats) )
  * 
- *     def getOperators(self):             # <<<<<<<<<<<<<<
+ *     def getMatrices(self):             # <<<<<<<<<<<<<<
  *         """
  *         Gets the matrices associated with the eigenvalue problem.
  */
@@ -8626,7 +9701,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_34getOperators(struct PySlepcSTOb
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("slepc4py.SLEPc.ST.getOperators", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("slepc4py.SLEPc.ST.getMatrices", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_A);
@@ -8636,7 +9711,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_34getOperators(struct PySlepcSTOb
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":329
+/* "SLEPc/ST.pyx":328
  *         return tuple(operators)
  * 
  *     def setMatStructure(self, structure):             # <<<<<<<<<<<<<<
@@ -8660,6 +9735,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_37setMatStructure(PyObject *__pyx
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -8670,7 +9746,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_37setMatStructure(PyObject *__pyx
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setMatStructure") < 0)) __PYX_ERR(0, 329, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setMatStructure") < 0)) __PYX_ERR(0, 328, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -8681,7 +9757,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_37setMatStructure(PyObject *__pyx
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setMatStructure", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 329, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setMatStructure", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 328, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.ST.setMatStructure", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -8702,26 +9778,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_36setMatStructure(struct PySlepcS
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setMatStructure", 0);
 
-  /* "SLEPc/ST.pyx":350
+  /* "SLEPc/ST.pyx":349
  *         particular, for internal *AXPY()* matrix operations).
  *         """
  *         cdef PetscMatStructure val = matstructure(structure)             # <<<<<<<<<<<<<<
  *         CHKERR( STSetMatStructure(self.st, val) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_matstructure(__pyx_v_structure); if (unlikely(__pyx_t_1 == ((MatStructure)-1L))) __PYX_ERR(0, 350, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_matstructure(__pyx_v_structure); if (unlikely(__pyx_t_1 == ((MatStructure)((MatStructure)-1L)))) __PYX_ERR(0, 349, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/ST.pyx":351
+  /* "SLEPc/ST.pyx":350
  *         """
  *         cdef PetscMatStructure val = matstructure(structure)
  *         CHKERR( STSetMatStructure(self.st, val) )             # <<<<<<<<<<<<<<
  * 
- *     def setKSP(self, KSP ksp not None):
+ *     def setKSP(self, KSP ksp):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetMatStructure(__pyx_v_self->st, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 351, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetMatStructure(__pyx_v_self->st, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 350, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":329
+  /* "SLEPc/ST.pyx":328
  *         return tuple(operators)
  * 
  *     def setMatStructure(self, structure):             # <<<<<<<<<<<<<<
@@ -8741,10 +9817,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_36setMatStructure(struct PySlepcS
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":353
+/* "SLEPc/ST.pyx":352
  *         CHKERR( STSetMatStructure(self.st, val) )
  * 
- *     def setKSP(self, KSP ksp not None):             # <<<<<<<<<<<<<<
+ *     def setKSP(self, KSP ksp):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the KSP object associated with the spectral
  */
@@ -8765,6 +9841,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_39setKSP(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -8775,7 +9852,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_39setKSP(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKSP") < 0)) __PYX_ERR(0, 353, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKSP") < 0)) __PYX_ERR(0, 352, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -8786,13 +9863,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_39setKSP(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setKSP", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 353, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setKSP", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 352, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.ST.setKSP", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ksp), __pyx_ptype_8petsc4py_5PETSc_KSP, 0, "ksp", 0))) __PYX_ERR(0, 353, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ksp), __pyx_ptype_8petsc4py_5PETSc_KSP, 0, "ksp", 0))) __PYX_ERR(0, 352, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2ST_38setKSP(((struct PySlepcSTObject *)__pyx_v_self), __pyx_v_ksp);
 
   /* function exit code */
@@ -8810,19 +9887,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_38setKSP(struct PySlepcSTObject *
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setKSP", 0);
 
-  /* "SLEPc/ST.pyx":363
+  /* "SLEPc/ST.pyx":362
  *              The linear solver object.
  *         """
  *         CHKERR( STSetKSP(self.st, ksp.ksp) )             # <<<<<<<<<<<<<<
  * 
  *     def getKSP(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetKSP(__pyx_v_self->st, __pyx_v_ksp->ksp)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 363, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetKSP(__pyx_v_self->st, __pyx_v_ksp->ksp)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 362, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":353
+  /* "SLEPc/ST.pyx":352
  *         CHKERR( STSetMatStructure(self.st, val) )
  * 
- *     def setKSP(self, KSP ksp not None):             # <<<<<<<<<<<<<<
+ *     def setKSP(self, KSP ksp):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the KSP object associated with the spectral
  */
@@ -8839,7 +9916,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_38setKSP(struct PySlepcSTObject *
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":365
+/* "SLEPc/ST.pyx":364
  *         CHKERR( STSetKSP(self.st, ksp.ksp) )
  * 
  *     def getKSP(self):             # <<<<<<<<<<<<<<
@@ -8872,28 +9949,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_40getKSP(struct PySlepcSTObject *
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getKSP", 0);
 
-  /* "SLEPc/ST.pyx":381
+  /* "SLEPc/ST.pyx":380
  *         does not require to solve a linear system of equations.
  *         """
  *         cdef KSP ksp = KSP()             # <<<<<<<<<<<<<<
  *         CHKERR( STGetKSP(self.st, &ksp.ksp) )
  *         PetscINCREF(ksp.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_KSP), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_KSP), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_ksp = ((struct PyPetscKSPObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/ST.pyx":382
+  /* "SLEPc/ST.pyx":381
  *         """
  *         cdef KSP ksp = KSP()
  *         CHKERR( STGetKSP(self.st, &ksp.ksp) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(ksp.obj)
  *         return ksp
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetKSP(__pyx_v_self->st, (&__pyx_v_ksp->ksp))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 382, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STGetKSP(__pyx_v_self->st, (&__pyx_v_ksp->ksp))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 381, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":383
+  /* "SLEPc/ST.pyx":382
  *         cdef KSP ksp = KSP()
  *         CHKERR( STGetKSP(self.st, &ksp.ksp) )
  *         PetscINCREF(ksp.obj)             # <<<<<<<<<<<<<<
@@ -8902,7 +9979,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_40getKSP(struct PySlepcSTObject *
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_ksp->__pyx_base.obj);
 
-  /* "SLEPc/ST.pyx":384
+  /* "SLEPc/ST.pyx":383
  *         CHKERR( STGetKSP(self.st, &ksp.ksp) )
  *         PetscINCREF(ksp.obj)
  *         return ksp             # <<<<<<<<<<<<<<
@@ -8914,7 +9991,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_40getKSP(struct PySlepcSTObject *
   __pyx_r = ((PyObject *)__pyx_v_ksp);
   goto __pyx_L0;
 
-  /* "SLEPc/ST.pyx":365
+  /* "SLEPc/ST.pyx":364
  *         CHKERR( STSetKSP(self.st, ksp.ksp) )
  * 
  *     def getKSP(self):             # <<<<<<<<<<<<<<
@@ -8934,7 +10011,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_40getKSP(struct PySlepcSTObject *
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":388
+/* "SLEPc/ST.pyx":387
  *     #
  * 
  *     def setUp(self):             # <<<<<<<<<<<<<<
@@ -8965,16 +10042,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_42setUp(struct PySlepcSTObject *_
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setUp", 0);
 
-  /* "SLEPc/ST.pyx":392
+  /* "SLEPc/ST.pyx":391
  *         Prepares for the use of a spectral transformation.
  *         """
  *         CHKERR( STSetUp(self.st) )             # <<<<<<<<<<<<<<
  * 
- *     def apply(self, Vec x not None, Vec y not None):
+ *     def apply(self, Vec x, Vec y):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetUp(__pyx_v_self->st)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 392, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STSetUp(__pyx_v_self->st)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 391, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":388
+  /* "SLEPc/ST.pyx":387
  *     #
  * 
  *     def setUp(self):             # <<<<<<<<<<<<<<
@@ -8994,10 +10071,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_42setUp(struct PySlepcSTObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":394
+/* "SLEPc/ST.pyx":393
  *         CHKERR( STSetUp(self.st) )
  * 
- *     def apply(self, Vec x not None, Vec y not None):             # <<<<<<<<<<<<<<
+ *     def apply(self, Vec x, Vec y):             # <<<<<<<<<<<<<<
  *         """
  *         Applies the spectral transformation operator to a vector, for
  */
@@ -9019,7 +10096,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_45apply(PyObject *__pyx_v_self, P
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -9028,14 +10107,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_45apply(PyObject *__pyx_v_self, P
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("apply", 1, 2, 2, 1); __PYX_ERR(0, 394, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("apply", 1, 2, 2, 1); __PYX_ERR(0, 393, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "apply") < 0)) __PYX_ERR(0, 394, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "apply") < 0)) __PYX_ERR(0, 393, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -9048,14 +10128,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_45apply(PyObject *__pyx_v_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("apply", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 394, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("apply", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 393, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.ST.apply", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "x", 0))) __PYX_ERR(0, 394, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "y", 0))) __PYX_ERR(0, 394, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "x", 0))) __PYX_ERR(0, 393, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "y", 0))) __PYX_ERR(0, 393, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2ST_44apply(((struct PySlepcSTObject *)__pyx_v_self), __pyx_v_x, __pyx_v_y);
 
   /* function exit code */
@@ -9073,19 +10153,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_44apply(struct PySlepcSTObject *_
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("apply", 0);
 
-  /* "SLEPc/ST.pyx":407
+  /* "SLEPc/ST.pyx":406
  *            The result vector.
  *         """
  *         CHKERR( STApply(self.st, x.vec, y.vec) )             # <<<<<<<<<<<<<<
  * 
- *     def applyTranspose(self, Vec x not None, Vec y not None):
+ *     def applyTranspose(self, Vec x, Vec y):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STApply(__pyx_v_self->st, __pyx_v_x->vec, __pyx_v_y->vec)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 407, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STApply(__pyx_v_self->st, __pyx_v_x->vec, __pyx_v_y->vec)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 406, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":394
+  /* "SLEPc/ST.pyx":393
  *         CHKERR( STSetUp(self.st) )
  * 
- *     def apply(self, Vec x not None, Vec y not None):             # <<<<<<<<<<<<<<
+ *     def apply(self, Vec x, Vec y):             # <<<<<<<<<<<<<<
  *         """
  *         Applies the spectral transformation operator to a vector, for
  */
@@ -9102,10 +10182,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_44apply(struct PySlepcSTObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":409
+/* "SLEPc/ST.pyx":408
  *         CHKERR( STApply(self.st, x.vec, y.vec) )
  * 
- *     def applyTranspose(self, Vec x not None, Vec y not None):             # <<<<<<<<<<<<<<
+ *     def applyTranspose(self, Vec x, Vec y):             # <<<<<<<<<<<<<<
  *         """
  *         Applies the transpose of the operator to a vector, for
  */
@@ -9127,7 +10207,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_47applyTranspose(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -9136,14 +10218,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_47applyTranspose(PyObject *__pyx_
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("applyTranspose", 1, 2, 2, 1); __PYX_ERR(0, 409, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("applyTranspose", 1, 2, 2, 1); __PYX_ERR(0, 408, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "applyTranspose") < 0)) __PYX_ERR(0, 409, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "applyTranspose") < 0)) __PYX_ERR(0, 408, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -9156,14 +10239,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_47applyTranspose(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("applyTranspose", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 409, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("applyTranspose", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 408, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.ST.applyTranspose", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "x", 0))) __PYX_ERR(0, 409, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "y", 0))) __PYX_ERR(0, 409, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "x", 0))) __PYX_ERR(0, 408, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "y", 0))) __PYX_ERR(0, 408, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2ST_46applyTranspose(((struct PySlepcSTObject *)__pyx_v_self), __pyx_v_x, __pyx_v_y);
 
   /* function exit code */
@@ -9181,19 +10264,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_46applyTranspose(struct PySlepcST
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("applyTranspose", 0);
 
-  /* "SLEPc/ST.pyx":422
+  /* "SLEPc/ST.pyx":421
  *            The result vector.
  *         """
  *         CHKERR( STApplyTranspose(self.st, x.vec, y.vec) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STApplyTranspose(__pyx_v_self->st, __pyx_v_x->vec, __pyx_v_y->vec)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 422, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STApplyTranspose(__pyx_v_self->st, __pyx_v_x->vec, __pyx_v_y->vec)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 421, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":409
+  /* "SLEPc/ST.pyx":408
  *         CHKERR( STApply(self.st, x.vec, y.vec) )
  * 
- *     def applyTranspose(self, Vec x not None, Vec y not None):             # <<<<<<<<<<<<<<
+ *     def applyTranspose(self, Vec x, Vec y):             # <<<<<<<<<<<<<<
  *         """
  *         Applies the transpose of the operator to a vector, for
  */
@@ -9210,7 +10293,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_46applyTranspose(struct PySlepcST
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":426
+/* "SLEPc/ST.pyx":425
  *     #
  * 
  *     def setCayleyAntishift(self, tau):             # <<<<<<<<<<<<<<
@@ -9234,6 +10317,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_49setCayleyAntishift(PyObject *__
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -9244,7 +10328,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_49setCayleyAntishift(PyObject *__
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setCayleyAntishift") < 0)) __PYX_ERR(0, 426, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setCayleyAntishift") < 0)) __PYX_ERR(0, 425, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -9255,7 +10339,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2ST_49setCayleyAntishift(PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setCayleyAntishift", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 426, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setCayleyAntishift", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 425, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.ST.setCayleyAntishift", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -9276,26 +10360,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_48setCayleyAntishift(struct PySle
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setCayleyAntishift", 0);
 
-  /* "SLEPc/ST.pyx":444
+  /* "SLEPc/ST.pyx":443
  *         setting ``sigma``.
  *         """
  *         cdef PetscScalar sval = asScalar(tau)             # <<<<<<<<<<<<<<
  *         CHKERR( STCayleySetAntishift(self.st, sval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_tau); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 444, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_tau); if (unlikely(__pyx_t_1 == ((PetscScalar)((PetscScalar)(-1.0))) && PyErr_Occurred())) __PYX_ERR(0, 443, __pyx_L1_error)
   __pyx_v_sval = __pyx_t_1;
 
-  /* "SLEPc/ST.pyx":445
+  /* "SLEPc/ST.pyx":444
  *         """
  *         cdef PetscScalar sval = asScalar(tau)
  *         CHKERR( STCayleySetAntishift(self.st, sval) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STCayleySetAntishift(__pyx_v_self->st, __pyx_v_sval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 445, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(STCayleySetAntishift(__pyx_v_self->st, __pyx_v_sval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 444, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":426
+  /* "SLEPc/ST.pyx":425
  *     #
  * 
  *     def setCayleyAntishift(self, tau):             # <<<<<<<<<<<<<<
@@ -9315,7 +10399,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_48setCayleyAntishift(struct PySle
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":450
+/* "SLEPc/ST.pyx":449
  * 
  *     property shift:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -9344,7 +10428,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_5shift___get__(struct PySlepcSTOb
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/ST.pyx":451
+  /* "SLEPc/ST.pyx":450
  *     property shift:
  *         def __get__(self):
  *             return self.getShift()             # <<<<<<<<<<<<<<
@@ -9352,10 +10436,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_5shift___get__(struct PySlepcSTOb
  *             self.setShift(value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getShift); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 451, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getShift); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 450, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -9365,10 +10449,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_5shift___get__(struct PySlepcSTOb
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 451, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 451, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -9376,7 +10460,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_5shift___get__(struct PySlepcSTOb
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/ST.pyx":450
+  /* "SLEPc/ST.pyx":449
  * 
  *     property shift:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -9397,7 +10481,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_5shift___get__(struct PySlepcSTOb
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":452
+/* "SLEPc/ST.pyx":451
  *         def __get__(self):
  *             return self.getShift()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -9427,17 +10511,17 @@ static int __pyx_pf_8slepc4py_5SLEPc_2ST_5shift_2__set__(struct PySlepcSTObject
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/ST.pyx":453
+  /* "SLEPc/ST.pyx":452
  *             return self.getShift()
  *         def __set__(self, value):
  *             self.setShift(value)             # <<<<<<<<<<<<<<
  * 
  *     property mat_mode:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setShift); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 453, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setShift); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 452, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -9447,23 +10531,41 @@ static int __pyx_pf_8slepc4py_5SLEPc_2ST_5shift_2__set__(struct PySlepcSTObject
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 453, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_INCREF(__pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 452, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_value);
+      __Pyx_GIVEREF(__pyx_v_value);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "SLEPc/ST.pyx":452
+  /* "SLEPc/ST.pyx":451
  *         def __get__(self):
  *             return self.getShift()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -9486,7 +10588,7 @@ static int __pyx_pf_8slepc4py_5SLEPc_2ST_5shift_2__set__(struct PySlepcSTObject
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":456
+/* "SLEPc/ST.pyx":455
  * 
  *     property mat_mode:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -9515,7 +10617,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_8mat_mode___get__(struct PySlepcS
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/ST.pyx":457
+  /* "SLEPc/ST.pyx":456
  *     property mat_mode:
  *         def __get__(self):
  *             return self.getMatMode()             # <<<<<<<<<<<<<<
@@ -9523,10 +10625,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_8mat_mode___get__(struct PySlepcS
  *             self.setMatMode(value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getMatMode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 457, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getMatMode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 456, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -9536,10 +10638,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_8mat_mode___get__(struct PySlepcS
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 457, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 456, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 457, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 456, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -9547,7 +10649,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_8mat_mode___get__(struct PySlepcS
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/ST.pyx":456
+  /* "SLEPc/ST.pyx":455
  * 
  *     property mat_mode:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -9568,7 +10670,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_8mat_mode___get__(struct PySlepcS
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":458
+/* "SLEPc/ST.pyx":457
  *         def __get__(self):
  *             return self.getMatMode()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -9598,17 +10700,17 @@ static int __pyx_pf_8slepc4py_5SLEPc_2ST_8mat_mode_2__set__(struct PySlepcSTObje
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/ST.pyx":459
+  /* "SLEPc/ST.pyx":458
  *             return self.getMatMode()
  *         def __set__(self, value):
  *             self.setMatMode(value)             # <<<<<<<<<<<<<<
  * 
  *     property ksp:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setMatMode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 459, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setMatMode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 458, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -9618,23 +10720,41 @@ static int __pyx_pf_8slepc4py_5SLEPc_2ST_8mat_mode_2__set__(struct PySlepcSTObje
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 459, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 458, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 459, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_INCREF(__pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 459, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 458, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 458, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 458, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_value);
+      __Pyx_GIVEREF(__pyx_v_value);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 458, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "SLEPc/ST.pyx":458
+  /* "SLEPc/ST.pyx":457
  *         def __get__(self):
  *             return self.getMatMode()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -9657,7 +10777,7 @@ static int __pyx_pf_8slepc4py_5SLEPc_2ST_8mat_mode_2__set__(struct PySlepcSTObje
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":462
+/* "SLEPc/ST.pyx":461
  * 
  *     property ksp:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -9686,7 +10806,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_3ksp___get__(struct PySlepcSTObje
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/ST.pyx":463
+  /* "SLEPc/ST.pyx":462
  *     property ksp:
  *         def __get__(self):
  *             return self.getKSP()             # <<<<<<<<<<<<<<
@@ -9694,10 +10814,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_3ksp___get__(struct PySlepcSTObje
  *             self.setKSP(value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getKSP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 463, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getKSP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 462, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -9707,10 +10827,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_3ksp___get__(struct PySlepcSTObje
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 463, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 462, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 463, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 462, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -9718,7 +10838,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_3ksp___get__(struct PySlepcSTObje
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/ST.pyx":462
+  /* "SLEPc/ST.pyx":461
  * 
  *     property ksp:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -9739,7 +10859,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2ST_3ksp___get__(struct PySlepcSTObje
   return __pyx_r;
 }
 
-/* "SLEPc/ST.pyx":464
+/* "SLEPc/ST.pyx":463
  *         def __get__(self):
  *             return self.getKSP()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -9769,17 +10889,17 @@ static int __pyx_pf_8slepc4py_5SLEPc_2ST_3ksp_2__set__(struct PySlepcSTObject *_
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/ST.pyx":465
+  /* "SLEPc/ST.pyx":464
  *             return self.getKSP()
  *         def __set__(self, value):
  *             self.setKSP(value)             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setKSP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 465, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setKSP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 464, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -9789,23 +10909,41 @@ static int __pyx_pf_8slepc4py_5SLEPc_2ST_3ksp_2__set__(struct PySlepcSTObject *_
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 465, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 465, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_INCREF(__pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 465, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 464, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_value);
+      __Pyx_GIVEREF(__pyx_v_value);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "SLEPc/ST.pyx":464
+  /* "SLEPc/ST.pyx":463
  *         def __get__(self):
  *             return self.getKSP()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -9914,6 +11052,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_3view(PyObject *__pyx_v_self, PyO
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -9926,11 +11065,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_3view(PyObject *__pyx_v_self, PyO
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(3, 63, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(10, 63, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -9939,13 +11079,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_3view(PyObject *__pyx_v_self, PyO
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 63, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 63, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.view", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(3, 63, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(10, 63, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_2view(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_viewer);
 
   /* function exit code */
@@ -9962,42 +11102,25 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_2view(struct PySlepcBVObject *__p
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
-  PetscViewer __pyx_t_3;
-  int __pyx_t_4;
   __Pyx_RefNannySetupContext("view", 0);
 
   /* "SLEPc/BV.pyx":73
  *                 output is used.
  *         """
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( BVView(self.bv, vwr) )
+ * 
  */
-  __pyx_v_vwr = NULL;
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
   /* "SLEPc/BV.pyx":74
  *         """
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
- *         CHKERR( BVView(self.bv, vwr) )
- * 
- */
-  __pyx_t_1 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_3;
-  }
-
-  /* "SLEPc/BV.pyx":75
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( BVView(self.bv, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     def destroy(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVView(__pyx_v_self->bv, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 75, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVView(__pyx_v_self->bv, __pyx_v_vwr)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 74, __pyx_L1_error)
 
   /* "SLEPc/BV.pyx":63
  *         self.bv = NULL
@@ -10019,7 +11142,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_2view(struct PySlepcBVObject *__p
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":77
+/* "SLEPc/BV.pyx":76
  *         CHKERR( BVView(self.bv, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -10050,16 +11173,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_4destroy(struct PySlepcBVObject *
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("destroy", 0);
 
-  /* "SLEPc/BV.pyx":81
+  /* "SLEPc/BV.pyx":80
  *         Destroys the BV object.
  *         """
  *         CHKERR( BVDestroy(&self.bv) )             # <<<<<<<<<<<<<<
  *         self.bv = NULL
  *         return self
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVDestroy((&__pyx_v_self->bv))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 81, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVDestroy((&__pyx_v_self->bv))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 80, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":82
+  /* "SLEPc/BV.pyx":81
  *         """
  *         CHKERR( BVDestroy(&self.bv) )
  *         self.bv = NULL             # <<<<<<<<<<<<<<
@@ -10068,7 +11191,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_4destroy(struct PySlepcBVObject *
  */
   __pyx_v_self->bv = NULL;
 
-  /* "SLEPc/BV.pyx":83
+  /* "SLEPc/BV.pyx":82
  *         CHKERR( BVDestroy(&self.bv) )
  *         self.bv = NULL
  *         return self             # <<<<<<<<<<<<<<
@@ -10080,7 +11203,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_4destroy(struct PySlepcBVObject *
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":77
+  /* "SLEPc/BV.pyx":76
  *         CHKERR( BVView(self.bv, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -10098,7 +11221,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_4destroy(struct PySlepcBVObject *
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":85
+/* "SLEPc/BV.pyx":84
  *         return self
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -10123,6 +11246,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_7create(PyObject *__pyx_v_self, P
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -10135,11 +11259,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_7create(PyObject *__pyx_v_self, P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(3, 85, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(10, 84, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -10148,7 +11273,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_7create(PyObject *__pyx_v_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 85, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 84, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -10170,17 +11295,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_6create(struct PySlepcBVObject *_
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("create", 0);
 
-  /* "SLEPc/BV.pyx":95
+  /* "SLEPc/BV.pyx":94
  *               processes.
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())             # <<<<<<<<<<<<<<
  *         cdef SlepcBV newbv = NULL
  *         CHKERR( BVCreate(ccomm, &newbv) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 95, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 94, __pyx_L1_error)
   __pyx_v_ccomm = __pyx_t_1;
 
-  /* "SLEPc/BV.pyx":96
+  /* "SLEPc/BV.pyx":95
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcBV newbv = NULL             # <<<<<<<<<<<<<<
@@ -10189,16 +11314,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_6create(struct PySlepcBVObject *_
  */
   __pyx_v_newbv = NULL;
 
-  /* "SLEPc/BV.pyx":97
+  /* "SLEPc/BV.pyx":96
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcBV newbv = NULL
  *         CHKERR( BVCreate(ccomm, &newbv) )             # <<<<<<<<<<<<<<
  *         SlepcCLEAR(self.obj); self.bv = newbv
  *         return self
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVCreate(__pyx_v_ccomm, (&__pyx_v_newbv))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(3, 97, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVCreate(__pyx_v_ccomm, (&__pyx_v_newbv))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 96, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":98
+  /* "SLEPc/BV.pyx":97
  *         cdef SlepcBV newbv = NULL
  *         CHKERR( BVCreate(ccomm, &newbv) )
  *         SlepcCLEAR(self.obj); self.bv = newbv             # <<<<<<<<<<<<<<
@@ -10208,7 +11333,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_6create(struct PySlepcBVObject *_
   __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(__pyx_v_self->__pyx_base.obj);
   __pyx_v_self->bv = __pyx_v_newbv;
 
-  /* "SLEPc/BV.pyx":99
+  /* "SLEPc/BV.pyx":98
  *         CHKERR( BVCreate(ccomm, &newbv) )
  *         SlepcCLEAR(self.obj); self.bv = newbv
  *         return self             # <<<<<<<<<<<<<<
@@ -10220,7 +11345,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_6create(struct PySlepcBVObject *_
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":85
+  /* "SLEPc/BV.pyx":84
  *         return self
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -10238,7 +11363,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_6create(struct PySlepcBVObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":101
+/* "SLEPc/BV.pyx":100
  *         return self
  * 
  *     def duplicate(self):             # <<<<<<<<<<<<<<
@@ -10273,7 +11398,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_8duplicate(struct PySlepcBVObject
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("duplicate", 0);
 
-  /* "SLEPc/BV.pyx":105
+  /* "SLEPc/BV.pyx":104
  *         Duplicate the BV object with the same type and dimensions.
  *         """
  *         cdef BV bv = type(self)()             # <<<<<<<<<<<<<<
@@ -10282,7 +11407,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_8duplicate(struct PySlepcBVObject
  */
   __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
   __pyx_t_2 = ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))); __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -10292,27 +11417,27 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_8duplicate(struct PySlepcBVObject
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 105, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 104, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 105, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 104, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8slepc4py_5SLEPc_BV))))) __PYX_ERR(3, 105, __pyx_L1_error)
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8slepc4py_5SLEPc_BV))))) __PYX_ERR(10, 104, __pyx_L1_error)
   __pyx_v_bv = ((struct PySlepcBVObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/BV.pyx":106
+  /* "SLEPc/BV.pyx":105
  *         """
  *         cdef BV bv = type(self)()
  *         CHKERR( BVDuplicate(self.bv, &bv.bv) )             # <<<<<<<<<<<<<<
  *         return bv
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVDuplicate(__pyx_v_self->bv, (&__pyx_v_bv->bv))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 106, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVDuplicate(__pyx_v_self->bv, (&__pyx_v_bv->bv))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 105, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":107
+  /* "SLEPc/BV.pyx":106
  *         cdef BV bv = type(self)()
  *         CHKERR( BVDuplicate(self.bv, &bv.bv) )
  *         return bv             # <<<<<<<<<<<<<<
@@ -10324,7 +11449,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_8duplicate(struct PySlepcBVObject
   __pyx_r = ((PyObject *)__pyx_v_bv);
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":101
+  /* "SLEPc/BV.pyx":100
  *         return self
  * 
  *     def duplicate(self):             # <<<<<<<<<<<<<<
@@ -10346,7 +11471,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_8duplicate(struct PySlepcBVObject
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":109
+/* "SLEPc/BV.pyx":108
  *         return bv
  * 
  *     def copy(self, BV result=None):             # <<<<<<<<<<<<<<
@@ -10371,6 +11496,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_11copy(PyObject *__pyx_v_self, Py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -10383,11 +11509,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_11copy(PyObject *__pyx_v_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "copy") < 0)) __PYX_ERR(3, 109, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "copy") < 0)) __PYX_ERR(10, 108, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -10396,13 +11523,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_11copy(PyObject *__pyx_v_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("copy", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 109, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("copy", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 108, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_result), __pyx_ptype_8slepc4py_5SLEPc_BV, 1, "result", 0))) __PYX_ERR(3, 109, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_result), __pyx_ptype_8slepc4py_5SLEPc_BV, 1, "result", 0))) __PYX_ERR(10, 108, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_10copy(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_result);
 
   /* function exit code */
@@ -10426,7 +11553,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_10copy(struct PySlepcBVObject *__
   __Pyx_RefNannySetupContext("copy", 0);
   __Pyx_INCREF((PyObject *)__pyx_v_result);
 
-  /* "SLEPc/BV.pyx":110
+  /* "SLEPc/BV.pyx":109
  * 
  *     def copy(self, BV result=None):
  *         if result is None:             # <<<<<<<<<<<<<<
@@ -10437,7 +11564,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_10copy(struct PySlepcBVObject *__
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "SLEPc/BV.pyx":111
+    /* "SLEPc/BV.pyx":110
  *     def copy(self, BV result=None):
  *         if result is None:
  *             result = type(self)()             # <<<<<<<<<<<<<<
@@ -10446,7 +11573,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_10copy(struct PySlepcBVObject *__
  */
     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
     __pyx_t_4 = ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))); __pyx_t_5 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
       if (likely(__pyx_t_5)) {
         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
@@ -10456,18 +11583,18 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_10copy(struct PySlepcBVObject *__
       }
     }
     if (__pyx_t_5) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 111, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 110, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 111, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 110, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8slepc4py_5SLEPc_BV))))) __PYX_ERR(3, 111, __pyx_L1_error)
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8slepc4py_5SLEPc_BV))))) __PYX_ERR(10, 110, __pyx_L1_error)
     __Pyx_DECREF_SET(__pyx_v_result, ((struct PySlepcBVObject *)__pyx_t_3));
     __pyx_t_3 = 0;
 
-    /* "SLEPc/BV.pyx":110
+    /* "SLEPc/BV.pyx":109
  * 
  *     def copy(self, BV result=None):
  *         if result is None:             # <<<<<<<<<<<<<<
@@ -10476,7 +11603,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_10copy(struct PySlepcBVObject *__
  */
   }
 
-  /* "SLEPc/BV.pyx":112
+  /* "SLEPc/BV.pyx":111
  *         if result is None:
  *             result = type(self)()
  *         if result.bv == NULL:             # <<<<<<<<<<<<<<
@@ -10486,16 +11613,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_10copy(struct PySlepcBVObject *__
   __pyx_t_2 = ((__pyx_v_result->bv == NULL) != 0);
   if (__pyx_t_2) {
 
-    /* "SLEPc/BV.pyx":113
+    /* "SLEPc/BV.pyx":112
  *             result = type(self)()
  *         if result.bv == NULL:
  *             CHKERR( BVDuplicate(self.bv, &result.bv) )             # <<<<<<<<<<<<<<
  *         CHKERR( BVCopy(self.bv, result.bv) )
  *         return result
  */
-    __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVDuplicate(__pyx_v_self->bv, (&__pyx_v_result->bv))); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(3, 113, __pyx_L1_error)
+    __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVDuplicate(__pyx_v_self->bv, (&__pyx_v_result->bv))); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(10, 112, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":112
+    /* "SLEPc/BV.pyx":111
  *         if result is None:
  *             result = type(self)()
  *         if result.bv == NULL:             # <<<<<<<<<<<<<<
@@ -10504,16 +11631,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_10copy(struct PySlepcBVObject *__
  */
   }
 
-  /* "SLEPc/BV.pyx":114
+  /* "SLEPc/BV.pyx":113
  *         if result.bv == NULL:
  *             CHKERR( BVDuplicate(self.bv, &result.bv) )
  *         CHKERR( BVCopy(self.bv, result.bv) )             # <<<<<<<<<<<<<<
  *         return result
  * 
  */
-  __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVCopy(__pyx_v_self->bv, __pyx_v_result->bv)); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(3, 114, __pyx_L1_error)
+  __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVCopy(__pyx_v_self->bv, __pyx_v_result->bv)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(10, 113, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":115
+  /* "SLEPc/BV.pyx":114
  *             CHKERR( BVDuplicate(self.bv, &result.bv) )
  *         CHKERR( BVCopy(self.bv, result.bv) )
  *         return result             # <<<<<<<<<<<<<<
@@ -10525,7 +11652,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_10copy(struct PySlepcBVObject *__
   __pyx_r = ((PyObject *)__pyx_v_result);
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":109
+  /* "SLEPc/BV.pyx":108
  *         return bv
  * 
  *     def copy(self, BV result=None):             # <<<<<<<<<<<<<<
@@ -10547,7 +11674,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_10copy(struct PySlepcBVObject *__
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":117
+/* "SLEPc/BV.pyx":116
  *         return result
  * 
  *     def setType(self, bv_type):             # <<<<<<<<<<<<<<
@@ -10571,6 +11698,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_13setType(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -10581,7 +11709,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_13setType(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(3, 117, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(10, 116, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -10592,7 +11720,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_13setType(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 117, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 116, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.setType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -10614,7 +11742,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_12setType(struct PySlepcBVObject
   __Pyx_RefNannySetupContext("setType", 0);
   __Pyx_INCREF(__pyx_v_bv_type);
 
-  /* "SLEPc/BV.pyx":126
+  /* "SLEPc/BV.pyx":125
  *                   The inner product type to be used.
  *         """
  *         cdef SlepcBVType cval = NULL             # <<<<<<<<<<<<<<
@@ -10623,28 +11751,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_12setType(struct PySlepcBVObject
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/BV.pyx":127
+  /* "SLEPc/BV.pyx":126
  *         """
  *         cdef SlepcBVType cval = NULL
  *         bv_type = str2bytes(bv_type, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( BVSetType(self.bv, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_bv_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 127, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_bv_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 126, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_bv_type, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/BV.pyx":128
+  /* "SLEPc/BV.pyx":127
  *         cdef SlepcBVType cval = NULL
  *         bv_type = str2bytes(bv_type, &cval)
  *         CHKERR( BVSetType(self.bv, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getType(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetType(__pyx_v_self->bv, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(3, 128, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetType(__pyx_v_self->bv, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 127, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":117
+  /* "SLEPc/BV.pyx":116
  *         return result
  * 
  *     def setType(self, bv_type):             # <<<<<<<<<<<<<<
@@ -10666,7 +11794,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_12setType(struct PySlepcBVObject
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":130
+/* "SLEPc/BV.pyx":129
  *         CHKERR( BVSetType(self.bv, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -10699,7 +11827,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_14getType(struct PySlepcBVObject
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getType", 0);
 
-  /* "SLEPc/BV.pyx":139
+  /* "SLEPc/BV.pyx":138
  *               The inner product type currently being used.
  *         """
  *         cdef SlepcBVType bv_type = NULL             # <<<<<<<<<<<<<<
@@ -10708,16 +11836,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_14getType(struct PySlepcBVObject
  */
   __pyx_v_bv_type = NULL;
 
-  /* "SLEPc/BV.pyx":140
+  /* "SLEPc/BV.pyx":139
  *         """
  *         cdef SlepcBVType bv_type = NULL
  *         CHKERR( BVGetType(self.bv, &bv_type) )             # <<<<<<<<<<<<<<
  *         return bytes2str(bv_type)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetType(__pyx_v_self->bv, (&__pyx_v_bv_type))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 140, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetType(__pyx_v_self->bv, (&__pyx_v_bv_type))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 139, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":141
+  /* "SLEPc/BV.pyx":140
  *         cdef SlepcBVType bv_type = NULL
  *         CHKERR( BVGetType(self.bv, &bv_type) )
  *         return bytes2str(bv_type)             # <<<<<<<<<<<<<<
@@ -10725,13 +11853,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_14getType(struct PySlepcBVObject
  *     def setSizes(self, sizes, m):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_bv_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 141, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_bv_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 140, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":130
+  /* "SLEPc/BV.pyx":129
  *         CHKERR( BVSetType(self.bv, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -10750,7 +11878,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_14getType(struct PySlepcBVObject
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":143
+/* "SLEPc/BV.pyx":142
  *         return bytes2str(bv_type)
  * 
  *     def setSizes(self, sizes, m):             # <<<<<<<<<<<<<<
@@ -10775,7 +11903,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_17setSizes(PyObject *__pyx_v_self
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -10784,14 +11914,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_17setSizes(PyObject *__pyx_v_self
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sizes)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setSizes", 1, 2, 2, 1); __PYX_ERR(3, 143, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("setSizes", 1, 2, 2, 1); __PYX_ERR(10, 142, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setSizes") < 0)) __PYX_ERR(3, 143, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setSizes") < 0)) __PYX_ERR(10, 142, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -10804,7 +11935,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_17setSizes(PyObject *__pyx_v_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setSizes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 143, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setSizes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 142, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.setSizes", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -10827,7 +11958,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_16setSizes(struct PySlepcBVObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setSizes", 0);
 
-  /* "SLEPc/BV.pyx":160
+  /* "SLEPc/BV.pyx":159
  *         or ``None`` to have it automatically set.
  *         """
  *         cdef PetscInt n=0, N=0             # <<<<<<<<<<<<<<
@@ -10837,35 +11968,35 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_16setSizes(struct PySlepcBVObject
   __pyx_v_n = 0;
   __pyx_v_N = 0;
 
-  /* "SLEPc/BV.pyx":161
+  /* "SLEPc/BV.pyx":160
  *         """
  *         cdef PetscInt n=0, N=0
  *         cdef PetscInt ival = asInt(m)             # <<<<<<<<<<<<<<
  *         BV_Sizes(sizes, &n, &N)
  *         CHKERR( BVSetSizes(self.bv, n, N, ival) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_m); if (unlikely(__pyx_t_1 == -1L && PyErr_Occurred())) __PYX_ERR(3, 161, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_m); if (unlikely(__pyx_t_1 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(10, 160, __pyx_L1_error)
   __pyx_v_ival = __pyx_t_1;
 
-  /* "SLEPc/BV.pyx":162
+  /* "SLEPc/BV.pyx":161
  *         cdef PetscInt n=0, N=0
  *         cdef PetscInt ival = asInt(m)
  *         BV_Sizes(sizes, &n, &N)             # <<<<<<<<<<<<<<
  *         CHKERR( BVSetSizes(self.bv, n, N, ival) )
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_BV_Sizes(__pyx_v_sizes, (&__pyx_v_n), (&__pyx_v_N)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(3, 162, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_BV_Sizes(__pyx_v_sizes, (&__pyx_v_n), (&__pyx_v_N)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 161, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":163
+  /* "SLEPc/BV.pyx":162
  *         cdef PetscInt ival = asInt(m)
  *         BV_Sizes(sizes, &n, &N)
  *         CHKERR( BVSetSizes(self.bv, n, N, ival) )             # <<<<<<<<<<<<<<
  * 
- *     def setSizesFromVec(self, Vec w not None, m):
+ *     def setSizesFromVec(self, Vec w, m):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetSizes(__pyx_v_self->bv, __pyx_v_n, __pyx_v_N, __pyx_v_ival)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(3, 163, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetSizes(__pyx_v_self->bv, __pyx_v_n, __pyx_v_N, __pyx_v_ival)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 162, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":143
+  /* "SLEPc/BV.pyx":142
  *         return bytes2str(bv_type)
  * 
  *     def setSizes(self, sizes, m):             # <<<<<<<<<<<<<<
@@ -10885,10 +12016,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_16setSizes(struct PySlepcBVObject
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":165
+/* "SLEPc/BV.pyx":164
  *         CHKERR( BVSetSizes(self.bv, n, N, ival) )
  * 
- *     def setSizesFromVec(self, Vec w not None, m):             # <<<<<<<<<<<<<<
+ *     def setSizesFromVec(self, Vec w, m):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the local and global sizes, and the number of columns. Local and
  */
@@ -10910,7 +12041,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_19setSizesFromVec(PyObject *__pyx
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -10919,14 +12052,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_19setSizesFromVec(PyObject *__pyx
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setSizesFromVec", 1, 2, 2, 1); __PYX_ERR(3, 165, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("setSizesFromVec", 1, 2, 2, 1); __PYX_ERR(10, 164, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setSizesFromVec") < 0)) __PYX_ERR(3, 165, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setSizesFromVec") < 0)) __PYX_ERR(10, 164, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -10939,13 +12073,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_19setSizesFromVec(PyObject *__pyx
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setSizesFromVec", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 165, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setSizesFromVec", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 164, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.setSizesFromVec", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_w), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "w", 0))) __PYX_ERR(3, 165, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_w), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "w", 0))) __PYX_ERR(10, 164, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_18setSizesFromVec(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_w, __pyx_v_m);
 
   /* function exit code */
@@ -10965,29 +12099,29 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_18setSizesFromVec(struct PySlepcB
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setSizesFromVec", 0);
 
-  /* "SLEPc/BV.pyx":177
+  /* "SLEPc/BV.pyx":176
  *             The number of columns.
  *         """
  *         cdef PetscInt ival = asInt(m)             # <<<<<<<<<<<<<<
  *         CHKERR( BVSetSizesFromVec(self.bv, w.vec, ival) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_m); if (unlikely(__pyx_t_1 == -1L && PyErr_Occurred())) __PYX_ERR(3, 177, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_m); if (unlikely(__pyx_t_1 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(10, 176, __pyx_L1_error)
   __pyx_v_ival = __pyx_t_1;
 
-  /* "SLEPc/BV.pyx":178
+  /* "SLEPc/BV.pyx":177
  *         """
  *         cdef PetscInt ival = asInt(m)
  *         CHKERR( BVSetSizesFromVec(self.bv, w.vec, ival) )             # <<<<<<<<<<<<<<
  * 
  *     def getSizes(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetSizesFromVec(__pyx_v_self->bv, __pyx_v_w->vec, __pyx_v_ival)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(3, 178, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetSizesFromVec(__pyx_v_self->bv, __pyx_v_w->vec, __pyx_v_ival)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 177, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":165
+  /* "SLEPc/BV.pyx":164
  *         CHKERR( BVSetSizes(self.bv, n, N, ival) )
  * 
- *     def setSizesFromVec(self, Vec w not None, m):             # <<<<<<<<<<<<<<
+ *     def setSizesFromVec(self, Vec w, m):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the local and global sizes, and the number of columns. Local and
  */
@@ -11004,7 +12138,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_18setSizesFromVec(struct PySlepcB
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":180
+/* "SLEPc/BV.pyx":179
  *         CHKERR( BVSetSizesFromVec(self.bv, w.vec, ival) )
  * 
  *     def getSizes(self):             # <<<<<<<<<<<<<<
@@ -11041,7 +12175,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_20getSizes(struct PySlepcBVObject
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getSizes", 0);
 
-  /* "SLEPc/BV.pyx":191
+  /* "SLEPc/BV.pyx":190
  *                 The number of columns.
  *         """
  *         cdef PetscInt n=0, N=0, m=0             # <<<<<<<<<<<<<<
@@ -11052,16 +12186,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_20getSizes(struct PySlepcBVObject
   __pyx_v_N = 0;
   __pyx_v_m = 0;
 
-  /* "SLEPc/BV.pyx":192
+  /* "SLEPc/BV.pyx":191
  *         """
  *         cdef PetscInt n=0, N=0, m=0
  *         CHKERR( BVGetSizes(self.bv, &n, &N, &m) )             # <<<<<<<<<<<<<<
  *         return ((toInt(n), toInt(N)), toInt(m))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetSizes(__pyx_v_self->bv, (&__pyx_v_n), (&__pyx_v_N), (&__pyx_v_m))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 192, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetSizes(__pyx_v_self->bv, (&__pyx_v_n), (&__pyx_v_N), (&__pyx_v_m))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 191, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":193
+  /* "SLEPc/BV.pyx":192
  *         cdef PetscInt n=0, N=0, m=0
  *         CHKERR( BVGetSizes(self.bv, &n, &N, &m) )
  *         return ((toInt(n), toInt(N)), toInt(m))             # <<<<<<<<<<<<<<
@@ -11069,11 +12203,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_20getSizes(struct PySlepcBVObject
  * 
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 193, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 192, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_N); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 193, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_N); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 192, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 193, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 192, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
@@ -11081,9 +12215,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_20getSizes(struct PySlepcBVObject
   PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
   __pyx_t_2 = 0;
   __pyx_t_3 = 0;
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 193, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 192, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 193, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 192, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_4);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
@@ -11095,7 +12229,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_20getSizes(struct PySlepcBVObject
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":180
+  /* "SLEPc/BV.pyx":179
  *         CHKERR( BVSetSizesFromVec(self.bv, w.vec, ival) )
  * 
  *     def getSizes(self):             # <<<<<<<<<<<<<<
@@ -11116,7 +12250,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_20getSizes(struct PySlepcBVObject
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":196
+/* "SLEPc/BV.pyx":195
  * 
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -11140,6 +12274,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_23setOptionsPrefix(PyObject *__py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -11150,7 +12285,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_23setOptionsPrefix(PyObject *__py
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(3, 196, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(10, 195, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -11161,7 +12296,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_23setOptionsPrefix(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 196, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 195, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.setOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -11183,7 +12318,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_22setOptionsPrefix(struct PySlepc
   __Pyx_RefNannySetupContext("setOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/BV.pyx":213
+  /* "SLEPc/BV.pyx":212
  *         AUTOMATICALLY the hyphen.
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -11192,28 +12327,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_22setOptionsPrefix(struct PySlepc
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/BV.pyx":214
+  /* "SLEPc/BV.pyx":213
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( BVSetOptionsPrefix(self.bv, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 214, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 213, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/BV.pyx":215
+  /* "SLEPc/BV.pyx":214
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( BVSetOptionsPrefix(self.bv, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getOptionsPrefix(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetOptionsPrefix(__pyx_v_self->bv, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(3, 215, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetOptionsPrefix(__pyx_v_self->bv, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 214, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":196
+  /* "SLEPc/BV.pyx":195
  * 
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -11235,7 +12370,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_22setOptionsPrefix(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":217
+/* "SLEPc/BV.pyx":216
  *         CHKERR( BVSetOptionsPrefix(self.bv, cval) )
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -11268,7 +12403,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_24getOptionsPrefix(struct PySlepc
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getOptionsPrefix", 0);
 
-  /* "SLEPc/BV.pyx":227
+  /* "SLEPc/BV.pyx":226
  *                 The prefix string set for this BV object.
  *         """
  *         cdef const_char *prefix = NULL             # <<<<<<<<<<<<<<
@@ -11277,16 +12412,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_24getOptionsPrefix(struct PySlepc
  */
   __pyx_v_prefix = NULL;
 
-  /* "SLEPc/BV.pyx":228
+  /* "SLEPc/BV.pyx":227
  *         """
  *         cdef const_char *prefix = NULL
  *         CHKERR( BVGetOptionsPrefix(self.bv, &prefix) )             # <<<<<<<<<<<<<<
  *         return bytes2str(prefix)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetOptionsPrefix(__pyx_v_self->bv, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 228, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetOptionsPrefix(__pyx_v_self->bv, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 227, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":229
+  /* "SLEPc/BV.pyx":228
  *         cdef const_char *prefix = NULL
  *         CHKERR( BVGetOptionsPrefix(self.bv, &prefix) )
  *         return bytes2str(prefix)             # <<<<<<<<<<<<<<
@@ -11294,13 +12429,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_24getOptionsPrefix(struct PySlepc
  *     def setFromOptions(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 229, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 228, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":217
+  /* "SLEPc/BV.pyx":216
  *         CHKERR( BVSetOptionsPrefix(self.bv, cval) )
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -11319,7 +12454,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_24getOptionsPrefix(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":231
+/* "SLEPc/BV.pyx":230
  *         return bytes2str(prefix)
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -11350,16 +12485,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_26setFromOptions(struct PySlepcBV
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setFromOptions", 0);
 
-  /* "SLEPc/BV.pyx":240
+  /* "SLEPc/BV.pyx":239
  *         option.
  *         """
  *         CHKERR( BVSetFromOptions(self.bv) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetFromOptions(__pyx_v_self->bv)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 240, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetFromOptions(__pyx_v_self->bv)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 239, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":231
+  /* "SLEPc/BV.pyx":230
  *         return bytes2str(prefix)
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -11379,7 +12514,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_26setFromOptions(struct PySlepcBV
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":244
+/* "SLEPc/BV.pyx":243
  *     #
  * 
  *     def getOrthogonalization(self):             # <<<<<<<<<<<<<<
@@ -11419,7 +12554,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_28getOrthogonalization(struct PyS
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("getOrthogonalization", 0);
 
-  /* "SLEPc/BV.pyx":260
+  /* "SLEPc/BV.pyx":259
  *               The type of block orthogonalization .
  *         """
  *         cdef SlepcBVOrthogType val1 = BV_ORTHOG_CGS             # <<<<<<<<<<<<<<
@@ -11428,7 +12563,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_28getOrthogonalization(struct PyS
  */
   __pyx_v_val1 = BV_ORTHOG_CGS;
 
-  /* "SLEPc/BV.pyx":261
+  /* "SLEPc/BV.pyx":260
  *         """
  *         cdef SlepcBVOrthogType val1 = BV_ORTHOG_CGS
  *         cdef SlepcBVOrthogRefineType val2 = BV_ORTHOG_REFINE_IFNEEDED             # <<<<<<<<<<<<<<
@@ -11437,7 +12572,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_28getOrthogonalization(struct PyS
  */
   __pyx_v_val2 = BV_ORTHOG_REFINE_IFNEEDED;
 
-  /* "SLEPc/BV.pyx":262
+  /* "SLEPc/BV.pyx":261
  *         cdef SlepcBVOrthogType val1 = BV_ORTHOG_CGS
  *         cdef SlepcBVOrthogRefineType val2 = BV_ORTHOG_REFINE_IFNEEDED
  *         cdef SlepcBVOrthogBlockType val3 = BV_ORTHOG_BLOCK_GS             # <<<<<<<<<<<<<<
@@ -11446,7 +12581,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_28getOrthogonalization(struct PyS
  */
   __pyx_v_val3 = BV_ORTHOG_BLOCK_GS;
 
-  /* "SLEPc/BV.pyx":263
+  /* "SLEPc/BV.pyx":262
  *         cdef SlepcBVOrthogRefineType val2 = BV_ORTHOG_REFINE_IFNEEDED
  *         cdef SlepcBVOrthogBlockType val3 = BV_ORTHOG_BLOCK_GS
  *         cdef PetscReal rval = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -11455,16 +12590,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_28getOrthogonalization(struct PyS
  */
   __pyx_v_rval = PETSC_DEFAULT;
 
-  /* "SLEPc/BV.pyx":264
+  /* "SLEPc/BV.pyx":263
  *         cdef SlepcBVOrthogBlockType val3 = BV_ORTHOG_BLOCK_GS
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )             # <<<<<<<<<<<<<<
  *         return (val1, val2, toReal(rval), val3)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetOrthogonalization(__pyx_v_self->bv, (&__pyx_v_val1), (&__pyx_v_val2), (&__pyx_v_rval), (&__pyx_v_val3))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 264, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetOrthogonalization(__pyx_v_self->bv, (&__pyx_v_val1), (&__pyx_v_val2), (&__pyx_v_rval), (&__pyx_v_val3))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 263, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":265
+  /* "SLEPc/BV.pyx":264
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )
  *         return (val1, val2, toReal(rval), val3)             # <<<<<<<<<<<<<<
@@ -11472,15 +12607,15 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_28getOrthogonalization(struct PyS
  *     def setOrthogonalization(self, type=None, refine=None, eta=None, block=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_BVOrthogType(__pyx_v_val1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 265, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_BVOrthogType(__pyx_v_val1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 264, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyInt_From_BVOrthogRefineType(__pyx_v_val2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 265, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_BVOrthogRefineType(__pyx_v_val2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 264, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 265, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 264, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyInt_From_BVOrthogBlockType(__pyx_v_val3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 265, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyInt_From_BVOrthogBlockType(__pyx_v_val3); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 264, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 265, __pyx_L1_error)
+  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 264, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
@@ -11498,7 +12633,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_28getOrthogonalization(struct PyS
   __pyx_t_6 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":244
+  /* "SLEPc/BV.pyx":243
  *     #
  * 
  *     def getOrthogonalization(self):             # <<<<<<<<<<<<<<
@@ -11521,7 +12656,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_28getOrthogonalization(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":267
+/* "SLEPc/BV.pyx":266
  *         return (val1, val2, toReal(rval), val3)
  * 
  *     def setOrthogonalization(self, type=None, refine=None, eta=None, block=None):             # <<<<<<<<<<<<<<
@@ -11552,9 +12687,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_31setOrthogonalization(PyObject *
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -11565,16 +12704,19 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_31setOrthogonalization(PyObject *
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_type);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_refine);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_eta);
           if (value) { values[2] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  3:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_block);
@@ -11582,14 +12724,18 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_31setOrthogonalization(PyObject *
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOrthogonalization") < 0)) __PYX_ERR(3, 267, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOrthogonalization") < 0)) __PYX_ERR(10, 266, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -11601,7 +12747,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_31setOrthogonalization(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOrthogonalization", 0, 0, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 267, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOrthogonalization", 0, 0, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 266, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.setOrthogonalization", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -11630,7 +12776,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_30setOrthogonalization(struct PyS
   PetscReal __pyx_t_7;
   __Pyx_RefNannySetupContext("setOrthogonalization", 0);
 
-  /* "SLEPc/BV.pyx":299
+  /* "SLEPc/BV.pyx":298
  *         computation is done column by column with the vector orthogonalization.
  *         """
  *         cdef SlepcBVOrthogType val1 = BV_ORTHOG_CGS             # <<<<<<<<<<<<<<
@@ -11639,7 +12785,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_30setOrthogonalization(struct PyS
  */
   __pyx_v_val1 = BV_ORTHOG_CGS;
 
-  /* "SLEPc/BV.pyx":300
+  /* "SLEPc/BV.pyx":299
  *         """
  *         cdef SlepcBVOrthogType val1 = BV_ORTHOG_CGS
  *         cdef SlepcBVOrthogRefineType val2 = BV_ORTHOG_REFINE_IFNEEDED             # <<<<<<<<<<<<<<
@@ -11648,7 +12794,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_30setOrthogonalization(struct PyS
  */
   __pyx_v_val2 = BV_ORTHOG_REFINE_IFNEEDED;
 
-  /* "SLEPc/BV.pyx":301
+  /* "SLEPc/BV.pyx":300
  *         cdef SlepcBVOrthogType val1 = BV_ORTHOG_CGS
  *         cdef SlepcBVOrthogRefineType val2 = BV_ORTHOG_REFINE_IFNEEDED
  *         cdef SlepcBVOrthogBlockType val3 = BV_ORTHOG_BLOCK_GS             # <<<<<<<<<<<<<<
@@ -11657,7 +12803,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_30setOrthogonalization(struct PyS
  */
   __pyx_v_val3 = BV_ORTHOG_BLOCK_GS;
 
-  /* "SLEPc/BV.pyx":302
+  /* "SLEPc/BV.pyx":301
  *         cdef SlepcBVOrthogRefineType val2 = BV_ORTHOG_REFINE_IFNEEDED
  *         cdef SlepcBVOrthogBlockType val3 = BV_ORTHOG_BLOCK_GS
  *         cdef PetscReal rval = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -11666,16 +12812,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_30setOrthogonalization(struct PyS
  */
   __pyx_v_rval = PETSC_DEFAULT;
 
-  /* "SLEPc/BV.pyx":303
+  /* "SLEPc/BV.pyx":302
  *         cdef SlepcBVOrthogBlockType val3 = BV_ORTHOG_BLOCK_GS
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )             # <<<<<<<<<<<<<<
  *         if type   is not None: val1 = type
  *         if refine is not None: val2 = refine
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetOrthogonalization(__pyx_v_self->bv, (&__pyx_v_val1), (&__pyx_v_val2), (&__pyx_v_rval), (&__pyx_v_val3))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 303, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetOrthogonalization(__pyx_v_self->bv, (&__pyx_v_val1), (&__pyx_v_val2), (&__pyx_v_rval), (&__pyx_v_val3))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 302, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":304
+  /* "SLEPc/BV.pyx":303
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )
  *         if type   is not None: val1 = type             # <<<<<<<<<<<<<<
@@ -11685,11 +12831,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_30setOrthogonalization(struct PyS
   __pyx_t_2 = (__pyx_v_type != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
-    __pyx_t_4 = ((BVOrthogType)__Pyx_PyInt_As_BVOrthogType(__pyx_v_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 304, __pyx_L1_error)
+    __pyx_t_4 = ((BVOrthogType)__Pyx_PyInt_As_BVOrthogType(__pyx_v_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 303, __pyx_L1_error)
     __pyx_v_val1 = __pyx_t_4;
   }
 
-  /* "SLEPc/BV.pyx":305
+  /* "SLEPc/BV.pyx":304
  *         CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )
  *         if type   is not None: val1 = type
  *         if refine is not None: val2 = refine             # <<<<<<<<<<<<<<
@@ -11699,11 +12845,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_30setOrthogonalization(struct PyS
   __pyx_t_3 = (__pyx_v_refine != Py_None);
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
-    __pyx_t_5 = ((BVOrthogRefineType)__Pyx_PyInt_As_BVOrthogRefineType(__pyx_v_refine)); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 305, __pyx_L1_error)
+    __pyx_t_5 = ((BVOrthogRefineType)__Pyx_PyInt_As_BVOrthogRefineType(__pyx_v_refine)); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 304, __pyx_L1_error)
     __pyx_v_val2 = __pyx_t_5;
   }
 
-  /* "SLEPc/BV.pyx":306
+  /* "SLEPc/BV.pyx":305
  *         if type   is not None: val1 = type
  *         if refine is not None: val2 = refine
  *         if block  is not None: val3 = block             # <<<<<<<<<<<<<<
@@ -11713,11 +12859,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_30setOrthogonalization(struct PyS
   __pyx_t_2 = (__pyx_v_block != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
-    __pyx_t_6 = ((BVOrthogBlockType)__Pyx_PyInt_As_BVOrthogBlockType(__pyx_v_block)); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 306, __pyx_L1_error)
+    __pyx_t_6 = ((BVOrthogBlockType)__Pyx_PyInt_As_BVOrthogBlockType(__pyx_v_block)); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 305, __pyx_L1_error)
     __pyx_v_val3 = __pyx_t_6;
   }
 
-  /* "SLEPc/BV.pyx":307
+  /* "SLEPc/BV.pyx":306
  *         if refine is not None: val2 = refine
  *         if block  is not None: val3 = block
  *         if eta    is not None: rval = asReal(eta)             # <<<<<<<<<<<<<<
@@ -11727,20 +12873,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_30setOrthogonalization(struct PyS
   __pyx_t_3 = (__pyx_v_eta != Py_None);
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
-    __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_eta); if (unlikely(__pyx_t_7 == -1.0 && PyErr_Occurred())) __PYX_ERR(3, 307, __pyx_L1_error)
+    __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_eta); if (unlikely(__pyx_t_7 == ((PetscReal)-1.0) && PyErr_Occurred())) __PYX_ERR(10, 306, __pyx_L1_error)
     __pyx_v_rval = __pyx_t_7;
   }
 
-  /* "SLEPc/BV.pyx":308
+  /* "SLEPc/BV.pyx":307
  *         if block  is not None: val3 = block
  *         if eta    is not None: rval = asReal(eta)
  *         CHKERR( BVSetOrthogonalization(self.bv, val1, val2, rval, val3) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetOrthogonalization(__pyx_v_self->bv, __pyx_v_val1, __pyx_v_val2, __pyx_v_rval, __pyx_v_val3)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 308, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetOrthogonalization(__pyx_v_self->bv, __pyx_v_val1, __pyx_v_val2, __pyx_v_rval, __pyx_v_val3)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 307, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":267
+  /* "SLEPc/BV.pyx":266
  *         return (val1, val2, toReal(rval), val3)
  * 
  *     def setOrthogonalization(self, type=None, refine=None, eta=None, block=None):             # <<<<<<<<<<<<<<
@@ -11760,7 +12906,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_30setOrthogonalization(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":312
+/* "SLEPc/BV.pyx":311
  *     #
  * 
  *     def getMatrix(self):             # <<<<<<<<<<<<<<
@@ -11795,19 +12941,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_32getMatrix(struct PySlepcBVObjec
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("getMatrix", 0);
 
-  /* "SLEPc/BV.pyx":320
+  /* "SLEPc/BV.pyx":319
  *         mat: the matrix of the inner product
  *         """
  *         cdef Mat mat = Mat()             # <<<<<<<<<<<<<<
  *         cdef PetscBool indef = PETSC_FALSE
  *         CHKERR( BVGetMatrix(self.bv, &mat.mat, &indef) )
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 320, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 319, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_mat = ((struct PyPetscMatObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/BV.pyx":321
+  /* "SLEPc/BV.pyx":320
  *         """
  *         cdef Mat mat = Mat()
  *         cdef PetscBool indef = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -11816,16 +12962,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_32getMatrix(struct PySlepcBVObjec
  */
   __pyx_v_indef = PETSC_FALSE;
 
-  /* "SLEPc/BV.pyx":322
+  /* "SLEPc/BV.pyx":321
  *         cdef Mat mat = Mat()
  *         cdef PetscBool indef = PETSC_FALSE
  *         CHKERR( BVGetMatrix(self.bv, &mat.mat, &indef) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(mat.obj)
  *         return mat, <bint>indef
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetMatrix(__pyx_v_self->bv, (&__pyx_v_mat->mat), (&__pyx_v_indef))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(3, 322, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetMatrix(__pyx_v_self->bv, (&__pyx_v_mat->mat), (&__pyx_v_indef))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 321, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":323
+  /* "SLEPc/BV.pyx":322
  *         cdef PetscBool indef = PETSC_FALSE
  *         CHKERR( BVGetMatrix(self.bv, &mat.mat, &indef) )
  *         PetscINCREF(mat.obj)             # <<<<<<<<<<<<<<
@@ -11834,17 +12980,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_32getMatrix(struct PySlepcBVObjec
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_mat->__pyx_base.obj);
 
-  /* "SLEPc/BV.pyx":324
+  /* "SLEPc/BV.pyx":323
  *         CHKERR( BVGetMatrix(self.bv, &mat.mat, &indef) )
  *         PetscINCREF(mat.obj)
  *         return mat, <bint>indef             # <<<<<<<<<<<<<<
  * 
- *     def setMatrix(self, Mat mat, bint indef):
+ *     def setMatrix(self, Mat mat or None, bint indef):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_PetscBool(__pyx_v_indef); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 324, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_PetscBool(__pyx_v_indef); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 323, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 324, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 323, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(((PyObject *)__pyx_v_mat));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_mat));
@@ -11856,7 +13002,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_32getMatrix(struct PySlepcBVObjec
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":312
+  /* "SLEPc/BV.pyx":311
  *     #
  * 
  *     def getMatrix(self):             # <<<<<<<<<<<<<<
@@ -11877,17 +13023,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_32getMatrix(struct PySlepcBVObjec
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":326
+/* "SLEPc/BV.pyx":325
  *         return mat, <bint>indef
  * 
- *     def setMatrix(self, Mat mat, bint indef):             # <<<<<<<<<<<<<<
+ *     def setMatrix(self, Mat mat or None, bint indef):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the bilinear form to be used for inner products.
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_35setMatrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_2BV_34setMatrix[] = "BV.setMatrix(self, Mat mat, bool indef)\n\n        Sets the bilinear form to be used for inner products.\n\n        Parameters\n        ----------\n        mat:  Mat, optional\n              The matrix of the inner product.\n        indef: bool, optional\n               Whether the matrix is indefinite\n        ";
+static char __pyx_doc_8slepc4py_5SLEPc_2BV_34setMatrix[] = "BV.setMatrix(self, Mat mat, bool indef)\n\n        Sets the bilinear form to be used for inner products.\n\n        Parameters\n        ----------\n        mat:  Mat or None\n              The matrix of the inner product.\n        indef: bool, optional\n               Whether the matrix is indefinite\n        ";
 static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_35setMatrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   struct PyPetscMatObject *__pyx_v_mat = 0;
   int __pyx_v_indef;
@@ -11902,7 +13048,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_35setMatrix(PyObject *__pyx_v_sel
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -11911,14 +13059,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_35setMatrix(PyObject *__pyx_v_sel
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mat)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_indef)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setMatrix", 1, 2, 2, 1); __PYX_ERR(3, 326, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("setMatrix", 1, 2, 2, 1); __PYX_ERR(10, 325, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setMatrix") < 0)) __PYX_ERR(3, 326, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setMatrix") < 0)) __PYX_ERR(10, 325, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -11927,17 +13076,17 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_35setMatrix(PyObject *__pyx_v_sel
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
     }
     __pyx_v_mat = ((struct PyPetscMatObject *)values[0]);
-    __pyx_v_indef = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_indef == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 326, __pyx_L3_error)
+    __pyx_v_indef = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_indef == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 325, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setMatrix", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 326, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setMatrix", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 325, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.setMatrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "mat", 0))) __PYX_ERR(3, 326, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mat), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "mat", 0))) __PYX_ERR(10, 325, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_34setMatrix(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_mat, __pyx_v_indef);
 
   /* function exit code */
@@ -11954,30 +13103,30 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_34setMatrix(struct PySlepcBVObjec
   PetscBool __pyx_v_tval;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  void *__pyx_t_1;
+  Mat __pyx_t_1;
   int __pyx_t_2;
   PetscBool __pyx_t_3;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("setMatrix", 0);
 
-  /* "SLEPc/BV.pyx":337
+  /* "SLEPc/BV.pyx":336
  *                Whether the matrix is indefinite
  *         """
- *         cdef PetscMat m = NULL if mat is None else mat.mat             # <<<<<<<<<<<<<<
+ *         cdef PetscMat m = <PetscMat>NULL if mat is None else mat.mat             # <<<<<<<<<<<<<<
  *         cdef PetscBool tval = PETSC_TRUE if indef else PETSC_FALSE
  *         CHKERR( BVSetMatrix(self.bv, m, tval) )
  */
   __pyx_t_2 = (((PyObject *)__pyx_v_mat) == Py_None);
   if ((__pyx_t_2 != 0)) {
-    __pyx_t_1 = NULL;
+    __pyx_t_1 = ((Mat)NULL);
   } else {
     __pyx_t_1 = __pyx_v_mat->mat;
   }
   __pyx_v_m = __pyx_t_1;
 
-  /* "SLEPc/BV.pyx":338
+  /* "SLEPc/BV.pyx":337
  *         """
- *         cdef PetscMat m = NULL if mat is None else mat.mat
+ *         cdef PetscMat m = <PetscMat>NULL if mat is None else mat.mat
  *         cdef PetscBool tval = PETSC_TRUE if indef else PETSC_FALSE             # <<<<<<<<<<<<<<
  *         CHKERR( BVSetMatrix(self.bv, m, tval) )
  * 
@@ -11989,19 +13138,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_34setMatrix(struct PySlepcBVObjec
   }
   __pyx_v_tval = __pyx_t_3;
 
-  /* "SLEPc/BV.pyx":339
- *         cdef PetscMat m = NULL if mat is None else mat.mat
+  /* "SLEPc/BV.pyx":338
+ *         cdef PetscMat m = <PetscMat>NULL if mat is None else mat.mat
  *         cdef PetscBool tval = PETSC_TRUE if indef else PETSC_FALSE
  *         CHKERR( BVSetMatrix(self.bv, m, tval) )             # <<<<<<<<<<<<<<
  * 
- *     def applyMatrix(self, Vec x not None, Vec y not None):
+ *     def applyMatrix(self, Vec x, Vec y):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetMatrix(__pyx_v_self->bv, __pyx_v_m, __pyx_v_tval)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 339, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetMatrix(__pyx_v_self->bv, __pyx_v_m, __pyx_v_tval)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 338, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":326
+  /* "SLEPc/BV.pyx":325
  *         return mat, <bint>indef
  * 
- *     def setMatrix(self, Mat mat, bint indef):             # <<<<<<<<<<<<<<
+ *     def setMatrix(self, Mat mat or None, bint indef):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the bilinear form to be used for inner products.
  */
@@ -12018,10 +13167,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_34setMatrix(struct PySlepcBVObjec
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":341
+/* "SLEPc/BV.pyx":340
  *         CHKERR( BVSetMatrix(self.bv, m, tval) )
  * 
- *     def applyMatrix(self, Vec x not None, Vec y not None):             # <<<<<<<<<<<<<<
+ *     def applyMatrix(self, Vec x, Vec y):             # <<<<<<<<<<<<<<
  *         """
  *         Multiplies a vector with the matrix associated to the bilinear
  */
@@ -12043,7 +13192,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_37applyMatrix(PyObject *__pyx_v_s
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -12052,14 +13203,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_37applyMatrix(PyObject *__pyx_v_s
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("applyMatrix", 1, 2, 2, 1); __PYX_ERR(3, 341, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("applyMatrix", 1, 2, 2, 1); __PYX_ERR(10, 340, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "applyMatrix") < 0)) __PYX_ERR(3, 341, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "applyMatrix") < 0)) __PYX_ERR(10, 340, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -12072,14 +13224,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_37applyMatrix(PyObject *__pyx_v_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("applyMatrix", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 341, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("applyMatrix", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 340, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.applyMatrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "x", 0))) __PYX_ERR(3, 341, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "y", 0))) __PYX_ERR(3, 341, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "x", 0))) __PYX_ERR(10, 340, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "y", 0))) __PYX_ERR(10, 340, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_36applyMatrix(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_x, __pyx_v_y);
 
   /* function exit code */
@@ -12097,19 +13249,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_36applyMatrix(struct PySlepcBVObj
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("applyMatrix", 0);
 
-  /* "SLEPc/BV.pyx":358
+  /* "SLEPc/BV.pyx":357
  *         copies the vector.
  *         """
  *         CHKERR( BVApplyMatrix(self.bv, x.vec, y.vec) )             # <<<<<<<<<<<<<<
  * 
  *     def setActiveColumns(self, int l, int k):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVApplyMatrix(__pyx_v_self->bv, __pyx_v_x->vec, __pyx_v_y->vec)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 358, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVApplyMatrix(__pyx_v_self->bv, __pyx_v_x->vec, __pyx_v_y->vec)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 357, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":341
+  /* "SLEPc/BV.pyx":340
  *         CHKERR( BVSetMatrix(self.bv, m, tval) )
  * 
- *     def applyMatrix(self, Vec x not None, Vec y not None):             # <<<<<<<<<<<<<<
+ *     def applyMatrix(self, Vec x, Vec y):             # <<<<<<<<<<<<<<
  *         """
  *         Multiplies a vector with the matrix associated to the bilinear
  */
@@ -12126,7 +13278,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_36applyMatrix(struct PySlepcBVObj
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":360
+/* "SLEPc/BV.pyx":359
  *         CHKERR( BVApplyMatrix(self.bv, x.vec, y.vec) )
  * 
  *     def setActiveColumns(self, int l, int k):             # <<<<<<<<<<<<<<
@@ -12151,7 +13303,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_39setActiveColumns(PyObject *__py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -12160,14 +13314,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_39setActiveColumns(PyObject *__py
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_l)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setActiveColumns", 1, 2, 2, 1); __PYX_ERR(3, 360, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("setActiveColumns", 1, 2, 2, 1); __PYX_ERR(10, 359, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setActiveColumns") < 0)) __PYX_ERR(3, 360, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setActiveColumns") < 0)) __PYX_ERR(10, 359, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -12175,12 +13330,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_39setActiveColumns(PyObject *__py
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
     }
-    __pyx_v_l = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_l == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 360, __pyx_L3_error)
-    __pyx_v_k = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 360, __pyx_L3_error)
+    __pyx_v_l = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_l == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 359, __pyx_L3_error)
+    __pyx_v_k = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 359, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setActiveColumns", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 360, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setActiveColumns", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 359, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.setActiveColumns", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -12199,16 +13354,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_38setActiveColumns(struct PySlepc
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setActiveColumns", 0);
 
-  /* "SLEPc/BV.pyx":371
+  /* "SLEPc/BV.pyx":370
  *             The active number of columns.
  *         """
  *         CHKERR( BVSetActiveColumns(self.bv, l, k) )             # <<<<<<<<<<<<<<
  * 
  *     def getActiveColumns(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetActiveColumns(__pyx_v_self->bv, __pyx_v_l, __pyx_v_k)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 371, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetActiveColumns(__pyx_v_self->bv, __pyx_v_l, __pyx_v_k)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 370, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":360
+  /* "SLEPc/BV.pyx":359
  *         CHKERR( BVApplyMatrix(self.bv, x.vec, y.vec) )
  * 
  *     def setActiveColumns(self, int l, int k):             # <<<<<<<<<<<<<<
@@ -12228,7 +13383,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_38setActiveColumns(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":373
+/* "SLEPc/BV.pyx":372
  *         CHKERR( BVSetActiveColumns(self.bv, l, k) )
  * 
  *     def getActiveColumns(self):             # <<<<<<<<<<<<<<
@@ -12264,7 +13419,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_40getActiveColumns(struct PySlepc
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getActiveColumns", 0);
 
-  /* "SLEPc/BV.pyx":384
+  /* "SLEPc/BV.pyx":383
  *             The active number of columns.
  *         """
  *         cdef PetscInt l=0, k=0             # <<<<<<<<<<<<<<
@@ -12274,16 +13429,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_40getActiveColumns(struct PySlepc
   __pyx_v_l = 0;
   __pyx_v_k = 0;
 
-  /* "SLEPc/BV.pyx":385
+  /* "SLEPc/BV.pyx":384
  *         """
  *         cdef PetscInt l=0, k=0
  *         CHKERR( BVGetActiveColumns(self.bv, &l, &k) )             # <<<<<<<<<<<<<<
  *         return (toInt(l), toInt(k))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetActiveColumns(__pyx_v_self->bv, (&__pyx_v_l), (&__pyx_v_k))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 385, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetActiveColumns(__pyx_v_self->bv, (&__pyx_v_l), (&__pyx_v_k))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 384, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":386
+  /* "SLEPc/BV.pyx":385
  *         cdef PetscInt l=0, k=0
  *         CHKERR( BVGetActiveColumns(self.bv, &l, &k) )
  *         return (toInt(l), toInt(k))             # <<<<<<<<<<<<<<
@@ -12291,11 +13446,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_40getActiveColumns(struct PySlepc
  *     def scaleColumn(self, int j, alpha):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_l); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 386, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_l); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 385, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 386, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 385, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 386, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 385, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
@@ -12307,7 +13462,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_40getActiveColumns(struct PySlepc
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":373
+  /* "SLEPc/BV.pyx":372
  *         CHKERR( BVSetActiveColumns(self.bv, l, k) )
  * 
  *     def getActiveColumns(self):             # <<<<<<<<<<<<<<
@@ -12328,7 +13483,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_40getActiveColumns(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":388
+/* "SLEPc/BV.pyx":387
  *         return (toInt(l), toInt(k))
  * 
  *     def scaleColumn(self, int j, alpha):             # <<<<<<<<<<<<<<
@@ -12353,7 +13508,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_43scaleColumn(PyObject *__pyx_v_s
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -12362,14 +13519,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_43scaleColumn(PyObject *__pyx_v_s
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_j)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_alpha)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("scaleColumn", 1, 2, 2, 1); __PYX_ERR(3, 388, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("scaleColumn", 1, 2, 2, 1); __PYX_ERR(10, 387, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "scaleColumn") < 0)) __PYX_ERR(3, 388, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "scaleColumn") < 0)) __PYX_ERR(10, 387, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -12377,12 +13535,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_43scaleColumn(PyObject *__pyx_v_s
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
     }
-    __pyx_v_j = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_j == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 388, __pyx_L3_error)
+    __pyx_v_j = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_j == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 387, __pyx_L3_error)
     __pyx_v_alpha = values[1];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("scaleColumn", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 388, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("scaleColumn", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 387, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.scaleColumn", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -12403,26 +13561,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_42scaleColumn(struct PySlepcBVObj
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("scaleColumn", 0);
 
-  /* "SLEPc/BV.pyx":399
+  /* "SLEPc/BV.pyx":398
  *             scaling factor.
  *         """
  *         cdef PetscScalar sval = asScalar(alpha)             # <<<<<<<<<<<<<<
  *         CHKERR( BVScaleColumn(self.bv, j, sval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_alpha); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 399, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_alpha); if (unlikely(__pyx_t_1 == ((PetscScalar)((PetscScalar)(-1.0))) && PyErr_Occurred())) __PYX_ERR(10, 398, __pyx_L1_error)
   __pyx_v_sval = __pyx_t_1;
 
-  /* "SLEPc/BV.pyx":400
+  /* "SLEPc/BV.pyx":399
  *         """
  *         cdef PetscScalar sval = asScalar(alpha)
  *         CHKERR( BVScaleColumn(self.bv, j, sval) )             # <<<<<<<<<<<<<<
  * 
  *     def scale(self, alpha):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVScaleColumn(__pyx_v_self->bv, __pyx_v_j, __pyx_v_sval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(3, 400, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVScaleColumn(__pyx_v_self->bv, __pyx_v_j, __pyx_v_sval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 399, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":388
+  /* "SLEPc/BV.pyx":387
  *         return (toInt(l), toInt(k))
  * 
  *     def scaleColumn(self, int j, alpha):             # <<<<<<<<<<<<<<
@@ -12442,7 +13600,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_42scaleColumn(struct PySlepcBVObj
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":402
+/* "SLEPc/BV.pyx":401
  *         CHKERR( BVScaleColumn(self.bv, j, sval) )
  * 
  *     def scale(self, alpha):             # <<<<<<<<<<<<<<
@@ -12466,6 +13624,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_45scale(PyObject *__pyx_v_self, P
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -12476,7 +13635,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_45scale(PyObject *__pyx_v_self, P
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "scale") < 0)) __PYX_ERR(3, 402, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "scale") < 0)) __PYX_ERR(10, 401, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -12487,7 +13646,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_45scale(PyObject *__pyx_v_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("scale", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 402, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("scale", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 401, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -12508,26 +13667,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_44scale(struct PySlepcBVObject *_
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("scale", 0);
 
-  /* "SLEPc/BV.pyx":415
+  /* "SLEPc/BV.pyx":414
  *         All active columns (except the leading ones) are scaled.
  *         """
  *         cdef PetscScalar sval = asScalar(alpha)             # <<<<<<<<<<<<<<
  *         CHKERR( BVScale(self.bv, sval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_alpha); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 415, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_alpha); if (unlikely(__pyx_t_1 == ((PetscScalar)((PetscScalar)(-1.0))) && PyErr_Occurred())) __PYX_ERR(10, 414, __pyx_L1_error)
   __pyx_v_sval = __pyx_t_1;
 
-  /* "SLEPc/BV.pyx":416
+  /* "SLEPc/BV.pyx":415
  *         """
  *         cdef PetscScalar sval = asScalar(alpha)
  *         CHKERR( BVScale(self.bv, sval) )             # <<<<<<<<<<<<<<
  * 
- *     def insertVec(self, int j, Vec w not None):
+ *     def insertVec(self, int j, Vec w):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVScale(__pyx_v_self->bv, __pyx_v_sval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(3, 416, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVScale(__pyx_v_self->bv, __pyx_v_sval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 415, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":402
+  /* "SLEPc/BV.pyx":401
  *         CHKERR( BVScaleColumn(self.bv, j, sval) )
  * 
  *     def scale(self, alpha):             # <<<<<<<<<<<<<<
@@ -12547,10 +13706,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_44scale(struct PySlepcBVObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":418
+/* "SLEPc/BV.pyx":417
  *         CHKERR( BVScale(self.bv, sval) )
  * 
- *     def insertVec(self, int j, Vec w not None):             # <<<<<<<<<<<<<<
+ *     def insertVec(self, int j, Vec w):             # <<<<<<<<<<<<<<
  *         """
  *         Insert a vector into the specified column.
  */
@@ -12572,7 +13731,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_47insertVec(PyObject *__pyx_v_sel
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -12581,14 +13742,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_47insertVec(PyObject *__pyx_v_sel
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_j)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("insertVec", 1, 2, 2, 1); __PYX_ERR(3, 418, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("insertVec", 1, 2, 2, 1); __PYX_ERR(10, 417, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "insertVec") < 0)) __PYX_ERR(3, 418, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "insertVec") < 0)) __PYX_ERR(10, 417, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -12596,18 +13758,18 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_47insertVec(PyObject *__pyx_v_sel
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
     }
-    __pyx_v_j = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_j == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 418, __pyx_L3_error)
+    __pyx_v_j = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_j == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 417, __pyx_L3_error)
     __pyx_v_w = ((struct PyPetscVecObject *)values[1]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("insertVec", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 418, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("insertVec", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 417, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.insertVec", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_w), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "w", 0))) __PYX_ERR(3, 418, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_w), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "w", 0))) __PYX_ERR(10, 417, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_46insertVec(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_j, __pyx_v_w);
 
   /* function exit code */
@@ -12625,19 +13787,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_46insertVec(struct PySlepcBVObjec
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("insertVec", 0);
 
-  /* "SLEPc/BV.pyx":429
+  /* "SLEPc/BV.pyx":428
  *             The vector to be copied.
  *         """
  *         CHKERR( BVInsertVec(self.bv, j, w.vec) )             # <<<<<<<<<<<<<<
  * 
- *     def insertVecs(self, int s, W not None, bint orth):
+ *     def insertVecs(self, int s, W, bint orth):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVInsertVec(__pyx_v_self->bv, __pyx_v_j, __pyx_v_w->vec)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 429, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVInsertVec(__pyx_v_self->bv, __pyx_v_j, __pyx_v_w->vec)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 428, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":418
+  /* "SLEPc/BV.pyx":417
  *         CHKERR( BVScale(self.bv, sval) )
  * 
- *     def insertVec(self, int j, Vec w not None):             # <<<<<<<<<<<<<<
+ *     def insertVec(self, int j, Vec w):             # <<<<<<<<<<<<<<
  *         """
  *         Insert a vector into the specified column.
  */
@@ -12654,10 +13816,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_46insertVec(struct PySlepcBVObjec
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":431
+/* "SLEPc/BV.pyx":430
  *         CHKERR( BVInsertVec(self.bv, j, w.vec) )
  * 
- *     def insertVecs(self, int s, W not None, bint orth):             # <<<<<<<<<<<<<<
+ *     def insertVecs(self, int s, W, bint orth):             # <<<<<<<<<<<<<<
  *         """
  *         Insert a set of vectors into specified columns.
  */
@@ -12680,8 +13842,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_49insertVecs(PyObject *__pyx_v_se
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -12690,19 +13855,21 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_49insertVecs(PyObject *__pyx_v_se
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_s)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_W)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("insertVecs", 1, 3, 3, 1); __PYX_ERR(3, 431, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("insertVecs", 1, 3, 3, 1); __PYX_ERR(10, 430, __pyx_L3_error)
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_orth)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("insertVecs", 1, 3, 3, 2); __PYX_ERR(3, 431, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("insertVecs", 1, 3, 3, 2); __PYX_ERR(10, 430, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "insertVecs") < 0)) __PYX_ERR(3, 431, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "insertVecs") < 0)) __PYX_ERR(10, 430, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -12711,28 +13878,21 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_49insertVecs(PyObject *__pyx_v_se
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_s = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_s == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 431, __pyx_L3_error)
+    __pyx_v_s = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_s == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 430, __pyx_L3_error)
     __pyx_v_W = values[1];
-    __pyx_v_orth = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_orth == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 431, __pyx_L3_error)
+    __pyx_v_orth = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_orth == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 430, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("insertVecs", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 431, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("insertVecs", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 430, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.insertVecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(((PyObject *)__pyx_v_W) == Py_None)) {
-    PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "W"); __PYX_ERR(3, 431, __pyx_L1_error)
-  }
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_48insertVecs(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_s, __pyx_v_W, __pyx_v_orth);
 
   /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12757,7 +13917,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_48insertVecs(struct PySlepcBVObje
   __Pyx_RefNannySetupContext("insertVecs", 0);
   __Pyx_INCREF(__pyx_v_W);
 
-  /* "SLEPc/BV.pyx":457
+  /* "SLEPc/BV.pyx":456
  *         decreased.
  *         """
  *         if isinstance(W, Vec): W = [W]             # <<<<<<<<<<<<<<
@@ -12767,7 +13927,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_48insertVecs(struct PySlepcBVObje
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_W, __pyx_ptype_8petsc4py_5PETSc_Vec); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 457, __pyx_L1_error)
+    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 456, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_W);
     __Pyx_GIVEREF(__pyx_v_W);
@@ -12776,7 +13936,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_48insertVecs(struct PySlepcBVObje
     __pyx_t_3 = 0;
   }
 
-  /* "SLEPc/BV.pyx":458
+  /* "SLEPc/BV.pyx":457
  *         """
  *         if isinstance(W, Vec): W = [W]
  *         cdef PetscVec *ws = NULL             # <<<<<<<<<<<<<<
@@ -12785,7 +13945,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_48insertVecs(struct PySlepcBVObje
  */
   __pyx_v_ws = NULL;
 
-  /* "SLEPc/BV.pyx":459
+  /* "SLEPc/BV.pyx":458
  *         if isinstance(W, Vec): W = [W]
  *         cdef PetscVec *ws = NULL
  *         cdef Py_ssize_t i = 0, ns = len(W)             # <<<<<<<<<<<<<<
@@ -12793,22 +13953,22 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_48insertVecs(struct PySlepcBVObje
  *         for i in range(ns): ws[i] = (<Vec?>W[i]).vec
  */
   __pyx_v_i = 0;
-  __pyx_t_4 = PyObject_Length(__pyx_v_W); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 459, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_W); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(10, 458, __pyx_L1_error)
   __pyx_v_ns = __pyx_t_4;
 
-  /* "SLEPc/BV.pyx":460
+  /* "SLEPc/BV.pyx":459
  *         cdef PetscVec *ws = NULL
  *         cdef Py_ssize_t i = 0, ns = len(W)
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&ws)             # <<<<<<<<<<<<<<
  *         for i in range(ns): ws[i] = (<Vec?>W[i]).vec
  *         cdef PetscInt m = <PetscInt>ns
  */
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_ns) * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_ws))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 460, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_ns) * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_ws))); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 459, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_tmp = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "SLEPc/BV.pyx":461
+  /* "SLEPc/BV.pyx":460
  *         cdef Py_ssize_t i = 0, ns = len(W)
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&ws)
  *         for i in range(ns): ws[i] = (<Vec?>W[i]).vec             # <<<<<<<<<<<<<<
@@ -12818,15 +13978,15 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_48insertVecs(struct PySlepcBVObje
   __pyx_t_4 = __pyx_v_ns;
   for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
     __pyx_v_i = __pyx_t_5;
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_W, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 461, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_W, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 460, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Vec)))) __PYX_ERR(3, 461, __pyx_L1_error)
+    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Vec)))) __PYX_ERR(10, 460, __pyx_L1_error)
     __pyx_t_6 = ((struct PyPetscVecObject *)__pyx_t_3)->vec;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     (__pyx_v_ws[__pyx_v_i]) = __pyx_t_6;
   }
 
-  /* "SLEPc/BV.pyx":462
+  /* "SLEPc/BV.pyx":461
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&ws)
  *         for i in range(ns): ws[i] = (<Vec?>W[i]).vec
  *         cdef PetscInt m = <PetscInt>ns             # <<<<<<<<<<<<<<
@@ -12835,7 +13995,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_48insertVecs(struct PySlepcBVObje
  */
   __pyx_v_m = ((PetscInt)__pyx_v_ns);
 
-  /* "SLEPc/BV.pyx":463
+  /* "SLEPc/BV.pyx":462
  *         for i in range(ns): ws[i] = (<Vec?>W[i]).vec
  *         cdef PetscInt m = <PetscInt>ns
  *         cdef PetscBool tval = PETSC_TRUE if orth else PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -12849,33 +14009,33 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_48insertVecs(struct PySlepcBVObje
   }
   __pyx_v_tval = __pyx_t_7;
 
-  /* "SLEPc/BV.pyx":464
+  /* "SLEPc/BV.pyx":463
  *         cdef PetscInt m = <PetscInt>ns
  *         cdef PetscBool tval = PETSC_TRUE if orth else PETSC_FALSE
  *         CHKERR( BVInsertVecs(self.bv, <PetscInt>s, &m, ws, tval) )             # <<<<<<<<<<<<<<
  *         return toInt(m)
  * 
  */
-  __pyx_t_8 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVInsertVecs(__pyx_v_self->bv, ((PetscInt)__pyx_v_s), (&__pyx_v_m), __pyx_v_ws, __pyx_v_tval)); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(3, 464, __pyx_L1_error)
+  __pyx_t_8 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVInsertVecs(__pyx_v_self->bv, ((PetscInt)__pyx_v_s), (&__pyx_v_m), __pyx_v_ws, __pyx_v_tval)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(10, 463, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":465
+  /* "SLEPc/BV.pyx":464
  *         cdef PetscBool tval = PETSC_TRUE if orth else PETSC_FALSE
  *         CHKERR( BVInsertVecs(self.bv, <PetscInt>s, &m, ws, tval) )
  *         return toInt(m)             # <<<<<<<<<<<<<<
  * 
- *     def dotVec(self, Vec v not None):
+ *     def dotVec(self, Vec v):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 465, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 464, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":431
+  /* "SLEPc/BV.pyx":430
  *         CHKERR( BVInsertVec(self.bv, j, w.vec) )
  * 
- *     def insertVecs(self, int s, W not None, bint orth):             # <<<<<<<<<<<<<<
+ *     def insertVecs(self, int s, W, bint orth):             # <<<<<<<<<<<<<<
  *         """
  *         Insert a set of vectors into specified columns.
  */
@@ -12893,10 +14053,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_48insertVecs(struct PySlepcBVObje
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":467
+/* "SLEPc/BV.pyx":466
  *         return toInt(m)
  * 
- *     def dotVec(self, Vec v not None):             # <<<<<<<<<<<<<<
+ *     def dotVec(self, Vec v):             # <<<<<<<<<<<<<<
  *         """
  *         Computes multiple dot products of a vector against all the column
  */
@@ -12917,6 +14077,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_51dotVec(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -12927,7 +14088,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_51dotVec(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dotVec") < 0)) __PYX_ERR(3, 467, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dotVec") < 0)) __PYX_ERR(10, 466, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -12938,13 +14099,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_51dotVec(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("dotVec", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 467, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("dotVec", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 466, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.dotVec", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_v), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "v", 0))) __PYX_ERR(3, 467, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_v), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "v", 0))) __PYX_ERR(10, 466, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_v);
 
   /* function exit code */
@@ -12978,17 +14139,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
   __Pyx_RefNannySetupContext("dotVec", 0);
   __Pyx_INCREF((PyObject *)__pyx_v_v);
 
-  /* "SLEPc/BV.pyx":489
+  /* "SLEPc/BV.pyx":488
  *         then the result is m = X^H*B*y.
  *         """
  *         l, k = self.getActiveColumns()             # <<<<<<<<<<<<<<
  *         cdef PetscScalar* mval = NULL
- *         cdef tmp = allocate(<size_t>(k - l)*sizeof(PetscScalar),<void**>&mval)
+ *         cdef tmp = allocate(<size_t>(k - l)*sizeof(PetscScalar), <void**>&mval)
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getActiveColumns); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 489, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getActiveColumns); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 488, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -12998,16 +14159,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 489, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 488, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 489, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 488, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
     PyObject* sequence = __pyx_t_1;
-    #if CYTHON_COMPILING_IN_CPYTHON
+    #if !CYTHON_COMPILING_IN_PYPY
     Py_ssize_t size = Py_SIZE(sequence);
     #else
     Py_ssize_t size = PySequence_Size(sequence);
@@ -13015,9 +14176,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
     if (unlikely(size != 2)) {
       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      __PYX_ERR(3, 489, __pyx_L1_error)
+      __PYX_ERR(10, 488, __pyx_L1_error)
     }
-    #if CYTHON_COMPILING_IN_CPYTHON
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
     if (likely(PyTuple_CheckExact(sequence))) {
       __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
       __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
@@ -13028,15 +14189,15 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
     __Pyx_INCREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_t_3);
     #else
-    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 489, __pyx_L1_error)
+    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 488, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 489, __pyx_L1_error)
+    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 488, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     #endif
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
     Py_ssize_t index = -1;
-    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 489, __pyx_L1_error)
+    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 488, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
@@ -13044,7 +14205,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
     __Pyx_GOTREF(__pyx_t_2);
     index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
     __Pyx_GOTREF(__pyx_t_3);
-    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(3, 489, __pyx_L1_error)
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(10, 488, __pyx_L1_error)
     __pyx_t_5 = NULL;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     goto __pyx_L4_unpacking_done;
@@ -13052,7 +14213,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
     if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-    __PYX_ERR(3, 489, __pyx_L1_error)
+    __PYX_ERR(10, 488, __pyx_L1_error)
     __pyx_L4_unpacking_done:;
   }
   __pyx_v_l = __pyx_t_2;
@@ -13060,56 +14221,56 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
   __pyx_v_k = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "SLEPc/BV.pyx":490
+  /* "SLEPc/BV.pyx":489
  *         """
  *         l, k = self.getActiveColumns()
  *         cdef PetscScalar* mval = NULL             # <<<<<<<<<<<<<<
- *         cdef tmp = allocate(<size_t>(k - l)*sizeof(PetscScalar),<void**>&mval)
+ *         cdef tmp = allocate(<size_t>(k - l)*sizeof(PetscScalar), <void**>&mval)
  * 
  */
   __pyx_v_mval = NULL;
 
-  /* "SLEPc/BV.pyx":491
+  /* "SLEPc/BV.pyx":490
  *         l, k = self.getActiveColumns()
  *         cdef PetscScalar* mval = NULL
- *         cdef tmp = allocate(<size_t>(k - l)*sizeof(PetscScalar),<void**>&mval)             # <<<<<<<<<<<<<<
+ *         cdef tmp = allocate(<size_t>(k - l)*sizeof(PetscScalar), <void**>&mval)             # <<<<<<<<<<<<<<
  * 
  *         CHKERR( BVDotVec(self.bv, v.vec, mval) )
  */
-  __pyx_t_1 = PyNumber_Subtract(__pyx_v_k, __pyx_v_l); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 491, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Subtract(__pyx_v_k, __pyx_v_l); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 490, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_1); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 491, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_1); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(10, 490, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_t_6) * (sizeof(PetscScalar))), ((void **)(&__pyx_v_mval))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 491, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_t_6) * (sizeof(PetscScalar))), ((void **)(&__pyx_v_mval))); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 490, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_tmp = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "SLEPc/BV.pyx":493
- *         cdef tmp = allocate(<size_t>(k - l)*sizeof(PetscScalar),<void**>&mval)
+  /* "SLEPc/BV.pyx":492
+ *         cdef tmp = allocate(<size_t>(k - l)*sizeof(PetscScalar), <void**>&mval)
  * 
  *         CHKERR( BVDotVec(self.bv, v.vec, mval) )             # <<<<<<<<<<<<<<
  * 
  *         v = Vec().create(COMM_SELF)
  */
-  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVDotVec(__pyx_v_self->bv, __pyx_v_v->vec, __pyx_v_mval)); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(3, 493, __pyx_L1_error)
+  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVDotVec(__pyx_v_self->bv, __pyx_v_v->vec, __pyx_v_mval)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(10, 492, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":495
+  /* "SLEPc/BV.pyx":494
  *         CHKERR( BVDotVec(self.bv, v.vec, mval) )
  * 
  *         v = Vec().create(COMM_SELF)             # <<<<<<<<<<<<<<
  *         v.setType('seq')
- *         v.setSizes((DECIDE,k-l))
+ *         v.setSizes((DECIDE, k-l))
  */
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Vec), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 495, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Vec), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 494, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_create); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 495, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_create); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 494, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 495, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 494, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_4)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -13119,53 +14280,73 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 495, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 494, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 495, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
-    __Pyx_GIVEREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
-    __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 495, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 494, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 494, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 494, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
+      __Pyx_GIVEREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3);
+      __pyx_t_3 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 494, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8petsc4py_5PETSc_Vec))))) __PYX_ERR(3, 495, __pyx_L1_error)
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8petsc4py_5PETSc_Vec))))) __PYX_ERR(10, 494, __pyx_L1_error)
   __Pyx_DECREF_SET(__pyx_v_v, ((struct PyPetscVecObject *)__pyx_t_1));
   __pyx_t_1 = 0;
 
-  /* "SLEPc/BV.pyx":496
+  /* "SLEPc/BV.pyx":495
  * 
  *         v = Vec().create(COMM_SELF)
  *         v.setType('seq')             # <<<<<<<<<<<<<<
- *         v.setSizes((DECIDE,k-l))
- *         v.setArray([mval[i] for i in range(0, k - l)])
+ *         v.setSizes((DECIDE, k-l))
+ *         v.setArray([toScalar(mval[i]) for i in range(0, k - l)])
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_v), __pyx_n_s_setType); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 496, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_v), __pyx_n_s_setType); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 495, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 496, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 495, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "SLEPc/BV.pyx":497
+  /* "SLEPc/BV.pyx":496
  *         v = Vec().create(COMM_SELF)
  *         v.setType('seq')
- *         v.setSizes((DECIDE,k-l))             # <<<<<<<<<<<<<<
- *         v.setArray([mval[i] for i in range(0, k - l)])
+ *         v.setSizes((DECIDE, k-l))             # <<<<<<<<<<<<<<
+ *         v.setArray([toScalar(mval[i]) for i in range(0, k - l)])
  *         v.ghostUpdate()
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_v), __pyx_n_s_setSizes); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 497, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_v), __pyx_n_s_setSizes); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 496, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_DECIDE); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 497, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_DECIDE); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 496, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
-  __pyx_t_3 = PyNumber_Subtract(__pyx_v_k, __pyx_v_l); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 497, __pyx_L1_error)
+  __pyx_t_3 = PyNumber_Subtract(__pyx_v_k, __pyx_v_l); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 496, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 497, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 496, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_8);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8);
@@ -13174,7 +14355,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
   __pyx_t_8 = 0;
   __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
@@ -13184,37 +14365,57 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 497, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 496, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_2);
   } else {
-    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 497, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_GIVEREF(__pyx_t_4);
-    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4);
-    __pyx_t_4 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 497, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_1)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
+      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 496, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
+      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 496, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 496, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_GIVEREF(__pyx_t_4);
+      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4);
+      __pyx_t_4 = 0;
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 496, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "SLEPc/BV.pyx":498
+  /* "SLEPc/BV.pyx":497
  *         v.setType('seq')
- *         v.setSizes((DECIDE,k-l))
- *         v.setArray([mval[i] for i in range(0, k - l)])             # <<<<<<<<<<<<<<
+ *         v.setSizes((DECIDE, k-l))
+ *         v.setArray([toScalar(mval[i]) for i in range(0, k - l)])             # <<<<<<<<<<<<<<
  *         v.ghostUpdate()
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_v), __pyx_n_s_setArray); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 498, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_v), __pyx_n_s_setArray); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 497, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 498, __pyx_L1_error)
+  __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 497, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
-  __pyx_t_4 = PyNumber_Subtract(__pyx_v_k, __pyx_v_l); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 498, __pyx_L1_error)
+  __pyx_t_4 = PyNumber_Subtract(__pyx_v_k, __pyx_v_l); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 497, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 498, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 497, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_int_0);
   __Pyx_GIVEREF(__pyx_int_0);
@@ -13222,34 +14423,34 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
   __Pyx_GIVEREF(__pyx_t_4);
   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4);
   __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 498, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 497, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
     __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_9 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 498, __pyx_L1_error)
+    __pyx_t_9 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 497, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_10 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 498, __pyx_L1_error)
+    __pyx_t_10 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 497, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   for (;;) {
     if (likely(!__pyx_t_10)) {
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_3)) break;
-        #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(3, 498, __pyx_L1_error)
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(10, 497, __pyx_L1_error)
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 498, __pyx_L1_error)
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 497, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         #endif
       } else {
         if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
-        #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(3, 498, __pyx_L1_error)
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(10, 497, __pyx_L1_error)
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 498, __pyx_L1_error)
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 497, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         #endif
       }
@@ -13258,8 +14459,8 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
       if (unlikely(!__pyx_t_4)) {
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
-          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(3, 498, __pyx_L1_error)
+          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+          else __PYX_ERR(10, 497, __pyx_L1_error)
         }
         break;
       }
@@ -13267,15 +14468,15 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
     }
     __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 498, __pyx_L1_error)
-    __pyx_t_4 = PyFloat_FromDouble((__pyx_v_mval[__pyx_t_11])); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 498, __pyx_L1_error)
+    __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(10, 497, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toScalar((__pyx_v_mval[__pyx_t_11])); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 497, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_8, (PyObject*)__pyx_t_4))) __PYX_ERR(3, 498, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_8, (PyObject*)__pyx_t_4))) __PYX_ERR(10, 497, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
@@ -13285,34 +14486,54 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 498, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 497, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __Pyx_GOTREF(__pyx_t_2);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 498, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_GIVEREF(__pyx_t_8);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_8);
-    __pyx_t_8 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 498, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_1)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_8};
+      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 497, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_8};
+      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 497, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 497, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_GIVEREF(__pyx_t_8);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_8);
+      __pyx_t_8 = 0;
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 497, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "SLEPc/BV.pyx":499
- *         v.setSizes((DECIDE,k-l))
- *         v.setArray([mval[i] for i in range(0, k - l)])
+  /* "SLEPc/BV.pyx":498
+ *         v.setSizes((DECIDE, k-l))
+ *         v.setArray([toScalar(mval[i]) for i in range(0, k - l)])
  *         v.ghostUpdate()             # <<<<<<<<<<<<<<
  * 
  *         return v
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_v), __pyx_n_s_ghostUpdate); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 499, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_v), __pyx_n_s_ghostUpdate); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 498, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_4 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
     __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
     if (likely(__pyx_t_4)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
@@ -13322,16 +14543,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 499, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 498, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 499, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 498, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "SLEPc/BV.pyx":501
+  /* "SLEPc/BV.pyx":500
  *         v.ghostUpdate()
  * 
  *         return v             # <<<<<<<<<<<<<<
@@ -13343,10 +14564,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
   __pyx_r = ((PyObject *)__pyx_v_v);
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":467
+  /* "SLEPc/BV.pyx":466
  *         return toInt(m)
  * 
- *     def dotVec(self, Vec v not None):             # <<<<<<<<<<<<<<
+ *     def dotVec(self, Vec v):             # <<<<<<<<<<<<<<
  *         """
  *         Computes multiple dot products of a vector against all the column
  */
@@ -13371,7 +14592,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_50dotVec(struct PySlepcBVObject *
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":503
+/* "SLEPc/BV.pyx":502
  *         return v
  * 
  *     def getColumn(self, int j):             # <<<<<<<<<<<<<<
@@ -13395,6 +14616,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_53getColumn(PyObject *__pyx_v_sel
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -13405,18 +14627,18 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_53getColumn(PyObject *__pyx_v_sel
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getColumn") < 0)) __PYX_ERR(3, 503, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getColumn") < 0)) __PYX_ERR(10, 502, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
     } else {
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
     }
-    __pyx_v_j = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_j == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 503, __pyx_L3_error)
+    __pyx_v_j = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_j == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 502, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getColumn", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 503, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getColumn", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 502, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.getColumn", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -13437,40 +14659,40 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_52getColumn(struct PySlepcBVObjec
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getColumn", 0);
 
-  /* "SLEPc/BV.pyx":522
+  /* "SLEPc/BV.pyx":521
  *         Modifying the returned Vec will change the BV entries as well.
  *         """
  *         cdef Vec v = Vec()             # <<<<<<<<<<<<<<
  *         CHKERR( BVGetColumn(self.bv, j, &v.vec) )
  *         return v
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Vec), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 522, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Vec), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 521, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_v = ((struct PyPetscVecObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/BV.pyx":523
+  /* "SLEPc/BV.pyx":522
  *         """
  *         cdef Vec v = Vec()
  *         CHKERR( BVGetColumn(self.bv, j, &v.vec) )             # <<<<<<<<<<<<<<
  *         return v
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetColumn(__pyx_v_self->bv, __pyx_v_j, (&__pyx_v_v->vec))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(3, 523, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetColumn(__pyx_v_self->bv, __pyx_v_j, (&__pyx_v_v->vec))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 522, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":524
+  /* "SLEPc/BV.pyx":523
  *         cdef Vec v = Vec()
  *         CHKERR( BVGetColumn(self.bv, j, &v.vec) )
  *         return v             # <<<<<<<<<<<<<<
  * 
- *     def restoreColumn(self, int j, Vec v not None):
+ *     def restoreColumn(self, int j, Vec v):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_v));
   __pyx_r = ((PyObject *)__pyx_v_v);
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":503
+  /* "SLEPc/BV.pyx":502
  *         return v
  * 
  *     def getColumn(self, int j):             # <<<<<<<<<<<<<<
@@ -13490,10 +14712,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_52getColumn(struct PySlepcBVObjec
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":526
+/* "SLEPc/BV.pyx":525
  *         return v
  * 
- *     def restoreColumn(self, int j, Vec v not None):             # <<<<<<<<<<<<<<
+ *     def restoreColumn(self, int j, Vec v):             # <<<<<<<<<<<<<<
  *         """
  *         Restore a column obtained with BVGetColumn().
  */
@@ -13515,7 +14737,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_55restoreColumn(PyObject *__pyx_v
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -13524,14 +14748,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_55restoreColumn(PyObject *__pyx_v
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_j)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("restoreColumn", 1, 2, 2, 1); __PYX_ERR(3, 526, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("restoreColumn", 1, 2, 2, 1); __PYX_ERR(10, 525, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "restoreColumn") < 0)) __PYX_ERR(3, 526, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "restoreColumn") < 0)) __PYX_ERR(10, 525, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -13539,18 +14764,18 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_55restoreColumn(PyObject *__pyx_v
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
     }
-    __pyx_v_j = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_j == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 526, __pyx_L3_error)
+    __pyx_v_j = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_j == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 525, __pyx_L3_error)
     __pyx_v_v = ((struct PyPetscVecObject *)values[1]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("restoreColumn", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 526, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("restoreColumn", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 525, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.restoreColumn", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_v), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "v", 0))) __PYX_ERR(3, 526, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_v), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "v", 0))) __PYX_ERR(10, 525, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_54restoreColumn(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_j, __pyx_v_v);
 
   /* function exit code */
@@ -13568,19 +14793,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_54restoreColumn(struct PySlepcBVO
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("restoreColumn", 0);
 
-  /* "SLEPc/BV.pyx":542
+  /* "SLEPc/BV.pyx":541
  *         The arguments must match the corresponding call to BVGetColumn().
  *         """
  *         CHKERR( BVRestoreColumn(self.bv, j, &v.vec) )             # <<<<<<<<<<<<<<
  * 
- *     def dot(self, BV Y not None):
+ *     def dot(self, BV Y):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVRestoreColumn(__pyx_v_self->bv, __pyx_v_j, (&__pyx_v_v->vec))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 542, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVRestoreColumn(__pyx_v_self->bv, __pyx_v_j, (&__pyx_v_v->vec))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 541, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":526
+  /* "SLEPc/BV.pyx":525
  *         return v
  * 
- *     def restoreColumn(self, int j, Vec v not None):             # <<<<<<<<<<<<<<
+ *     def restoreColumn(self, int j, Vec v):             # <<<<<<<<<<<<<<
  *         """
  *         Restore a column obtained with BVGetColumn().
  */
@@ -13597,10 +14822,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_54restoreColumn(struct PySlepcBVO
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":544
+/* "SLEPc/BV.pyx":543
  *         CHKERR( BVRestoreColumn(self.bv, j, &v.vec) )
  * 
- *     def dot(self, BV Y not None):             # <<<<<<<<<<<<<<
+ *     def dot(self, BV Y):             # <<<<<<<<<<<<<<
  *         """
  *         Computes the 'block-dot' product of two basis vectors objects.
  */
@@ -13621,6 +14846,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_57dot(PyObject *__pyx_v_self, PyO
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -13631,7 +14857,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_57dot(PyObject *__pyx_v_self, PyO
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dot") < 0)) __PYX_ERR(3, 544, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dot") < 0)) __PYX_ERR(10, 543, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -13642,13 +14868,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_57dot(PyObject *__pyx_v_self, PyO
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("dot", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 544, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("dot", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 543, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.dot", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Y), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "Y", 0))) __PYX_ERR(3, 544, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Y), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "Y", 0))) __PYX_ERR(10, 543, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_56dot(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_Y);
 
   /* function exit code */
@@ -13675,7 +14901,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_56dot(struct PySlepcBVObject *__p
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("dot", 0);
 
-  /* "SLEPc/BV.pyx":575
+  /* "SLEPc/BV.pyx":574
  *         (resp. X).
  *         """
  *         cdef BV X = self             # <<<<<<<<<<<<<<
@@ -13685,7 +14911,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_56dot(struct PySlepcBVObject *__p
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_v_X = __pyx_v_self;
 
-  /* "SLEPc/BV.pyx":576
+  /* "SLEPc/BV.pyx":575
  *         """
  *         cdef BV X = self
  *         cdef PetscInt ky=0, kx=0             # <<<<<<<<<<<<<<
@@ -13695,41 +14921,41 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_56dot(struct PySlepcBVObject *__p
   __pyx_v_ky = 0;
   __pyx_v_kx = 0;
 
-  /* "SLEPc/BV.pyx":577
+  /* "SLEPc/BV.pyx":576
  *         cdef BV X = self
  *         cdef PetscInt ky=0, kx=0
  *         CHKERR( BVGetActiveColumns(Y.bv, NULL, &ky) )             # <<<<<<<<<<<<<<
  *         CHKERR( BVGetActiveColumns(X.bv, NULL, &kx) )
  *         cdef Mat M = Mat().createDense((ky, kx), comm=COMM_SELF).setUp()
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetActiveColumns(__pyx_v_Y->bv, NULL, (&__pyx_v_ky))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 577, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetActiveColumns(__pyx_v_Y->bv, NULL, (&__pyx_v_ky))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 576, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":578
+  /* "SLEPc/BV.pyx":577
  *         cdef PetscInt ky=0, kx=0
  *         CHKERR( BVGetActiveColumns(Y.bv, NULL, &ky) )
  *         CHKERR( BVGetActiveColumns(X.bv, NULL, &kx) )             # <<<<<<<<<<<<<<
  *         cdef Mat M = Mat().createDense((ky, kx), comm=COMM_SELF).setUp()
  *         CHKERR( BVDot(X.bv, Y.bv, M.mat) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetActiveColumns(__pyx_v_X->bv, NULL, (&__pyx_v_kx))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 578, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetActiveColumns(__pyx_v_X->bv, NULL, (&__pyx_v_kx))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 577, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":579
+  /* "SLEPc/BV.pyx":578
  *         CHKERR( BVGetActiveColumns(Y.bv, NULL, &ky) )
  *         CHKERR( BVGetActiveColumns(X.bv, NULL, &kx) )
  *         cdef Mat M = Mat().createDense((ky, kx), comm=COMM_SELF).setUp()             # <<<<<<<<<<<<<<
  *         CHKERR( BVDot(X.bv, Y.bv, M.mat) )
  *         return M
  */
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 579, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 578, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_createDense); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 579, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_createDense); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 578, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyInt_From_PetscInt(__pyx_v_ky); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 579, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_PetscInt(__pyx_v_ky); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 578, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_5 = __Pyx_PyInt_From_PetscInt(__pyx_v_kx); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 579, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyInt_From_PetscInt(__pyx_v_kx); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 578, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 579, __pyx_L1_error)
+  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 578, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_3);
   PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
@@ -13737,27 +14963,27 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_56dot(struct PySlepcBVObject *__p
   PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
   __pyx_t_3 = 0;
   __pyx_t_5 = 0;
-  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 579, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 578, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_6);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
   __pyx_t_6 = 0;
-  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 579, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 578, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 579, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 578, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_comm, __pyx_t_3) < 0) __PYX_ERR(3, 579, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_comm, __pyx_t_3) < 0) __PYX_ERR(10, 578, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 579, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 578, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_setUp); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 579, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_setUp); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 578, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
@@ -13767,42 +14993,42 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_56dot(struct PySlepcBVObject *__p
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 579, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 578, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 579, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 578, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_8petsc4py_5PETSc_Mat))))) __PYX_ERR(3, 579, __pyx_L1_error)
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_8petsc4py_5PETSc_Mat))))) __PYX_ERR(10, 578, __pyx_L1_error)
   __pyx_v_M = ((struct PyPetscMatObject *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "SLEPc/BV.pyx":580
+  /* "SLEPc/BV.pyx":579
  *         CHKERR( BVGetActiveColumns(X.bv, NULL, &kx) )
  *         cdef Mat M = Mat().createDense((ky, kx), comm=COMM_SELF).setUp()
  *         CHKERR( BVDot(X.bv, Y.bv, M.mat) )             # <<<<<<<<<<<<<<
  *         return M
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVDot(__pyx_v_X->bv, __pyx_v_Y->bv, __pyx_v_M->mat)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 580, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVDot(__pyx_v_X->bv, __pyx_v_Y->bv, __pyx_v_M->mat)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 579, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":581
+  /* "SLEPc/BV.pyx":580
  *         cdef Mat M = Mat().createDense((ky, kx), comm=COMM_SELF).setUp()
  *         CHKERR( BVDot(X.bv, Y.bv, M.mat) )
  *         return M             # <<<<<<<<<<<<<<
  * 
- *     def matProject(self, Mat A, BV Y not None):
+ *     def matProject(self, Mat A or None, BV Y):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_M));
   __pyx_r = ((PyObject *)__pyx_v_M);
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":544
+  /* "SLEPc/BV.pyx":543
  *         CHKERR( BVRestoreColumn(self.bv, j, &v.vec) )
  * 
- *     def dot(self, BV Y not None):             # <<<<<<<<<<<<<<
+ *     def dot(self, BV Y):             # <<<<<<<<<<<<<<
  *         """
  *         Computes the 'block-dot' product of two basis vectors objects.
  */
@@ -13824,10 +15050,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_56dot(struct PySlepcBVObject *__p
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":583
+/* "SLEPc/BV.pyx":582
  *         return M
  * 
- *     def matProject(self, Mat A, BV Y not None):             # <<<<<<<<<<<<<<
+ *     def matProject(self, Mat A or None, BV Y):             # <<<<<<<<<<<<<<
  *         """
  *         Computes the projection of a matrix onto a subspace.
  */
@@ -13849,7 +15075,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_59matProject(PyObject *__pyx_v_se
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -13858,14 +15086,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_59matProject(PyObject *__pyx_v_se
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Y)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("matProject", 1, 2, 2, 1); __PYX_ERR(3, 583, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("matProject", 1, 2, 2, 1); __PYX_ERR(10, 582, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "matProject") < 0)) __PYX_ERR(3, 583, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "matProject") < 0)) __PYX_ERR(10, 582, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -13878,14 +15107,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_59matProject(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("matProject", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 583, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("matProject", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 582, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.matProject", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_A), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "A", 0))) __PYX_ERR(3, 583, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Y), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "Y", 0))) __PYX_ERR(3, 583, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_A), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "A", 0))) __PYX_ERR(10, 582, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Y), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "Y", 0))) __PYX_ERR(10, 582, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_58matProject(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_A, __pyx_v_Y);
 
   /* function exit code */
@@ -13899,176 +15128,176 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_59matProject(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_58matProject(struct PySlepcBVObject *__pyx_v_self, struct PyPetscMatObject *__pyx_v_A, struct PySlepcBVObject *__pyx_v_Y) {
   struct PySlepcBVObject *__pyx_v_X = 0;
-  PetscInt __pyx_v_ky;
   PetscInt __pyx_v_kx;
-  struct PyPetscMatObject *__pyx_v_M = 0;
+  PetscInt __pyx_v_ky;
   Mat __pyx_v_Amat;
+  struct PyPetscMatObject *__pyx_v_M = 0;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
+  Mat __pyx_t_2;
+  int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
-  void *__pyx_t_7;
-  int __pyx_t_8;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("matProject", 0);
 
-  /* "SLEPc/BV.pyx":602
+  /* "SLEPc/BV.pyx":601
  *             Projection of the matrix A onto the subspace.
  *         """
  *         cdef BV X = self             # <<<<<<<<<<<<<<
- *         cdef PetscInt ky=0, kx=0
- *         CHKERR( BVGetActiveColumns(Y.bv, NULL, &ky) )
+ *         cdef PetscInt  kx=0, ky=0
+ *         CHKERR( BVGetActiveColumns(X.bv, NULL, &kx) )
  */
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_v_X = __pyx_v_self;
 
-  /* "SLEPc/BV.pyx":603
+  /* "SLEPc/BV.pyx":602
  *         """
  *         cdef BV X = self
- *         cdef PetscInt ky=0, kx=0             # <<<<<<<<<<<<<<
- *         CHKERR( BVGetActiveColumns(Y.bv, NULL, &ky) )
+ *         cdef PetscInt  kx=0, ky=0             # <<<<<<<<<<<<<<
  *         CHKERR( BVGetActiveColumns(X.bv, NULL, &kx) )
+ *         CHKERR( BVGetActiveColumns(Y.bv, NULL, &ky) )
  */
-  __pyx_v_ky = 0;
   __pyx_v_kx = 0;
+  __pyx_v_ky = 0;
 
-  /* "SLEPc/BV.pyx":604
+  /* "SLEPc/BV.pyx":603
  *         cdef BV X = self
- *         cdef PetscInt ky=0, kx=0
- *         CHKERR( BVGetActiveColumns(Y.bv, NULL, &ky) )             # <<<<<<<<<<<<<<
+ *         cdef PetscInt  kx=0, ky=0
+ *         CHKERR( BVGetActiveColumns(X.bv, NULL, &kx) )             # <<<<<<<<<<<<<<
+ *         CHKERR( BVGetActiveColumns(Y.bv, NULL, &ky) )
+ *         cdef PetscMat Amat = <PetscMat>NULL if A is None else A.mat
+ */
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetActiveColumns(__pyx_v_X->bv, NULL, (&__pyx_v_kx))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 603, __pyx_L1_error)
+
+  /* "SLEPc/BV.pyx":604
+ *         cdef PetscInt  kx=0, ky=0
  *         CHKERR( BVGetActiveColumns(X.bv, NULL, &kx) )
+ *         CHKERR( BVGetActiveColumns(Y.bv, NULL, &ky) )             # <<<<<<<<<<<<<<
+ *         cdef PetscMat Amat = <PetscMat>NULL if A is None else A.mat
  *         cdef Mat M = Mat().createDense((ky, kx), comm=COMM_SELF).setUp()
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetActiveColumns(__pyx_v_Y->bv, NULL, (&__pyx_v_ky))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 604, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetActiveColumns(__pyx_v_Y->bv, NULL, (&__pyx_v_ky))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 604, __pyx_L1_error)
 
   /* "SLEPc/BV.pyx":605
- *         cdef PetscInt ky=0, kx=0
+ *         CHKERR( BVGetActiveColumns(X.bv, NULL, &kx) )
  *         CHKERR( BVGetActiveColumns(Y.bv, NULL, &ky) )
- *         CHKERR( BVGetActiveColumns(X.bv, NULL, &kx) )             # <<<<<<<<<<<<<<
+ *         cdef PetscMat Amat = <PetscMat>NULL if A is None else A.mat             # <<<<<<<<<<<<<<
  *         cdef Mat M = Mat().createDense((ky, kx), comm=COMM_SELF).setUp()
- *         cdef PetscMat Amat = NULL if A is None else A.mat
+ *         CHKERR( BVMatProject(X.bv, Amat, Y.bv, M.mat) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetActiveColumns(__pyx_v_X->bv, NULL, (&__pyx_v_kx))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 605, __pyx_L1_error)
+  __pyx_t_3 = (((PyObject *)__pyx_v_A) == Py_None);
+  if ((__pyx_t_3 != 0)) {
+    __pyx_t_2 = ((Mat)NULL);
+  } else {
+    __pyx_t_2 = __pyx_v_A->mat;
+  }
+  __pyx_v_Amat = __pyx_t_2;
 
   /* "SLEPc/BV.pyx":606
  *         CHKERR( BVGetActiveColumns(Y.bv, NULL, &ky) )
- *         CHKERR( BVGetActiveColumns(X.bv, NULL, &kx) )
+ *         cdef PetscMat Amat = <PetscMat>NULL if A is None else A.mat
  *         cdef Mat M = Mat().createDense((ky, kx), comm=COMM_SELF).setUp()             # <<<<<<<<<<<<<<
- *         cdef PetscMat Amat = NULL if A is None else A.mat
  *         CHKERR( BVMatProject(X.bv, Amat, Y.bv, M.mat) )
+ *         return M
  */
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 606, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_createDense); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 606, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyInt_From_PetscInt(__pyx_v_ky); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 606, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_5 = __Pyx_PyInt_From_PetscInt(__pyx_v_kx); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 606, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 606, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 606, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_createDense); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 606, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_GIVEREF(__pyx_t_3);
-  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyInt_From_PetscInt(__pyx_v_ky); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 606, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_7 = __Pyx_PyInt_From_PetscInt(__pyx_v_kx); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 606, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 606, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_8);
   __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
-  __pyx_t_3 = 0;
+  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_7);
+  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
   __pyx_t_5 = 0;
-  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 606, __pyx_L1_error)
+  __pyx_t_7 = 0;
+  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 606, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_GIVEREF(__pyx_t_8);
+  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
+  __pyx_t_8 = 0;
+  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 606, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_8);
+  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 606, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
-  __pyx_t_6 = 0;
-  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 606, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 606, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_comm, __pyx_t_3) < 0) __PYX_ERR(3, 606, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 606, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_comm, __pyx_t_5) < 0) __PYX_ERR(10, 606, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 606, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_setUp); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 606, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-      __Pyx_INCREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_setUp); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 606, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_8);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
+    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
+    if (likely(__pyx_t_5)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+      __Pyx_INCREF(__pyx_t_5);
       __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_6, function);
+      __Pyx_DECREF_SET(__pyx_t_8, function);
     }
   }
-  if (__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 606, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (__pyx_t_5) {
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 606, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 606, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 606, __pyx_L1_error)
   }
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_8petsc4py_5PETSc_Mat))))) __PYX_ERR(3, 606, __pyx_L1_error)
-  __pyx_v_M = ((struct PyPetscMatObject *)__pyx_t_2);
-  __pyx_t_2 = 0;
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_8petsc4py_5PETSc_Mat))))) __PYX_ERR(10, 606, __pyx_L1_error)
+  __pyx_v_M = ((struct PyPetscMatObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
 
   /* "SLEPc/BV.pyx":607
- *         CHKERR( BVGetActiveColumns(X.bv, NULL, &kx) )
- *         cdef Mat M = Mat().createDense((ky, kx), comm=COMM_SELF).setUp()
- *         cdef PetscMat Amat = NULL if A is None else A.mat             # <<<<<<<<<<<<<<
- *         CHKERR( BVMatProject(X.bv, Amat, Y.bv, M.mat) )
- *         return M
- */
-  __pyx_t_8 = (((PyObject *)__pyx_v_A) == Py_None);
-  if ((__pyx_t_8 != 0)) {
-    __pyx_t_7 = NULL;
-  } else {
-    __pyx_t_7 = __pyx_v_A->mat;
-  }
-  __pyx_v_Amat = __pyx_t_7;
-
-  /* "SLEPc/BV.pyx":608
+ *         cdef PetscMat Amat = <PetscMat>NULL if A is None else A.mat
  *         cdef Mat M = Mat().createDense((ky, kx), comm=COMM_SELF).setUp()
- *         cdef PetscMat Amat = NULL if A is None else A.mat
  *         CHKERR( BVMatProject(X.bv, Amat, Y.bv, M.mat) )             # <<<<<<<<<<<<<<
  *         return M
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVMatProject(__pyx_v_X->bv, __pyx_v_Amat, __pyx_v_Y->bv, __pyx_v_M->mat)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 608, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVMatProject(__pyx_v_X->bv, __pyx_v_Amat, __pyx_v_Y->bv, __pyx_v_M->mat)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 607, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":609
- *         cdef PetscMat Amat = NULL if A is None else A.mat
+  /* "SLEPc/BV.pyx":608
+ *         cdef Mat M = Mat().createDense((ky, kx), comm=COMM_SELF).setUp()
  *         CHKERR( BVMatProject(X.bv, Amat, Y.bv, M.mat) )
  *         return M             # <<<<<<<<<<<<<<
  * 
- *     def matMult(self, Mat A not None, BV Y=None):
+ *     def matMult(self, Mat A, BV Y=None):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_M));
   __pyx_r = ((PyObject *)__pyx_v_M);
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":583
+  /* "SLEPc/BV.pyx":582
  *         return M
  * 
- *     def matProject(self, Mat A, BV Y not None):             # <<<<<<<<<<<<<<
+ *     def matProject(self, Mat A or None, BV Y):             # <<<<<<<<<<<<<<
  *         """
  *         Computes the projection of a matrix onto a subspace.
  */
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
   __Pyx_XDECREF(__pyx_t_5);
   __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.matProject", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
@@ -14079,10 +15308,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_58matProject(struct PySlepcBVObje
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":611
+/* "SLEPc/BV.pyx":610
  *         return M
  * 
- *     def matMult(self, Mat A not None, BV Y=None):             # <<<<<<<<<<<<<<
+ *     def matMult(self, Mat A, BV Y=None):             # <<<<<<<<<<<<<<
  *         """
  *         Computes the matrix-vector product for each column, Y = A*V.
  */
@@ -14105,7 +15334,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_61matMult(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -14114,6 +15345,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_61matMult(PyObject *__pyx_v_self,
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Y);
@@ -14121,11 +15353,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_61matMult(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "matMult") < 0)) __PYX_ERR(3, 611, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "matMult") < 0)) __PYX_ERR(10, 610, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
@@ -14136,14 +15369,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_61matMult(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("matMult", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 611, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("matMult", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 610, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.matMult", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_A), __pyx_ptype_8petsc4py_5PETSc_Mat, 0, "A", 0))) __PYX_ERR(3, 611, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Y), __pyx_ptype_8slepc4py_5SLEPc_BV, 1, "Y", 0))) __PYX_ERR(3, 611, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_A), __pyx_ptype_8petsc4py_5PETSc_Mat, 0, "A", 0))) __PYX_ERR(10, 610, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Y), __pyx_ptype_8slepc4py_5SLEPc_BV, 1, "Y", 0))) __PYX_ERR(10, 610, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_A, __pyx_v_Y);
 
   /* function exit code */
@@ -14174,7 +15407,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
   __Pyx_RefNannySetupContext("matMult", 0);
   __Pyx_INCREF((PyObject *)__pyx_v_Y);
 
-  /* "SLEPc/BV.pyx":637
+  /* "SLEPc/BV.pyx":636
  *         The default is bv_matmult_mat.
  *         """
  *         cdef MPI_Comm comm = PetscObjectComm(<PetscObject>self.bv)             # <<<<<<<<<<<<<<
@@ -14183,7 +15416,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
  */
   __pyx_v_comm = PetscObjectComm(((PetscObject)__pyx_v_self->bv));
 
-  /* "SLEPc/BV.pyx":638
+  /* "SLEPc/BV.pyx":637
  *         """
  *         cdef MPI_Comm comm = PetscObjectComm(<PetscObject>self.bv)
  *         cdef SlepcBVType bv_type = NULL             # <<<<<<<<<<<<<<
@@ -14192,7 +15425,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
  */
   __pyx_v_bv_type = NULL;
 
-  /* "SLEPc/BV.pyx":639
+  /* "SLEPc/BV.pyx":638
  *         cdef MPI_Comm comm = PetscObjectComm(<PetscObject>self.bv)
  *         cdef SlepcBVType bv_type = NULL
  *         cdef PetscInt n=0, N=0, m=0             # <<<<<<<<<<<<<<
@@ -14203,7 +15436,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
   __pyx_v_N = 0;
   __pyx_v_m = 0;
 
-  /* "SLEPc/BV.pyx":640
+  /* "SLEPc/BV.pyx":639
  *         cdef SlepcBVType bv_type = NULL
  *         cdef PetscInt n=0, N=0, m=0
  *         cdef SlepcBVOrthogType val1 = BV_ORTHOG_CGS             # <<<<<<<<<<<<<<
@@ -14212,7 +15445,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
  */
   __pyx_v_val1 = BV_ORTHOG_CGS;
 
-  /* "SLEPc/BV.pyx":641
+  /* "SLEPc/BV.pyx":640
  *         cdef PetscInt n=0, N=0, m=0
  *         cdef SlepcBVOrthogType val1 = BV_ORTHOG_CGS
  *         cdef SlepcBVOrthogRefineType val2 = BV_ORTHOG_REFINE_IFNEEDED             # <<<<<<<<<<<<<<
@@ -14221,7 +15454,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
  */
   __pyx_v_val2 = BV_ORTHOG_REFINE_IFNEEDED;
 
-  /* "SLEPc/BV.pyx":642
+  /* "SLEPc/BV.pyx":641
  *         cdef SlepcBVOrthogType val1 = BV_ORTHOG_CGS
  *         cdef SlepcBVOrthogRefineType val2 = BV_ORTHOG_REFINE_IFNEEDED
  *         cdef SlepcBVOrthogBlockType val3 = BV_ORTHOG_BLOCK_GS             # <<<<<<<<<<<<<<
@@ -14230,7 +15463,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
  */
   __pyx_v_val3 = BV_ORTHOG_BLOCK_GS;
 
-  /* "SLEPc/BV.pyx":643
+  /* "SLEPc/BV.pyx":642
  *         cdef SlepcBVOrthogRefineType val2 = BV_ORTHOG_REFINE_IFNEEDED
  *         cdef SlepcBVOrthogBlockType val3 = BV_ORTHOG_BLOCK_GS
  *         cdef PetscReal rval = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -14239,7 +15472,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
  */
   __pyx_v_rval = PETSC_DEFAULT;
 
-  /* "SLEPc/BV.pyx":644
+  /* "SLEPc/BV.pyx":643
  *         cdef SlepcBVOrthogBlockType val3 = BV_ORTHOG_BLOCK_GS
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         if Y is None: Y = BV()             # <<<<<<<<<<<<<<
@@ -14249,13 +15482,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
   __pyx_t_1 = (((PyObject *)__pyx_v_Y) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 644, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 643, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_Y, ((struct PySlepcBVObject *)__pyx_t_3));
     __pyx_t_3 = 0;
   }
 
-  /* "SLEPc/BV.pyx":645
+  /* "SLEPc/BV.pyx":644
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         if Y is None: Y = BV()
  *         if Y.bv == NULL:             # <<<<<<<<<<<<<<
@@ -14265,52 +15498,52 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
   __pyx_t_2 = ((__pyx_v_Y->bv == NULL) != 0);
   if (__pyx_t_2) {
 
-    /* "SLEPc/BV.pyx":646
+    /* "SLEPc/BV.pyx":645
  *         if Y is None: Y = BV()
  *         if Y.bv == NULL:
  *             CHKERR( BVGetType(self.bv, &bv_type) )             # <<<<<<<<<<<<<<
  *             CHKERR( MatGetLocalSize(A.mat, &n, NULL) )
  *             CHKERR( MatGetSize(A.mat, &N, NULL) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetType(__pyx_v_self->bv, (&__pyx_v_bv_type))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 646, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetType(__pyx_v_self->bv, (&__pyx_v_bv_type))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 645, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":647
+    /* "SLEPc/BV.pyx":646
  *         if Y.bv == NULL:
  *             CHKERR( BVGetType(self.bv, &bv_type) )
  *             CHKERR( MatGetLocalSize(A.mat, &n, NULL) )             # <<<<<<<<<<<<<<
  *             CHKERR( MatGetSize(A.mat, &N, NULL) )
  *             CHKERR( BVGetSizes(self.bv, NULL, NULL, &m) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MatGetLocalSize(__pyx_v_A->mat, (&__pyx_v_n), NULL)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 647, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MatGetLocalSize(__pyx_v_A->mat, (&__pyx_v_n), NULL)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 646, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":648
+    /* "SLEPc/BV.pyx":647
  *             CHKERR( BVGetType(self.bv, &bv_type) )
  *             CHKERR( MatGetLocalSize(A.mat, &n, NULL) )
  *             CHKERR( MatGetSize(A.mat, &N, NULL) )             # <<<<<<<<<<<<<<
  *             CHKERR( BVGetSizes(self.bv, NULL, NULL, &m) )
  *             CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MatGetSize(__pyx_v_A->mat, (&__pyx_v_N), NULL)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 648, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MatGetSize(__pyx_v_A->mat, (&__pyx_v_N), NULL)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 647, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":649
+    /* "SLEPc/BV.pyx":648
  *             CHKERR( MatGetLocalSize(A.mat, &n, NULL) )
  *             CHKERR( MatGetSize(A.mat, &N, NULL) )
  *             CHKERR( BVGetSizes(self.bv, NULL, NULL, &m) )             # <<<<<<<<<<<<<<
  *             CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )
  *         if Y.bv == NULL:
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetSizes(__pyx_v_self->bv, NULL, NULL, (&__pyx_v_m))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 649, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetSizes(__pyx_v_self->bv, NULL, NULL, (&__pyx_v_m))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 648, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":650
+    /* "SLEPc/BV.pyx":649
  *             CHKERR( MatGetSize(A.mat, &N, NULL) )
  *             CHKERR( BVGetSizes(self.bv, NULL, NULL, &m) )
  *             CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )             # <<<<<<<<<<<<<<
  *         if Y.bv == NULL:
  *             CHKERR( BVCreate(comm, &Y.bv) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetOrthogonalization(__pyx_v_self->bv, (&__pyx_v_val1), (&__pyx_v_val2), (&__pyx_v_rval), (&__pyx_v_val3))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 650, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetOrthogonalization(__pyx_v_self->bv, (&__pyx_v_val1), (&__pyx_v_val2), (&__pyx_v_rval), (&__pyx_v_val3))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 649, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":645
+    /* "SLEPc/BV.pyx":644
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         if Y is None: Y = BV()
  *         if Y.bv == NULL:             # <<<<<<<<<<<<<<
@@ -14319,7 +15552,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
  */
   }
 
-  /* "SLEPc/BV.pyx":651
+  /* "SLEPc/BV.pyx":650
  *             CHKERR( BVGetSizes(self.bv, NULL, NULL, &m) )
  *             CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )
  *         if Y.bv == NULL:             # <<<<<<<<<<<<<<
@@ -14329,43 +15562,43 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
   __pyx_t_2 = ((__pyx_v_Y->bv == NULL) != 0);
   if (__pyx_t_2) {
 
-    /* "SLEPc/BV.pyx":652
+    /* "SLEPc/BV.pyx":651
  *             CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )
  *         if Y.bv == NULL:
  *             CHKERR( BVCreate(comm, &Y.bv) )             # <<<<<<<<<<<<<<
  *             CHKERR( BVSetType(Y.bv, bv_type) )
  *             CHKERR( BVSetSizes(Y.bv, n, N, m) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVCreate(__pyx_v_comm, (&__pyx_v_Y->bv))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 652, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVCreate(__pyx_v_comm, (&__pyx_v_Y->bv))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 651, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":653
+    /* "SLEPc/BV.pyx":652
  *         if Y.bv == NULL:
  *             CHKERR( BVCreate(comm, &Y.bv) )
  *             CHKERR( BVSetType(Y.bv, bv_type) )             # <<<<<<<<<<<<<<
  *             CHKERR( BVSetSizes(Y.bv, n, N, m) )
  *             CHKERR( BVSetOrthogonalization(Y.bv, val1, val2, rval, val3) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetType(__pyx_v_Y->bv, __pyx_v_bv_type)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 653, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetType(__pyx_v_Y->bv, __pyx_v_bv_type)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 652, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":654
+    /* "SLEPc/BV.pyx":653
  *             CHKERR( BVCreate(comm, &Y.bv) )
  *             CHKERR( BVSetType(Y.bv, bv_type) )
  *             CHKERR( BVSetSizes(Y.bv, n, N, m) )             # <<<<<<<<<<<<<<
  *             CHKERR( BVSetOrthogonalization(Y.bv, val1, val2, rval, val3) )
  *         CHKERR( BVMatMult(self.bv, A.mat, Y.bv) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetSizes(__pyx_v_Y->bv, __pyx_v_n, __pyx_v_N, __pyx_v_m)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 654, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetSizes(__pyx_v_Y->bv, __pyx_v_n, __pyx_v_N, __pyx_v_m)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 653, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":655
+    /* "SLEPc/BV.pyx":654
  *             CHKERR( BVSetType(Y.bv, bv_type) )
  *             CHKERR( BVSetSizes(Y.bv, n, N, m) )
  *             CHKERR( BVSetOrthogonalization(Y.bv, val1, val2, rval, val3) )             # <<<<<<<<<<<<<<
  *         CHKERR( BVMatMult(self.bv, A.mat, Y.bv) )
  *         return Y
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetOrthogonalization(__pyx_v_Y->bv, __pyx_v_val1, __pyx_v_val2, __pyx_v_rval, __pyx_v_val3)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 655, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetOrthogonalization(__pyx_v_Y->bv, __pyx_v_val1, __pyx_v_val2, __pyx_v_rval, __pyx_v_val3)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 654, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":651
+    /* "SLEPc/BV.pyx":650
  *             CHKERR( BVGetSizes(self.bv, NULL, NULL, &m) )
  *             CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )
  *         if Y.bv == NULL:             # <<<<<<<<<<<<<<
@@ -14374,31 +15607,31 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
  */
   }
 
-  /* "SLEPc/BV.pyx":656
+  /* "SLEPc/BV.pyx":655
  *             CHKERR( BVSetSizes(Y.bv, n, N, m) )
  *             CHKERR( BVSetOrthogonalization(Y.bv, val1, val2, rval, val3) )
  *         CHKERR( BVMatMult(self.bv, A.mat, Y.bv) )             # <<<<<<<<<<<<<<
  *         return Y
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVMatMult(__pyx_v_self->bv, __pyx_v_A->mat, __pyx_v_Y->bv)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 656, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVMatMult(__pyx_v_self->bv, __pyx_v_A->mat, __pyx_v_Y->bv)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 655, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":657
+  /* "SLEPc/BV.pyx":656
  *             CHKERR( BVSetOrthogonalization(Y.bv, val1, val2, rval, val3) )
  *         CHKERR( BVMatMult(self.bv, A.mat, Y.bv) )
  *         return Y             # <<<<<<<<<<<<<<
  * 
- *     def matMultHermitianTranspose(self, Mat A not None, BV Y=None):
+ *     def matMultHermitianTranspose(self, Mat A, BV Y=None):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_Y));
   __pyx_r = ((PyObject *)__pyx_v_Y);
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":611
+  /* "SLEPc/BV.pyx":610
  *         return M
  * 
- *     def matMult(self, Mat A not None, BV Y=None):             # <<<<<<<<<<<<<<
+ *     def matMult(self, Mat A, BV Y=None):             # <<<<<<<<<<<<<<
  *         """
  *         Computes the matrix-vector product for each column, Y = A*V.
  */
@@ -14415,10 +15648,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_60matMult(struct PySlepcBVObject
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":659
+/* "SLEPc/BV.pyx":658
  *         return Y
  * 
- *     def matMultHermitianTranspose(self, Mat A not None, BV Y=None):             # <<<<<<<<<<<<<<
+ *     def matMultHermitianTranspose(self, Mat A, BV Y=None):             # <<<<<<<<<<<<<<
  *         """
  *         Computes the matrix-vector product with the conjugate transpose of a
  */
@@ -14441,7 +15674,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_63matMultHermitianTranspose(PyObj
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -14450,6 +15685,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_63matMultHermitianTranspose(PyObj
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Y);
@@ -14457,11 +15693,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_63matMultHermitianTranspose(PyObj
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "matMultHermitianTranspose") < 0)) __PYX_ERR(3, 659, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "matMultHermitianTranspose") < 0)) __PYX_ERR(10, 658, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
@@ -14472,14 +15709,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_63matMultHermitianTranspose(PyObj
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("matMultHermitianTranspose", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 659, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("matMultHermitianTranspose", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 658, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.matMultHermitianTranspose", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_A), __pyx_ptype_8petsc4py_5PETSc_Mat, 0, "A", 0))) __PYX_ERR(3, 659, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Y), __pyx_ptype_8slepc4py_5SLEPc_BV, 1, "Y", 0))) __PYX_ERR(3, 659, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_A), __pyx_ptype_8petsc4py_5PETSc_Mat, 0, "A", 0))) __PYX_ERR(10, 658, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Y), __pyx_ptype_8slepc4py_5SLEPc_BV, 1, "Y", 0))) __PYX_ERR(10, 658, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_A, __pyx_v_Y);
 
   /* function exit code */
@@ -14510,7 +15747,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
   __Pyx_RefNannySetupContext("matMultHermitianTranspose", 0);
   __Pyx_INCREF((PyObject *)__pyx_v_Y);
 
-  /* "SLEPc/BV.pyx":681
+  /* "SLEPc/BV.pyx":680
  *         column, with a sequence of calls to MatMultHermitianTranspose().
  *         """
  *         cdef MPI_Comm comm = PetscObjectComm(<PetscObject>self.bv)             # <<<<<<<<<<<<<<
@@ -14519,7 +15756,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
  */
   __pyx_v_comm = PetscObjectComm(((PetscObject)__pyx_v_self->bv));
 
-  /* "SLEPc/BV.pyx":682
+  /* "SLEPc/BV.pyx":681
  *         """
  *         cdef MPI_Comm comm = PetscObjectComm(<PetscObject>self.bv)
  *         cdef SlepcBVType bv_type = NULL             # <<<<<<<<<<<<<<
@@ -14528,7 +15765,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
  */
   __pyx_v_bv_type = NULL;
 
-  /* "SLEPc/BV.pyx":683
+  /* "SLEPc/BV.pyx":682
  *         cdef MPI_Comm comm = PetscObjectComm(<PetscObject>self.bv)
  *         cdef SlepcBVType bv_type = NULL
  *         cdef PetscInt n=0, N=0, m=0             # <<<<<<<<<<<<<<
@@ -14539,7 +15776,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
   __pyx_v_N = 0;
   __pyx_v_m = 0;
 
-  /* "SLEPc/BV.pyx":684
+  /* "SLEPc/BV.pyx":683
  *         cdef SlepcBVType bv_type = NULL
  *         cdef PetscInt n=0, N=0, m=0
  *         cdef SlepcBVOrthogType val1 = BV_ORTHOG_CGS             # <<<<<<<<<<<<<<
@@ -14548,7 +15785,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
  */
   __pyx_v_val1 = BV_ORTHOG_CGS;
 
-  /* "SLEPc/BV.pyx":685
+  /* "SLEPc/BV.pyx":684
  *         cdef PetscInt n=0, N=0, m=0
  *         cdef SlepcBVOrthogType val1 = BV_ORTHOG_CGS
  *         cdef SlepcBVOrthogRefineType val2 = BV_ORTHOG_REFINE_IFNEEDED             # <<<<<<<<<<<<<<
@@ -14557,7 +15794,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
  */
   __pyx_v_val2 = BV_ORTHOG_REFINE_IFNEEDED;
 
-  /* "SLEPc/BV.pyx":686
+  /* "SLEPc/BV.pyx":685
  *         cdef SlepcBVOrthogType val1 = BV_ORTHOG_CGS
  *         cdef SlepcBVOrthogRefineType val2 = BV_ORTHOG_REFINE_IFNEEDED
  *         cdef SlepcBVOrthogBlockType val3 = BV_ORTHOG_BLOCK_GS             # <<<<<<<<<<<<<<
@@ -14566,7 +15803,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
  */
   __pyx_v_val3 = BV_ORTHOG_BLOCK_GS;
 
-  /* "SLEPc/BV.pyx":687
+  /* "SLEPc/BV.pyx":686
  *         cdef SlepcBVOrthogRefineType val2 = BV_ORTHOG_REFINE_IFNEEDED
  *         cdef SlepcBVOrthogBlockType val3 = BV_ORTHOG_BLOCK_GS
  *         cdef PetscReal rval = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -14575,7 +15812,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
  */
   __pyx_v_rval = PETSC_DEFAULT;
 
-  /* "SLEPc/BV.pyx":688
+  /* "SLEPc/BV.pyx":687
  *         cdef SlepcBVOrthogBlockType val3 = BV_ORTHOG_BLOCK_GS
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         if Y is None: Y = BV()             # <<<<<<<<<<<<<<
@@ -14585,13 +15822,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
   __pyx_t_1 = (((PyObject *)__pyx_v_Y) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 688, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 687, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_Y, ((struct PySlepcBVObject *)__pyx_t_3));
     __pyx_t_3 = 0;
   }
 
-  /* "SLEPc/BV.pyx":689
+  /* "SLEPc/BV.pyx":688
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         if Y is None: Y = BV()
  *         if Y.bv == NULL:             # <<<<<<<<<<<<<<
@@ -14601,52 +15838,52 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
   __pyx_t_2 = ((__pyx_v_Y->bv == NULL) != 0);
   if (__pyx_t_2) {
 
-    /* "SLEPc/BV.pyx":690
+    /* "SLEPc/BV.pyx":689
  *         if Y is None: Y = BV()
  *         if Y.bv == NULL:
  *             CHKERR( BVGetType(self.bv, &bv_type) )             # <<<<<<<<<<<<<<
  *             CHKERR( MatGetLocalSize(A.mat, &n, NULL) )
  *             CHKERR( MatGetSize(A.mat, &N, NULL) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetType(__pyx_v_self->bv, (&__pyx_v_bv_type))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 690, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetType(__pyx_v_self->bv, (&__pyx_v_bv_type))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 689, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":691
+    /* "SLEPc/BV.pyx":690
  *         if Y.bv == NULL:
  *             CHKERR( BVGetType(self.bv, &bv_type) )
  *             CHKERR( MatGetLocalSize(A.mat, &n, NULL) )             # <<<<<<<<<<<<<<
  *             CHKERR( MatGetSize(A.mat, &N, NULL) )
  *             CHKERR( BVGetSizes(self.bv, NULL, NULL, &m) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MatGetLocalSize(__pyx_v_A->mat, (&__pyx_v_n), NULL)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 691, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MatGetLocalSize(__pyx_v_A->mat, (&__pyx_v_n), NULL)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 690, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":692
+    /* "SLEPc/BV.pyx":691
  *             CHKERR( BVGetType(self.bv, &bv_type) )
  *             CHKERR( MatGetLocalSize(A.mat, &n, NULL) )
  *             CHKERR( MatGetSize(A.mat, &N, NULL) )             # <<<<<<<<<<<<<<
  *             CHKERR( BVGetSizes(self.bv, NULL, NULL, &m) )
  *             CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MatGetSize(__pyx_v_A->mat, (&__pyx_v_N), NULL)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 692, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MatGetSize(__pyx_v_A->mat, (&__pyx_v_N), NULL)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 691, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":693
+    /* "SLEPc/BV.pyx":692
  *             CHKERR( MatGetLocalSize(A.mat, &n, NULL) )
  *             CHKERR( MatGetSize(A.mat, &N, NULL) )
  *             CHKERR( BVGetSizes(self.bv, NULL, NULL, &m) )             # <<<<<<<<<<<<<<
  *             CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )
  *         if Y.bv == NULL:
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetSizes(__pyx_v_self->bv, NULL, NULL, (&__pyx_v_m))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 693, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetSizes(__pyx_v_self->bv, NULL, NULL, (&__pyx_v_m))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 692, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":694
+    /* "SLEPc/BV.pyx":693
  *             CHKERR( MatGetSize(A.mat, &N, NULL) )
  *             CHKERR( BVGetSizes(self.bv, NULL, NULL, &m) )
  *             CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )             # <<<<<<<<<<<<<<
  *         if Y.bv == NULL:
  *             CHKERR( BVCreate(comm, &Y.bv) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetOrthogonalization(__pyx_v_self->bv, (&__pyx_v_val1), (&__pyx_v_val2), (&__pyx_v_rval), (&__pyx_v_val3))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 694, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetOrthogonalization(__pyx_v_self->bv, (&__pyx_v_val1), (&__pyx_v_val2), (&__pyx_v_rval), (&__pyx_v_val3))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 693, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":689
+    /* "SLEPc/BV.pyx":688
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         if Y is None: Y = BV()
  *         if Y.bv == NULL:             # <<<<<<<<<<<<<<
@@ -14655,7 +15892,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
  */
   }
 
-  /* "SLEPc/BV.pyx":695
+  /* "SLEPc/BV.pyx":694
  *             CHKERR( BVGetSizes(self.bv, NULL, NULL, &m) )
  *             CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )
  *         if Y.bv == NULL:             # <<<<<<<<<<<<<<
@@ -14665,43 +15902,43 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
   __pyx_t_2 = ((__pyx_v_Y->bv == NULL) != 0);
   if (__pyx_t_2) {
 
-    /* "SLEPc/BV.pyx":696
+    /* "SLEPc/BV.pyx":695
  *             CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )
  *         if Y.bv == NULL:
  *             CHKERR( BVCreate(comm, &Y.bv) )             # <<<<<<<<<<<<<<
  *             CHKERR( BVSetType(Y.bv, bv_type) )
  *             CHKERR( BVSetSizes(Y.bv, n, N, m) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVCreate(__pyx_v_comm, (&__pyx_v_Y->bv))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 696, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVCreate(__pyx_v_comm, (&__pyx_v_Y->bv))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 695, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":697
+    /* "SLEPc/BV.pyx":696
  *         if Y.bv == NULL:
  *             CHKERR( BVCreate(comm, &Y.bv) )
  *             CHKERR( BVSetType(Y.bv, bv_type) )             # <<<<<<<<<<<<<<
  *             CHKERR( BVSetSizes(Y.bv, n, N, m) )
  *             CHKERR( BVSetOrthogonalization(Y.bv, val1, val2, rval, val3) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetType(__pyx_v_Y->bv, __pyx_v_bv_type)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 697, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetType(__pyx_v_Y->bv, __pyx_v_bv_type)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 696, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":698
+    /* "SLEPc/BV.pyx":697
  *             CHKERR( BVCreate(comm, &Y.bv) )
  *             CHKERR( BVSetType(Y.bv, bv_type) )
  *             CHKERR( BVSetSizes(Y.bv, n, N, m) )             # <<<<<<<<<<<<<<
  *             CHKERR( BVSetOrthogonalization(Y.bv, val1, val2, rval, val3) )
  *         CHKERR( BVMatMultHermitianTranspose(self.bv, A.mat, Y.bv) )
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetSizes(__pyx_v_Y->bv, __pyx_v_n, __pyx_v_N, __pyx_v_m)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 698, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetSizes(__pyx_v_Y->bv, __pyx_v_n, __pyx_v_N, __pyx_v_m)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 697, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":699
+    /* "SLEPc/BV.pyx":698
  *             CHKERR( BVSetType(Y.bv, bv_type) )
  *             CHKERR( BVSetSizes(Y.bv, n, N, m) )
  *             CHKERR( BVSetOrthogonalization(Y.bv, val1, val2, rval, val3) )             # <<<<<<<<<<<<<<
  *         CHKERR( BVMatMultHermitianTranspose(self.bv, A.mat, Y.bv) )
  *         return Y
  */
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetOrthogonalization(__pyx_v_Y->bv, __pyx_v_val1, __pyx_v_val2, __pyx_v_rval, __pyx_v_val3)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 699, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetOrthogonalization(__pyx_v_Y->bv, __pyx_v_val1, __pyx_v_val2, __pyx_v_rval, __pyx_v_val3)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 698, __pyx_L1_error)
 
-    /* "SLEPc/BV.pyx":695
+    /* "SLEPc/BV.pyx":694
  *             CHKERR( BVGetSizes(self.bv, NULL, NULL, &m) )
  *             CHKERR( BVGetOrthogonalization(self.bv, &val1, &val2, &rval, &val3) )
  *         if Y.bv == NULL:             # <<<<<<<<<<<<<<
@@ -14710,31 +15947,31 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
  */
   }
 
-  /* "SLEPc/BV.pyx":700
+  /* "SLEPc/BV.pyx":699
  *             CHKERR( BVSetSizes(Y.bv, n, N, m) )
  *             CHKERR( BVSetOrthogonalization(Y.bv, val1, val2, rval, val3) )
  *         CHKERR( BVMatMultHermitianTranspose(self.bv, A.mat, Y.bv) )             # <<<<<<<<<<<<<<
  *         return Y
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVMatMultHermitianTranspose(__pyx_v_self->bv, __pyx_v_A->mat, __pyx_v_Y->bv)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 700, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVMatMultHermitianTranspose(__pyx_v_self->bv, __pyx_v_A->mat, __pyx_v_Y->bv)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 699, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":701
+  /* "SLEPc/BV.pyx":700
  *             CHKERR( BVSetOrthogonalization(Y.bv, val1, val2, rval, val3) )
  *         CHKERR( BVMatMultHermitianTranspose(self.bv, A.mat, Y.bv) )
  *         return Y             # <<<<<<<<<<<<<<
  * 
- *     def multVec(self, alpha, beta, Vec y not None, q):
+ *     def multVec(self, alpha, beta, Vec y, q):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_Y));
   __pyx_r = ((PyObject *)__pyx_v_Y);
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":659
+  /* "SLEPc/BV.pyx":658
  *         return Y
  * 
- *     def matMultHermitianTranspose(self, Mat A not None, BV Y=None):             # <<<<<<<<<<<<<<
+ *     def matMultHermitianTranspose(self, Mat A, BV Y=None):             # <<<<<<<<<<<<<<
  *         """
  *         Computes the matrix-vector product with the conjugate transpose of a
  */
@@ -14751,10 +15988,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_62matMultHermitianTranspose(struc
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":703
+/* "SLEPc/BV.pyx":702
  *         return Y
  * 
- *     def multVec(self, alpha, beta, Vec y not None, q):             # <<<<<<<<<<<<<<
+ *     def multVec(self, alpha, beta, Vec y, q):             # <<<<<<<<<<<<<<
  *         """
  *         Computes y = beta*y + alpha*X*q.
  */
@@ -14778,9 +16015,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_65multVec(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -14789,24 +16030,27 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_65multVec(PyObject *__pyx_v_self,
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_alpha)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_beta)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("multVec", 1, 4, 4, 1); __PYX_ERR(3, 703, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("multVec", 1, 4, 4, 1); __PYX_ERR(10, 702, __pyx_L3_error)
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("multVec", 1, 4, 4, 2); __PYX_ERR(3, 703, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("multVec", 1, 4, 4, 2); __PYX_ERR(10, 702, __pyx_L3_error)
         }
+        CYTHON_FALLTHROUGH;
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_q)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("multVec", 1, 4, 4, 3); __PYX_ERR(3, 703, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("multVec", 1, 4, 4, 3); __PYX_ERR(10, 702, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "multVec") < 0)) __PYX_ERR(3, 703, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "multVec") < 0)) __PYX_ERR(10, 702, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
       goto __pyx_L5_argtuple_error;
@@ -14823,13 +16067,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_65multVec(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("multVec", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 703, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("multVec", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 702, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.multVec", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "y", 0))) __PYX_ERR(3, 703, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "y", 0))) __PYX_ERR(10, 702, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_64multVec(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_alpha, __pyx_v_beta, __pyx_v_y, __pyx_v_q);
 
   /* function exit code */
@@ -14856,27 +16100,27 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_64multVec(struct PySlepcBVObject
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("multVec", 0);
 
-  /* "SLEPc/BV.pyx":718
+  /* "SLEPc/BV.pyx":717
  *             The result.
  *         """
  *         cdef PetscScalar sval1 = asScalar(alpha)             # <<<<<<<<<<<<<<
  *         cdef PetscScalar sval2 = asScalar(beta)
  *         cdef PetscInt nq = 0
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_alpha); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 718, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_alpha); if (unlikely(__pyx_t_1 == ((PetscScalar)((PetscScalar)(-1.0))) && PyErr_Occurred())) __PYX_ERR(10, 717, __pyx_L1_error)
   __pyx_v_sval1 = __pyx_t_1;
 
-  /* "SLEPc/BV.pyx":719
+  /* "SLEPc/BV.pyx":718
  *         """
  *         cdef PetscScalar sval1 = asScalar(alpha)
  *         cdef PetscScalar sval2 = asScalar(beta)             # <<<<<<<<<<<<<<
  *         cdef PetscInt nq = 0
  *         cdef PetscScalar* qval = NULL
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_beta); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 719, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_beta); if (unlikely(__pyx_t_1 == ((PetscScalar)((PetscScalar)(-1.0))) && PyErr_Occurred())) __PYX_ERR(10, 718, __pyx_L1_error)
   __pyx_v_sval2 = __pyx_t_1;
 
-  /* "SLEPc/BV.pyx":720
+  /* "SLEPc/BV.pyx":719
  *         cdef PetscScalar sval1 = asScalar(alpha)
  *         cdef PetscScalar sval2 = asScalar(beta)
  *         cdef PetscInt nq = 0             # <<<<<<<<<<<<<<
@@ -14885,7 +16129,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_64multVec(struct PySlepcBVObject
  */
   __pyx_v_nq = 0;
 
-  /* "SLEPc/BV.pyx":721
+  /* "SLEPc/BV.pyx":720
  *         cdef PetscScalar sval2 = asScalar(beta)
  *         cdef PetscInt nq = 0
  *         cdef PetscScalar* qval = NULL             # <<<<<<<<<<<<<<
@@ -14894,19 +16138,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_64multVec(struct PySlepcBVObject
  */
   __pyx_v_qval = NULL;
 
-  /* "SLEPc/BV.pyx":722
+  /* "SLEPc/BV.pyx":721
  *         cdef PetscInt nq = 0
  *         cdef PetscScalar* qval = NULL
  *         cdef tmp = iarray_s(q, &nq, &qval)             # <<<<<<<<<<<<<<
  *         cdef PetscInt l=0, k=0
  *         CHKERR( BVGetActiveColumns(self.bv, &l, &k) )
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_iarray_s(__pyx_v_q, (&__pyx_v_nq), (&__pyx_v_qval)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 722, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_iarray_s(__pyx_v_q, (&__pyx_v_nq), (&__pyx_v_qval)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 721, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_tmp = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "SLEPc/BV.pyx":723
+  /* "SLEPc/BV.pyx":722
  *         cdef PetscScalar* qval = NULL
  *         cdef tmp = iarray_s(q, &nq, &qval)
  *         cdef PetscInt l=0, k=0             # <<<<<<<<<<<<<<
@@ -14916,16 +16160,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_64multVec(struct PySlepcBVObject
   __pyx_v_l = 0;
   __pyx_v_k = 0;
 
-  /* "SLEPc/BV.pyx":724
+  /* "SLEPc/BV.pyx":723
  *         cdef tmp = iarray_s(q, &nq, &qval)
  *         cdef PetscInt l=0, k=0
  *         CHKERR( BVGetActiveColumns(self.bv, &l, &k) )             # <<<<<<<<<<<<<<
  *         assert nq == k-l
  *         CHKERR( BVMultVec(self.bv, sval1, sval2, y.vec, qval) )
  */
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetActiveColumns(__pyx_v_self->bv, (&__pyx_v_l), (&__pyx_v_k))); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(3, 724, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVGetActiveColumns(__pyx_v_self->bv, (&__pyx_v_l), (&__pyx_v_k))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(10, 723, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":725
+  /* "SLEPc/BV.pyx":724
  *         cdef PetscInt l=0, k=0
  *         CHKERR( BVGetActiveColumns(self.bv, &l, &k) )
  *         assert nq == k-l             # <<<<<<<<<<<<<<
@@ -14936,24 +16180,24 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_64multVec(struct PySlepcBVObject
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_nq == (__pyx_v_k - __pyx_v_l)) != 0))) {
       PyErr_SetNone(PyExc_AssertionError);
-      __PYX_ERR(3, 725, __pyx_L1_error)
+      __PYX_ERR(10, 724, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "SLEPc/BV.pyx":726
+  /* "SLEPc/BV.pyx":725
  *         CHKERR( BVGetActiveColumns(self.bv, &l, &k) )
  *         assert nq == k-l
  *         CHKERR( BVMultVec(self.bv, sval1, sval2, y.vec, qval) )             # <<<<<<<<<<<<<<
  * 
  *     def normColumn(self, int j, norm_type=None):
  */
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVMultVec(__pyx_v_self->bv, __pyx_v_sval1, __pyx_v_sval2, __pyx_v_y->vec, __pyx_v_qval)); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(3, 726, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVMultVec(__pyx_v_self->bv, __pyx_v_sval1, __pyx_v_sval2, __pyx_v_y->vec, __pyx_v_qval)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(10, 725, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":703
+  /* "SLEPc/BV.pyx":702
  *         return Y
  * 
- *     def multVec(self, alpha, beta, Vec y not None, q):             # <<<<<<<<<<<<<<
+ *     def multVec(self, alpha, beta, Vec y, q):             # <<<<<<<<<<<<<<
  *         """
  *         Computes y = beta*y + alpha*X*q.
  */
@@ -14972,7 +16216,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_64multVec(struct PySlepcBVObject
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":728
+/* "SLEPc/BV.pyx":727
  *         CHKERR( BVMultVec(self.bv, sval1, sval2, y.vec, qval) )
  * 
  *     def normColumn(self, int j, norm_type=None):             # <<<<<<<<<<<<<<
@@ -14998,7 +16242,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_67normColumn(PyObject *__pyx_v_se
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -15007,6 +16253,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_67normColumn(PyObject *__pyx_v_se
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_j)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_norm_type);
@@ -15014,22 +16261,23 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_67normColumn(PyObject *__pyx_v_se
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "normColumn") < 0)) __PYX_ERR(3, 728, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "normColumn") < 0)) __PYX_ERR(10, 727, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_j = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_j == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 728, __pyx_L3_error)
+    __pyx_v_j = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_j == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 727, __pyx_L3_error)
     __pyx_v_norm_type = values[1];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("normColumn", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 728, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("normColumn", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 727, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.normColumn", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -15054,7 +16302,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_66normColumn(struct PySlepcBVObje
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("normColumn", 0);
 
-  /* "SLEPc/BV.pyx":751
+  /* "SLEPc/BV.pyx":750
  *         product matrix (argument 'type' is ignored).
  *         """
  *         cdef PetscNormType ntype = PETSC_NORM_2             # <<<<<<<<<<<<<<
@@ -15063,7 +16311,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_66normColumn(struct PySlepcBVObje
  */
   __pyx_v_ntype = NORM_2;
 
-  /* "SLEPc/BV.pyx":752
+  /* "SLEPc/BV.pyx":751
  *         """
  *         cdef PetscNormType ntype = PETSC_NORM_2
  *         if norm_type is not None: ntype = norm_type             # <<<<<<<<<<<<<<
@@ -15073,11 +16321,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_66normColumn(struct PySlepcBVObje
   __pyx_t_1 = (__pyx_v_norm_type != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = ((NormType)__Pyx_PyInt_As_NormType(__pyx_v_norm_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 752, __pyx_L1_error)
+    __pyx_t_3 = ((NormType)__Pyx_PyInt_As_NormType(__pyx_v_norm_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 751, __pyx_L1_error)
     __pyx_v_ntype = __pyx_t_3;
   }
 
-  /* "SLEPc/BV.pyx":753
+  /* "SLEPc/BV.pyx":752
  *         cdef PetscNormType ntype = PETSC_NORM_2
  *         if norm_type is not None: ntype = norm_type
  *         cdef PetscReal norm = 0             # <<<<<<<<<<<<<<
@@ -15086,16 +16334,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_66normColumn(struct PySlepcBVObje
  */
   __pyx_v_norm = 0.0;
 
-  /* "SLEPc/BV.pyx":754
+  /* "SLEPc/BV.pyx":753
  *         if norm_type is not None: ntype = norm_type
  *         cdef PetscReal norm = 0
  *         CHKERR( BVNormColumn(self.bv, j, ntype, &norm) )             # <<<<<<<<<<<<<<
  *         return toReal(norm)
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVNormColumn(__pyx_v_self->bv, __pyx_v_j, __pyx_v_ntype, (&__pyx_v_norm))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 754, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVNormColumn(__pyx_v_self->bv, __pyx_v_j, __pyx_v_ntype, (&__pyx_v_norm))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 753, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":755
+  /* "SLEPc/BV.pyx":754
  *         cdef PetscReal norm = 0
  *         CHKERR( BVNormColumn(self.bv, j, ntype, &norm) )
  *         return toReal(norm)             # <<<<<<<<<<<<<<
@@ -15103,13 +16351,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_66normColumn(struct PySlepcBVObje
  *     def norm(self, norm_type=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_norm); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 755, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_norm); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 754, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_r = __pyx_t_5;
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":728
+  /* "SLEPc/BV.pyx":727
  *         CHKERR( BVMultVec(self.bv, sval1, sval2, y.vec, qval) )
  * 
  *     def normColumn(self, int j, norm_type=None):             # <<<<<<<<<<<<<<
@@ -15128,7 +16376,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_66normColumn(struct PySlepcBVObje
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":757
+/* "SLEPc/BV.pyx":756
  *         return toReal(norm)
  * 
  *     def norm(self, norm_type=None):             # <<<<<<<<<<<<<<
@@ -15153,6 +16401,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_69norm(PyObject *__pyx_v_self, Py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -15165,11 +16414,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_69norm(PyObject *__pyx_v_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "norm") < 0)) __PYX_ERR(3, 757, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "norm") < 0)) __PYX_ERR(10, 756, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -15178,7 +16428,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_69norm(PyObject *__pyx_v_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("norm", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 757, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("norm", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 756, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -15203,7 +16453,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_68norm(struct PySlepcBVObject *__
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("norm", 0);
 
-  /* "SLEPc/BV.pyx":779
+  /* "SLEPc/BV.pyx":778
  *         with BVSetMatrix().
  *         """
  *         cdef PetscNormType ntype = PETSC_NORM_FROBENIUS             # <<<<<<<<<<<<<<
@@ -15212,7 +16462,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_68norm(struct PySlepcBVObject *__
  */
   __pyx_v_ntype = NORM_FROBENIUS;
 
-  /* "SLEPc/BV.pyx":780
+  /* "SLEPc/BV.pyx":779
  *         """
  *         cdef PetscNormType ntype = PETSC_NORM_FROBENIUS
  *         if norm_type is not None: ntype = norm_type             # <<<<<<<<<<<<<<
@@ -15222,11 +16472,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_68norm(struct PySlepcBVObject *__
   __pyx_t_1 = (__pyx_v_norm_type != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = ((NormType)__Pyx_PyInt_As_NormType(__pyx_v_norm_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 780, __pyx_L1_error)
+    __pyx_t_3 = ((NormType)__Pyx_PyInt_As_NormType(__pyx_v_norm_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 779, __pyx_L1_error)
     __pyx_v_ntype = __pyx_t_3;
   }
 
-  /* "SLEPc/BV.pyx":781
+  /* "SLEPc/BV.pyx":780
  *         cdef PetscNormType ntype = PETSC_NORM_FROBENIUS
  *         if norm_type is not None: ntype = norm_type
  *         cdef PetscReal norm = 0             # <<<<<<<<<<<<<<
@@ -15235,16 +16485,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_68norm(struct PySlepcBVObject *__
  */
   __pyx_v_norm = 0.0;
 
-  /* "SLEPc/BV.pyx":782
+  /* "SLEPc/BV.pyx":781
  *         if norm_type is not None: ntype = norm_type
  *         cdef PetscReal norm = 0
  *         CHKERR( BVNorm(self.bv, ntype, &norm) )             # <<<<<<<<<<<<<<
  *         return toReal(norm)
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVNorm(__pyx_v_self->bv, __pyx_v_ntype, (&__pyx_v_norm))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(3, 782, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVNorm(__pyx_v_self->bv, __pyx_v_ntype, (&__pyx_v_norm))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(10, 781, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":783
+  /* "SLEPc/BV.pyx":782
  *         cdef PetscReal norm = 0
  *         CHKERR( BVNorm(self.bv, ntype, &norm) )
  *         return toReal(norm)             # <<<<<<<<<<<<<<
@@ -15252,13 +16502,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_68norm(struct PySlepcBVObject *__
  *     def setRandom(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_norm); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 783, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_norm); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 782, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_r = __pyx_t_5;
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":757
+  /* "SLEPc/BV.pyx":756
  *         return toReal(norm)
  * 
  *     def norm(self, norm_type=None):             # <<<<<<<<<<<<<<
@@ -15277,7 +16527,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_68norm(struct PySlepcBVObject *__
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":785
+/* "SLEPc/BV.pyx":784
  *         return toReal(norm)
  * 
  *     def setRandom(self):             # <<<<<<<<<<<<<<
@@ -15308,16 +16558,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_70setRandom(struct PySlepcBVObjec
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setRandom", 0);
 
-  /* "SLEPc/BV.pyx":793
+  /* "SLEPc/BV.pyx":792
  *         All active columns (except the leading ones) are modified.
  *         """
  *         CHKERR( BVSetRandom(self.bv) )             # <<<<<<<<<<<<<<
  * 
- *     def orthogonalizeVec(self, Vec v not None):
+ *     def orthogonalizeVec(self, Vec v):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetRandom(__pyx_v_self->bv)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 793, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVSetRandom(__pyx_v_self->bv)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 792, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":785
+  /* "SLEPc/BV.pyx":784
  *         return toReal(norm)
  * 
  *     def setRandom(self):             # <<<<<<<<<<<<<<
@@ -15337,10 +16587,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_70setRandom(struct PySlepcBVObjec
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":795
+/* "SLEPc/BV.pyx":794
  *         CHKERR( BVSetRandom(self.bv) )
  * 
- *     def orthogonalizeVec(self, Vec v not None):             # <<<<<<<<<<<<<<
+ *     def orthogonalizeVec(self, Vec v):             # <<<<<<<<<<<<<<
  *         """
  *         Orthogonalize a vector with respect to a set of vectors.
  */
@@ -15361,6 +16611,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_73orthogonalizeVec(PyObject *__py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -15371,7 +16622,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_73orthogonalizeVec(PyObject *__py
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "orthogonalizeVec") < 0)) __PYX_ERR(3, 795, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "orthogonalizeVec") < 0)) __PYX_ERR(10, 794, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -15382,13 +16633,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_73orthogonalizeVec(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("orthogonalizeVec", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 795, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("orthogonalizeVec", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 794, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.orthogonalizeVec", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_v), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "v", 0))) __PYX_ERR(3, 795, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_v), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "v", 0))) __PYX_ERR(10, 794, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_72orthogonalizeVec(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_v);
 
   /* function exit code */
@@ -15411,7 +16662,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_72orthogonalizeVec(struct PySlepc
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("orthogonalizeVec", 0);
 
-  /* "SLEPc/BV.pyx":820
+  /* "SLEPc/BV.pyx":819
  *         This routine does not normalize the resulting vector.
  *         """
  *         cdef PetscReal norm = 0             # <<<<<<<<<<<<<<
@@ -15420,7 +16671,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_72orthogonalizeVec(struct PySlepc
  */
   __pyx_v_norm = 0.0;
 
-  /* "SLEPc/BV.pyx":821
+  /* "SLEPc/BV.pyx":820
  *         """
  *         cdef PetscReal norm = 0
  *         cdef PetscBool ldep = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -15429,16 +16680,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_72orthogonalizeVec(struct PySlepc
  */
   __pyx_v_ldep = PETSC_FALSE;
 
-  /* "SLEPc/BV.pyx":822
+  /* "SLEPc/BV.pyx":821
  *         cdef PetscReal norm = 0
  *         cdef PetscBool ldep = PETSC_FALSE
  *         CHKERR( BVOrthogonalizeVec(self.bv, v.vec, NULL, &norm, &ldep) )             # <<<<<<<<<<<<<<
  *         return (toReal(norm), <bint>ldep)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVOrthogonalizeVec(__pyx_v_self->bv, __pyx_v_v->vec, NULL, (&__pyx_v_norm), (&__pyx_v_ldep))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(3, 822, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVOrthogonalizeVec(__pyx_v_self->bv, __pyx_v_v->vec, NULL, (&__pyx_v_norm), (&__pyx_v_ldep))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 821, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":823
+  /* "SLEPc/BV.pyx":822
  *         cdef PetscBool ldep = PETSC_FALSE
  *         CHKERR( BVOrthogonalizeVec(self.bv, v.vec, NULL, &norm, &ldep) )
  *         return (toReal(norm), <bint>ldep)             # <<<<<<<<<<<<<<
@@ -15446,11 +16697,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_72orthogonalizeVec(struct PySlepc
  *     def orthogonalize(self, Mat R=None, **kargs):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_norm); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 823, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_norm); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 822, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyInt_From_PetscBool(__pyx_v_ldep); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 823, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_PetscBool(__pyx_v_ldep); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 822, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 823, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 822, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
@@ -15462,10 +16713,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_72orthogonalizeVec(struct PySlepc
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/BV.pyx":795
+  /* "SLEPc/BV.pyx":794
  *         CHKERR( BVSetRandom(self.bv) )
  * 
- *     def orthogonalizeVec(self, Vec v not None):             # <<<<<<<<<<<<<<
+ *     def orthogonalizeVec(self, Vec v):             # <<<<<<<<<<<<<<
  *         """
  *         Orthogonalize a vector with respect to a set of vectors.
  */
@@ -15483,7 +16734,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_72orthogonalizeVec(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/BV.pyx":825
+/* "SLEPc/BV.pyx":824
  *         return (toReal(norm), <bint>ldep)
  * 
  *     def orthogonalize(self, Mat R=None, **kargs):             # <<<<<<<<<<<<<<
@@ -15493,7 +16744,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_72orthogonalizeVec(struct PySlepc
 
 /* Python wrapper */
 static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_75orthogonalize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_2BV_74orthogonalize[] = "BV.orthogonalize(self, Mat R=None, **kargs)\n\n        Orthogonalize all columns (except leading ones),\n        that is, compute the QR decomposition.\n\n        Parameters\n        ----------\n        R: Mat or None\n            A sequential dense matrix.\n\n        Notes\n        -----\n        The output satisfies ``V0 = V*R`` (where V0 represent the input V) and ``V'*V = I``.\n        ";
+static char __pyx_doc_8slepc4py_5SLEPc_2BV_74orthogonalize[] = "BV.orthogonalize(self, Mat R=None, **kargs)\n\n        Orthogonalize all columns (except leading ones),\n        that is, compute the QR decomposition.\n\n        Parameters\n        ----------\n        R: Mat, optional\n            A sequential dense matrix.\n\n        Notes\n        -----\n        The output satisfies ``V0 = V*R`` (where V0 represent the input V) and ``V'*V = I``.\n        ";
 static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_75orthogonalize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   struct PyPetscMatObject *__pyx_v_R = 0;
   PyObject *__pyx_v_kargs = 0;
@@ -15511,6 +16762,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_75orthogonalize(PyObject *__pyx_v
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -15523,11 +16775,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_75orthogonalize(PyObject *__pyx_v
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kargs, values, pos_args, "orthogonalize") < 0)) __PYX_ERR(3, 825, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kargs, values, pos_args, "orthogonalize") < 0)) __PYX_ERR(10, 824, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -15536,14 +16789,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2BV_75orthogonalize(PyObject *__pyx_v
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("orthogonalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 825, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("orthogonalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 824, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_kargs); __pyx_v_kargs = 0;
   __Pyx_AddTraceback("slepc4py.SLEPc.BV.orthogonalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_R), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "R", 0))) __PYX_ERR(3, 825, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_R), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "R", 0))) __PYX_ERR(10, 824, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2BV_74orthogonalize(((struct PySlepcBVObject *)__pyx_v_self), __pyx_v_R, __pyx_v_kargs);
 
   /* function exit code */
@@ -15563,52 +16816,52 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2BV_74orthogonalize(struct PySlepcBVO
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  void *__pyx_t_4;
+  Mat __pyx_t_4;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("orthogonalize", 0);
 
-  /* "SLEPc/BV.pyx":839
+  /* "SLEPc/BV.pyx":838
  *         The output satisfies ``V0 = V*R`` (where V0 represent the input V) and ``V'*V = I``.
  *         """
  *         if kargs: self.setOrthogonalization(**kargs)             # <<<<<<<<<<<<<<
- *         cdef PetscMat Rmat = NULL if R is None else R.mat
+ *         cdef PetscMat Rmat = <PetscMat>NULL if R is None else R.mat
  *         CHKERR( BVOrthogonalize(self.bv, Rmat) )
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_kargs); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 839, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_kargs); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(10, 838, __pyx_L1_error)
   if (__pyx_t_1) {
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setOrthogonalization); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 839, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setOrthogonalization); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 838, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_v_kargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 839, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_v_kargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 838, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
 
-  /* "SLEPc/BV.pyx":840
+  /* "SLEPc/BV.pyx":839
  *         """
  *         if kargs: self.setOrthogonalization(**kargs)
- *         cdef PetscMat Rmat = NULL if R is None else R.mat             # <<<<<<<<<<<<<<
+ *         cdef PetscMat Rmat = <PetscMat>NULL if R is None else R.mat             # <<<<<<<<<<<<<<
  *         CHKERR( BVOrthogonalize(self.bv, Rmat) )
  * 
  */
   __pyx_t_1 = (((PyObject *)__pyx_v_R) == Py_None);
   if ((__pyx_t_1 != 0)) {
-    __pyx_t_4 = NULL;
+    __pyx_t_4 = ((Mat)NULL);
   } else {
     __pyx_t_4 = __pyx_v_R->mat;
   }
   __pyx_v_Rmat = __pyx_t_4;
 
-  /* "SLEPc/BV.pyx":841
+  /* "SLEPc/BV.pyx":840
  *         if kargs: self.setOrthogonalization(**kargs)
- *         cdef PetscMat Rmat = NULL if R is None else R.mat
+ *         cdef PetscMat Rmat = <PetscMat>NULL if R is None else R.mat
  *         CHKERR( BVOrthogonalize(self.bv, Rmat) )             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVOrthogonalize(__pyx_v_self->bv, __pyx_v_Rmat)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(3, 841, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(BVOrthogonalize(__pyx_v_self->bv, __pyx_v_Rmat)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(10, 840, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":825
+  /* "SLEPc/BV.pyx":824
  *         return (toReal(norm), <bint>ldep)
  * 
  *     def orthogonalize(self, Mat R=None, **kargs):             # <<<<<<<<<<<<<<
@@ -15716,6 +16969,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_3view(PyObject *__pyx_v_self, PyO
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -15728,11 +16982,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_3view(PyObject *__pyx_v_self, PyO
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(10, 76, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(11, 76, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -15741,13 +16996,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_3view(PyObject *__pyx_v_self, PyO
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 76, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 76, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.DS.view", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(10, 76, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(11, 76, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2DS_2view(((struct PySlepcDSObject *)__pyx_v_self), __pyx_v_viewer);
 
   /* function exit code */
@@ -15764,42 +17019,25 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_2view(struct PySlepcDSObject *__p
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
-  PetscViewer __pyx_t_3;
-  int __pyx_t_4;
   __Pyx_RefNannySetupContext("view", 0);
 
   /* "SLEPc/DS.pyx":86
  *                 output is used.
  *         """
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( DSView(self.ds, vwr) )
+ * 
  */
-  __pyx_v_vwr = NULL;
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
   /* "SLEPc/DS.pyx":87
  *         """
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
- *         CHKERR( DSView(self.ds, vwr) )
- * 
- */
-  __pyx_t_1 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_3;
-  }
-
-  /* "SLEPc/DS.pyx":88
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( DSView(self.ds, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     def destroy(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSView(__pyx_v_self->ds, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(10, 88, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSView(__pyx_v_self->ds, __pyx_v_vwr)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 87, __pyx_L1_error)
 
   /* "SLEPc/DS.pyx":76
  *         self.ds = NULL
@@ -15821,7 +17059,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_2view(struct PySlepcDSObject *__p
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":90
+/* "SLEPc/DS.pyx":89
  *         CHKERR( DSView(self.ds, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -15852,16 +17090,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_4destroy(struct PySlepcDSObject *
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("destroy", 0);
 
-  /* "SLEPc/DS.pyx":94
+  /* "SLEPc/DS.pyx":93
  *         Destroys the DS object.
  *         """
  *         CHKERR( DSDestroy(&self.ds) )             # <<<<<<<<<<<<<<
  *         self.ds = NULL
  *         return self
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSDestroy((&__pyx_v_self->ds))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(10, 94, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSDestroy((&__pyx_v_self->ds))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 93, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":95
+  /* "SLEPc/DS.pyx":94
  *         """
  *         CHKERR( DSDestroy(&self.ds) )
  *         self.ds = NULL             # <<<<<<<<<<<<<<
@@ -15870,7 +17108,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_4destroy(struct PySlepcDSObject *
  */
   __pyx_v_self->ds = NULL;
 
-  /* "SLEPc/DS.pyx":96
+  /* "SLEPc/DS.pyx":95
  *         CHKERR( DSDestroy(&self.ds) )
  *         self.ds = NULL
  *         return self             # <<<<<<<<<<<<<<
@@ -15882,7 +17120,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_4destroy(struct PySlepcDSObject *
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/DS.pyx":90
+  /* "SLEPc/DS.pyx":89
  *         CHKERR( DSView(self.ds, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -15900,7 +17138,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_4destroy(struct PySlepcDSObject *
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":98
+/* "SLEPc/DS.pyx":97
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -15931,16 +17169,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_6reset(struct PySlepcDSObject *__
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("reset", 0);
 
-  /* "SLEPc/DS.pyx":102
+  /* "SLEPc/DS.pyx":101
  *         Resets the DS object.
  *         """
  *         CHKERR( DSReset(self.ds) )             # <<<<<<<<<<<<<<
  * 
  *     def create(self, comm=None):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSReset(__pyx_v_self->ds)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(10, 102, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSReset(__pyx_v_self->ds)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 101, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":98
+  /* "SLEPc/DS.pyx":97
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -15960,7 +17198,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_6reset(struct PySlepcDSObject *__
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":104
+/* "SLEPc/DS.pyx":103
  *         CHKERR( DSReset(self.ds) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -15985,6 +17223,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_9create(PyObject *__pyx_v_self, P
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -15997,11 +17236,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_9create(PyObject *__pyx_v_self, P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(10, 104, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(11, 103, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -16010,7 +17250,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_9create(PyObject *__pyx_v_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 104, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 103, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.DS.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -16032,17 +17272,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_8create(struct PySlepcDSObject *_
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("create", 0);
 
-  /* "SLEPc/DS.pyx":114
+  /* "SLEPc/DS.pyx":113
  *               processes.
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())             # <<<<<<<<<<<<<<
  *         cdef SlepcDS newds = NULL
  *         CHKERR( DSCreate(ccomm, &newds) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 114, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 113, __pyx_L1_error)
   __pyx_v_ccomm = __pyx_t_1;
 
-  /* "SLEPc/DS.pyx":115
+  /* "SLEPc/DS.pyx":114
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcDS newds = NULL             # <<<<<<<<<<<<<<
@@ -16051,16 +17291,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_8create(struct PySlepcDSObject *_
  */
   __pyx_v_newds = NULL;
 
-  /* "SLEPc/DS.pyx":116
+  /* "SLEPc/DS.pyx":115
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcDS newds = NULL
  *         CHKERR( DSCreate(ccomm, &newds) )             # <<<<<<<<<<<<<<
  *         SlepcCLEAR(self.obj); self.ds = newds
  *         return self
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSCreate(__pyx_v_ccomm, (&__pyx_v_newds))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(10, 116, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSCreate(__pyx_v_ccomm, (&__pyx_v_newds))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 115, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":117
+  /* "SLEPc/DS.pyx":116
  *         cdef SlepcDS newds = NULL
  *         CHKERR( DSCreate(ccomm, &newds) )
  *         SlepcCLEAR(self.obj); self.ds = newds             # <<<<<<<<<<<<<<
@@ -16070,7 +17310,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_8create(struct PySlepcDSObject *_
   __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(__pyx_v_self->__pyx_base.obj);
   __pyx_v_self->ds = __pyx_v_newds;
 
-  /* "SLEPc/DS.pyx":118
+  /* "SLEPc/DS.pyx":117
  *         CHKERR( DSCreate(ccomm, &newds) )
  *         SlepcCLEAR(self.obj); self.ds = newds
  *         return self             # <<<<<<<<<<<<<<
@@ -16082,7 +17322,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_8create(struct PySlepcDSObject *_
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/DS.pyx":104
+  /* "SLEPc/DS.pyx":103
  *         CHKERR( DSReset(self.ds) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -16100,7 +17340,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_8create(struct PySlepcDSObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":120
+/* "SLEPc/DS.pyx":119
  *         return self
  * 
  *     def setType(self, ds_type):             # <<<<<<<<<<<<<<
@@ -16124,6 +17364,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_11setType(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -16134,7 +17375,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_11setType(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(10, 120, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(11, 119, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -16145,7 +17386,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_11setType(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 120, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 119, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.DS.setType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -16167,7 +17408,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_10setType(struct PySlepcDSObject
   __Pyx_RefNannySetupContext("setType", 0);
   __Pyx_INCREF(__pyx_v_ds_type);
 
-  /* "SLEPc/DS.pyx":129
+  /* "SLEPc/DS.pyx":128
  *                   The direct solver type to be used.
  *         """
  *         cdef SlepcDSType cval = NULL             # <<<<<<<<<<<<<<
@@ -16176,28 +17417,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_10setType(struct PySlepcDSObject
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/DS.pyx":130
+  /* "SLEPc/DS.pyx":129
  *         """
  *         cdef SlepcDSType cval = NULL
  *         ds_type = str2bytes(ds_type, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( DSSetType(self.ds, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_ds_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 130, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_ds_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 129, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_ds_type, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/DS.pyx":131
+  /* "SLEPc/DS.pyx":130
  *         cdef SlepcDSType cval = NULL
  *         ds_type = str2bytes(ds_type, &cval)
  *         CHKERR( DSSetType(self.ds, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getType(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetType(__pyx_v_self->ds, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(10, 131, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetType(__pyx_v_self->ds, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 130, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":120
+  /* "SLEPc/DS.pyx":119
  *         return self
  * 
  *     def setType(self, ds_type):             # <<<<<<<<<<<<<<
@@ -16219,7 +17460,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_10setType(struct PySlepcDSObject
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":133
+/* "SLEPc/DS.pyx":132
  *         CHKERR( DSSetType(self.ds, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -16252,7 +17493,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_12getType(struct PySlepcDSObject
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getType", 0);
 
-  /* "SLEPc/DS.pyx":142
+  /* "SLEPc/DS.pyx":141
  *               The direct solver type currently being used.
  *         """
  *         cdef SlepcDSType ds_type = NULL             # <<<<<<<<<<<<<<
@@ -16261,16 +17502,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_12getType(struct PySlepcDSObject
  */
   __pyx_v_ds_type = NULL;
 
-  /* "SLEPc/DS.pyx":143
+  /* "SLEPc/DS.pyx":142
  *         """
  *         cdef SlepcDSType ds_type = NULL
  *         CHKERR( DSGetType(self.ds, &ds_type) )             # <<<<<<<<<<<<<<
  *         return bytes2str(ds_type)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetType(__pyx_v_self->ds, (&__pyx_v_ds_type))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(10, 143, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetType(__pyx_v_self->ds, (&__pyx_v_ds_type))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 142, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":144
+  /* "SLEPc/DS.pyx":143
  *         cdef SlepcDSType ds_type = NULL
  *         CHKERR( DSGetType(self.ds, &ds_type) )
  *         return bytes2str(ds_type)             # <<<<<<<<<<<<<<
@@ -16278,13 +17519,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_12getType(struct PySlepcDSObject
  *     def setOptionsPrefix(self, prefix):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_ds_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 144, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_ds_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 143, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/DS.pyx":133
+  /* "SLEPc/DS.pyx":132
  *         CHKERR( DSSetType(self.ds, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -16303,7 +17544,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_12getType(struct PySlepcDSObject
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":146
+/* "SLEPc/DS.pyx":145
  *         return bytes2str(ds_type)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -16327,6 +17568,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_15setOptionsPrefix(PyObject *__py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -16337,7 +17579,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_15setOptionsPrefix(PyObject *__py
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(10, 146, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(11, 145, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -16348,7 +17590,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_15setOptionsPrefix(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 146, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 145, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.DS.setOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -16370,7 +17612,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_14setOptionsPrefix(struct PySlepc
   __Pyx_RefNannySetupContext("setOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/DS.pyx":163
+  /* "SLEPc/DS.pyx":162
  *         AUTOMATICALLY the hyphen.
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -16379,28 +17621,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_14setOptionsPrefix(struct PySlepc
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/DS.pyx":164
+  /* "SLEPc/DS.pyx":163
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( DSSetOptionsPrefix(self.ds, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 164, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 163, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/DS.pyx":165
+  /* "SLEPc/DS.pyx":164
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( DSSetOptionsPrefix(self.ds, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getOptionsPrefix(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetOptionsPrefix(__pyx_v_self->ds, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(10, 165, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetOptionsPrefix(__pyx_v_self->ds, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 164, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":146
+  /* "SLEPc/DS.pyx":145
  *         return bytes2str(ds_type)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -16422,7 +17664,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_14setOptionsPrefix(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":167
+/* "SLEPc/DS.pyx":166
  *         CHKERR( DSSetOptionsPrefix(self.ds, cval) )
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -16455,7 +17697,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_16getOptionsPrefix(struct PySlepc
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getOptionsPrefix", 0);
 
-  /* "SLEPc/DS.pyx":177
+  /* "SLEPc/DS.pyx":176
  *                 The prefix string set for this DS object.
  *         """
  *         cdef const_char *prefix = NULL             # <<<<<<<<<<<<<<
@@ -16464,16 +17706,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_16getOptionsPrefix(struct PySlepc
  */
   __pyx_v_prefix = NULL;
 
-  /* "SLEPc/DS.pyx":178
+  /* "SLEPc/DS.pyx":177
  *         """
  *         cdef const_char *prefix = NULL
  *         CHKERR( DSGetOptionsPrefix(self.ds, &prefix) )             # <<<<<<<<<<<<<<
  *         return bytes2str(prefix)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetOptionsPrefix(__pyx_v_self->ds, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(10, 178, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetOptionsPrefix(__pyx_v_self->ds, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 177, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":179
+  /* "SLEPc/DS.pyx":178
  *         cdef const_char *prefix = NULL
  *         CHKERR( DSGetOptionsPrefix(self.ds, &prefix) )
  *         return bytes2str(prefix)             # <<<<<<<<<<<<<<
@@ -16481,13 +17723,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_16getOptionsPrefix(struct PySlepc
  *     def setFromOptions(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 179, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 178, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/DS.pyx":167
+  /* "SLEPc/DS.pyx":166
  *         CHKERR( DSSetOptionsPrefix(self.ds, cval) )
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -16506,7 +17748,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_16getOptionsPrefix(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":181
+/* "SLEPc/DS.pyx":180
  *         return bytes2str(prefix)
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -16537,16 +17779,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_18setFromOptions(struct PySlepcDS
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setFromOptions", 0);
 
-  /* "SLEPc/DS.pyx":190
+  /* "SLEPc/DS.pyx":189
  *         option.
  *         """
  *         CHKERR( DSSetFromOptions(self.ds) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetFromOptions(__pyx_v_self->ds)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(10, 190, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetFromOptions(__pyx_v_self->ds)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 189, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":181
+  /* "SLEPc/DS.pyx":180
  *         return bytes2str(prefix)
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -16566,7 +17808,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_18setFromOptions(struct PySlepcDS
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":194
+/* "SLEPc/DS.pyx":193
  *     #
  * 
  *     def allocate(self, ld):             # <<<<<<<<<<<<<<
@@ -16590,6 +17832,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_21allocate(PyObject *__pyx_v_self
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -16600,7 +17843,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_21allocate(PyObject *__pyx_v_self
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "allocate") < 0)) __PYX_ERR(10, 194, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "allocate") < 0)) __PYX_ERR(11, 193, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -16611,7 +17854,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_21allocate(PyObject *__pyx_v_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("allocate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 194, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("allocate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 193, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.DS.allocate", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -16632,26 +17875,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_20allocate(struct PySlepcDSObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("allocate", 0);
 
-  /* "SLEPc/DS.pyx":204
+  /* "SLEPc/DS.pyx":203
  *             matrices, including the extra row if present).
  *         """
  *         cdef PetscInt val = ld             # <<<<<<<<<<<<<<
  *         CHKERR( DSAllocate(self.ds, val) )
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_ld); if (unlikely((__pyx_t_1 == (PetscInt)-1) && PyErr_Occurred())) __PYX_ERR(10, 204, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_ld); if (unlikely((__pyx_t_1 == ((PetscInt)-1)) && PyErr_Occurred())) __PYX_ERR(11, 203, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/DS.pyx":205
+  /* "SLEPc/DS.pyx":204
  *         """
  *         cdef PetscInt val = ld
  *         CHKERR( DSAllocate(self.ds, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getLeadingDimension(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSAllocate(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(10, 205, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSAllocate(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 204, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":194
+  /* "SLEPc/DS.pyx":193
  *     #
  * 
  *     def allocate(self, ld):             # <<<<<<<<<<<<<<
@@ -16671,7 +17914,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_20allocate(struct PySlepcDSObject
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":207
+/* "SLEPc/DS.pyx":206
  *         CHKERR( DSAllocate(self.ds, val) )
  * 
  *     def getLeadingDimension(self):             # <<<<<<<<<<<<<<
@@ -16704,7 +17947,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_22getLeadingDimension(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getLeadingDimension", 0);
 
-  /* "SLEPc/DS.pyx":216
+  /* "SLEPc/DS.pyx":215
  *             Leading dimension (maximum allowed dimension for the matrices).
  *         """
  *         cdef PetscInt val = 0             # <<<<<<<<<<<<<<
@@ -16713,16 +17956,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_22getLeadingDimension(struct PySl
  */
   __pyx_v_val = 0;
 
-  /* "SLEPc/DS.pyx":217
+  /* "SLEPc/DS.pyx":216
  *         """
  *         cdef PetscInt val = 0
  *         CHKERR( DSGetLeadingDimension(self.ds, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetLeadingDimension(__pyx_v_self->ds, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(10, 217, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetLeadingDimension(__pyx_v_self->ds, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 216, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":218
+  /* "SLEPc/DS.pyx":217
  *         cdef PetscInt val = 0
  *         CHKERR( DSGetLeadingDimension(self.ds, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -16730,13 +17973,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_22getLeadingDimension(struct PySl
  *     def setState(self, state):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscInt(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 218, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscInt(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 217, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/DS.pyx":207
+  /* "SLEPc/DS.pyx":206
  *         CHKERR( DSAllocate(self.ds, val) )
  * 
  *     def getLeadingDimension(self):             # <<<<<<<<<<<<<<
@@ -16755,7 +17998,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_22getLeadingDimension(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":220
+/* "SLEPc/DS.pyx":219
  *         return val
  * 
  *     def setState(self, state):             # <<<<<<<<<<<<<<
@@ -16779,6 +18022,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_25setState(PyObject *__pyx_v_self
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -16789,7 +18033,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_25setState(PyObject *__pyx_v_self
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setState") < 0)) __PYX_ERR(10, 220, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setState") < 0)) __PYX_ERR(11, 219, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -16800,7 +18044,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_25setState(PyObject *__pyx_v_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setState", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 220, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setState", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 219, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.DS.setState", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -16821,26 +18065,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_24setState(struct PySlepcDSObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setState", 0);
 
-  /* "SLEPc/DS.pyx":240
+  /* "SLEPc/DS.pyx":239
  *         the condensed structure is destroyed.
  *         """
  *         cdef SlepcDSStateType val = state             # <<<<<<<<<<<<<<
  *         CHKERR( DSSetState(self.ds, val) )
  * 
  */
-  __pyx_t_1 = ((DSStateType)__Pyx_PyInt_As_DSStateType(__pyx_v_state)); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 240, __pyx_L1_error)
+  __pyx_t_1 = ((DSStateType)__Pyx_PyInt_As_DSStateType(__pyx_v_state)); if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 239, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/DS.pyx":241
+  /* "SLEPc/DS.pyx":240
  *         """
  *         cdef SlepcDSStateType val = state
  *         CHKERR( DSSetState(self.ds, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getState(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetState(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(10, 241, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetState(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 240, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":220
+  /* "SLEPc/DS.pyx":219
  *         return val
  * 
  *     def setState(self, state):             # <<<<<<<<<<<<<<
@@ -16860,7 +18104,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_24setState(struct PySlepcDSObject
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":243
+/* "SLEPc/DS.pyx":242
  *         CHKERR( DSSetState(self.ds, val) )
  * 
  *     def getState(self):             # <<<<<<<<<<<<<<
@@ -16893,7 +18137,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_26getState(struct PySlepcDSObject
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getState", 0);
 
-  /* "SLEPc/DS.pyx":252
+  /* "SLEPc/DS.pyx":251
  *                The current state.
  *         """
  *         cdef SlepcDSStateType val = DS_STATE_RAW             # <<<<<<<<<<<<<<
@@ -16902,16 +18146,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_26getState(struct PySlepcDSObject
  */
   __pyx_v_val = DS_STATE_RAW;
 
-  /* "SLEPc/DS.pyx":253
+  /* "SLEPc/DS.pyx":252
  *         """
  *         cdef SlepcDSStateType val = DS_STATE_RAW
  *         CHKERR( DSGetState(self.ds, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetState(__pyx_v_self->ds, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(10, 253, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetState(__pyx_v_self->ds, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 252, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":254
+  /* "SLEPc/DS.pyx":253
  *         cdef SlepcDSStateType val = DS_STATE_RAW
  *         CHKERR( DSGetState(self.ds, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -16919,13 +18163,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_26getState(struct PySlepcDSObject
  *     def setDimensions(self, n=None, m=None, l=None, k=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_DSStateType(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 254, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_DSStateType(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 253, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/DS.pyx":243
+  /* "SLEPc/DS.pyx":242
  *         CHKERR( DSSetState(self.ds, val) )
  * 
  *     def getState(self):             # <<<<<<<<<<<<<<
@@ -16944,7 +18188,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_26getState(struct PySlepcDSObject
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":256
+/* "SLEPc/DS.pyx":255
  *         return val
  * 
  *     def setDimensions(self, n=None, m=None, l=None, k=None):             # <<<<<<<<<<<<<<
@@ -16975,9 +18219,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_29setDimensions(PyObject *__pyx_v
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -16988,16 +18236,19 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_29setDimensions(PyObject *__pyx_v
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_l);
           if (value) { values[2] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  3:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_k);
@@ -17005,14 +18256,18 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_29setDimensions(PyObject *__pyx_v
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDimensions") < 0)) __PYX_ERR(10, 256, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDimensions") < 0)) __PYX_ERR(11, 255, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -17024,7 +18279,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_29setDimensions(PyObject *__pyx_v
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setDimensions", 0, 0, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 256, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setDimensions", 0, 0, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 255, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.DS.setDimensions", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -17050,7 +18305,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_28setDimensions(struct PySlepcDSO
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("setDimensions", 0);
 
-  /* "SLEPc/DS.pyx":277
+  /* "SLEPc/DS.pyx":276
  *         The value `m` is not used except in the case of DS.SVD.
  *         """
  *         cdef PetscInt ival1 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -17059,7 +18314,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_28setDimensions(struct PySlepcDSO
  */
   __pyx_v_ival1 = PETSC_DEFAULT;
 
-  /* "SLEPc/DS.pyx":278
+  /* "SLEPc/DS.pyx":277
  *         """
  *         cdef PetscInt ival1 = PETSC_DEFAULT
  *         cdef PetscInt ival2 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -17068,7 +18323,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_28setDimensions(struct PySlepcDSO
  */
   __pyx_v_ival2 = PETSC_DEFAULT;
 
-  /* "SLEPc/DS.pyx":279
+  /* "SLEPc/DS.pyx":278
  *         cdef PetscInt ival1 = PETSC_DEFAULT
  *         cdef PetscInt ival2 = PETSC_DEFAULT
  *         cdef PetscInt ival3 = 0             # <<<<<<<<<<<<<<
@@ -17077,7 +18332,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_28setDimensions(struct PySlepcDSO
  */
   __pyx_v_ival3 = 0;
 
-  /* "SLEPc/DS.pyx":280
+  /* "SLEPc/DS.pyx":279
  *         cdef PetscInt ival2 = PETSC_DEFAULT
  *         cdef PetscInt ival3 = 0
  *         cdef PetscInt ival4 = 0             # <<<<<<<<<<<<<<
@@ -17086,7 +18341,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_28setDimensions(struct PySlepcDSO
  */
   __pyx_v_ival4 = 0;
 
-  /* "SLEPc/DS.pyx":281
+  /* "SLEPc/DS.pyx":280
  *         cdef PetscInt ival3 = 0
  *         cdef PetscInt ival4 = 0
  *         if n is not None: ival1 = asInt(n)             # <<<<<<<<<<<<<<
@@ -17096,11 +18351,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_28setDimensions(struct PySlepcDSO
   __pyx_t_1 = (__pyx_v_n != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_n); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(10, 281, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_n); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(11, 280, __pyx_L1_error)
     __pyx_v_ival1 = __pyx_t_3;
   }
 
-  /* "SLEPc/DS.pyx":282
+  /* "SLEPc/DS.pyx":281
  *         cdef PetscInt ival4 = 0
  *         if n is not None: ival1 = asInt(n)
  *         if m is not None: ival2 = asInt(m)             # <<<<<<<<<<<<<<
@@ -17110,11 +18365,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_28setDimensions(struct PySlepcDSO
   __pyx_t_2 = (__pyx_v_m != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_m); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(10, 282, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_m); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(11, 281, __pyx_L1_error)
     __pyx_v_ival2 = __pyx_t_3;
   }
 
-  /* "SLEPc/DS.pyx":283
+  /* "SLEPc/DS.pyx":282
  *         if n is not None: ival1 = asInt(n)
  *         if m is not None: ival2 = asInt(m)
  *         if l is not None: ival3 = asInt(l)             # <<<<<<<<<<<<<<
@@ -17124,11 +18379,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_28setDimensions(struct PySlepcDSO
   __pyx_t_1 = (__pyx_v_l != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_l); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(10, 283, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_l); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(11, 282, __pyx_L1_error)
     __pyx_v_ival3 = __pyx_t_3;
   }
 
-  /* "SLEPc/DS.pyx":284
+  /* "SLEPc/DS.pyx":283
  *         if m is not None: ival2 = asInt(m)
  *         if l is not None: ival3 = asInt(l)
  *         if k is not None: ival4 = asInt(k)             # <<<<<<<<<<<<<<
@@ -17138,20 +18393,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_28setDimensions(struct PySlepcDSO
   __pyx_t_2 = (__pyx_v_k != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_k); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(10, 284, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_k); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(11, 283, __pyx_L1_error)
     __pyx_v_ival4 = __pyx_t_3;
   }
 
-  /* "SLEPc/DS.pyx":285
+  /* "SLEPc/DS.pyx":284
  *         if l is not None: ival3 = asInt(l)
  *         if k is not None: ival4 = asInt(k)
  *         CHKERR( DSSetDimensions(self.ds, ival1, ival2, ival3, ival4) )             # <<<<<<<<<<<<<<
  * 
  *     def getDimensions(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetDimensions(__pyx_v_self->ds, __pyx_v_ival1, __pyx_v_ival2, __pyx_v_ival3, __pyx_v_ival4)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(10, 285, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetDimensions(__pyx_v_self->ds, __pyx_v_ival1, __pyx_v_ival2, __pyx_v_ival3, __pyx_v_ival4)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(11, 284, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":256
+  /* "SLEPc/DS.pyx":255
  *         return val
  * 
  *     def setDimensions(self, n=None, m=None, l=None, k=None):             # <<<<<<<<<<<<<<
@@ -17171,7 +18426,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_28setDimensions(struct PySlepcDSO
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":287
+/* "SLEPc/DS.pyx":286
  *         CHKERR( DSSetDimensions(self.ds, ival1, ival2, ival3, ival4) )
  * 
  *     def getDimensions(self):             # <<<<<<<<<<<<<<
@@ -17213,7 +18468,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_30getDimensions(struct PySlepcDSO
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("getDimensions", 0);
 
-  /* "SLEPc/DS.pyx":304
+  /* "SLEPc/DS.pyx":303
  *            Truncated length.
  *         """
  *         cdef PetscInt ival1 = 0             # <<<<<<<<<<<<<<
@@ -17222,7 +18477,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_30getDimensions(struct PySlepcDSO
  */
   __pyx_v_ival1 = 0;
 
-  /* "SLEPc/DS.pyx":305
+  /* "SLEPc/DS.pyx":304
  *         """
  *         cdef PetscInt ival1 = 0
  *         cdef PetscInt ival2 = 0             # <<<<<<<<<<<<<<
@@ -17231,7 +18486,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_30getDimensions(struct PySlepcDSO
  */
   __pyx_v_ival2 = 0;
 
-  /* "SLEPc/DS.pyx":306
+  /* "SLEPc/DS.pyx":305
  *         cdef PetscInt ival1 = 0
  *         cdef PetscInt ival2 = 0
  *         cdef PetscInt ival3 = 0             # <<<<<<<<<<<<<<
@@ -17240,7 +18495,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_30getDimensions(struct PySlepcDSO
  */
   __pyx_v_ival3 = 0;
 
-  /* "SLEPc/DS.pyx":307
+  /* "SLEPc/DS.pyx":306
  *         cdef PetscInt ival2 = 0
  *         cdef PetscInt ival3 = 0
  *         cdef PetscInt ival4 = 0             # <<<<<<<<<<<<<<
@@ -17249,7 +18504,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_30getDimensions(struct PySlepcDSO
  */
   __pyx_v_ival4 = 0;
 
-  /* "SLEPc/DS.pyx":308
+  /* "SLEPc/DS.pyx":307
  *         cdef PetscInt ival3 = 0
  *         cdef PetscInt ival4 = 0
  *         cdef PetscInt ival5 = 0             # <<<<<<<<<<<<<<
@@ -17258,16 +18513,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_30getDimensions(struct PySlepcDSO
  */
   __pyx_v_ival5 = 0;
 
-  /* "SLEPc/DS.pyx":309
+  /* "SLEPc/DS.pyx":308
  *         cdef PetscInt ival4 = 0
  *         cdef PetscInt ival5 = 0
  *         CHKERR( DSGetDimensions(self.ds, &ival1, &ival2, &ival3, &ival4, &ival5) )             # <<<<<<<<<<<<<<
  *         return (toInt(ival1), toInt(ival2), toInt(ival3), toInt(ival4), toInt(ival5))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetDimensions(__pyx_v_self->ds, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_ival3), (&__pyx_v_ival4), (&__pyx_v_ival5))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(10, 309, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetDimensions(__pyx_v_self->ds, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_ival3), (&__pyx_v_ival4), (&__pyx_v_ival5))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 308, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":310
+  /* "SLEPc/DS.pyx":309
  *         cdef PetscInt ival5 = 0
  *         CHKERR( DSGetDimensions(self.ds, &ival1, &ival2, &ival3, &ival4, &ival5) )
  *         return (toInt(ival1), toInt(ival2), toInt(ival3), toInt(ival4), toInt(ival5))             # <<<<<<<<<<<<<<
@@ -17275,17 +18530,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_30getDimensions(struct PySlepcDSO
  *     def setMethod(self, meth):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 310, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 309, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 310, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 309, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival3); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 310, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival3); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 309, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 310, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival4); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 309, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival5); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 310, __pyx_L1_error)
+  __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival5); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 309, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 310, __pyx_L1_error)
+  __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 309, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
@@ -17306,7 +18561,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_30getDimensions(struct PySlepcDSO
   __pyx_t_7 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/DS.pyx":287
+  /* "SLEPc/DS.pyx":286
  *         CHKERR( DSSetDimensions(self.ds, ival1, ival2, ival3, ival4) )
  * 
  *     def getDimensions(self):             # <<<<<<<<<<<<<<
@@ -17330,7 +18585,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_30getDimensions(struct PySlepcDSO
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":312
+/* "SLEPc/DS.pyx":311
  *         return (toInt(ival1), toInt(ival2), toInt(ival3), toInt(ival4), toInt(ival5))
  * 
  *     def setMethod(self, meth):             # <<<<<<<<<<<<<<
@@ -17354,6 +18609,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_33setMethod(PyObject *__pyx_v_sel
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -17364,7 +18620,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_33setMethod(PyObject *__pyx_v_sel
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setMethod") < 0)) __PYX_ERR(10, 312, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setMethod") < 0)) __PYX_ERR(11, 311, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -17375,7 +18631,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_33setMethod(PyObject *__pyx_v_sel
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setMethod", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 312, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setMethod", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 311, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.DS.setMethod", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -17396,26 +18652,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_32setMethod(struct PySlepcDSObjec
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setMethod", 0);
 
-  /* "SLEPc/DS.pyx":321
+  /* "SLEPc/DS.pyx":320
  *               An index indentifying the method.
  *         """
  *         cdef PetscInt val = meth             # <<<<<<<<<<<<<<
  *         CHKERR( DSSetMethod(self.ds, val) )
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_meth); if (unlikely((__pyx_t_1 == (PetscInt)-1) && PyErr_Occurred())) __PYX_ERR(10, 321, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_meth); if (unlikely((__pyx_t_1 == ((PetscInt)-1)) && PyErr_Occurred())) __PYX_ERR(11, 320, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/DS.pyx":322
+  /* "SLEPc/DS.pyx":321
  *         """
  *         cdef PetscInt val = meth
  *         CHKERR( DSSetMethod(self.ds, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getMethod(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetMethod(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(10, 322, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetMethod(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 321, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":312
+  /* "SLEPc/DS.pyx":311
  *         return (toInt(ival1), toInt(ival2), toInt(ival3), toInt(ival4), toInt(ival5))
  * 
  *     def setMethod(self, meth):             # <<<<<<<<<<<<<<
@@ -17435,7 +18691,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_32setMethod(struct PySlepcDSObjec
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":324
+/* "SLEPc/DS.pyx":323
  *         CHKERR( DSSetMethod(self.ds, val) )
  * 
  *     def getMethod(self):             # <<<<<<<<<<<<<<
@@ -17468,7 +18724,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_34getMethod(struct PySlepcDSObjec
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getMethod", 0);
 
-  /* "SLEPc/DS.pyx":333
+  /* "SLEPc/DS.pyx":332
  *               Identifier of the method.
  *         """
  *         cdef PetscInt val = 0             # <<<<<<<<<<<<<<
@@ -17477,16 +18733,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_34getMethod(struct PySlepcDSObjec
  */
   __pyx_v_val = 0;
 
-  /* "SLEPc/DS.pyx":334
+  /* "SLEPc/DS.pyx":333
  *         """
  *         cdef PetscInt val = 0
  *         CHKERR( DSGetMethod(self.ds, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetMethod(__pyx_v_self->ds, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(10, 334, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetMethod(__pyx_v_self->ds, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 333, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":335
+  /* "SLEPc/DS.pyx":334
  *         cdef PetscInt val = 0
  *         CHKERR( DSGetMethod(self.ds, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -17494,13 +18750,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_34getMethod(struct PySlepcDSObjec
  *     def setCompact(self, comp):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscInt(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 335, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscInt(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 334, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/DS.pyx":324
+  /* "SLEPc/DS.pyx":323
  *         CHKERR( DSSetMethod(self.ds, val) )
  * 
  *     def getMethod(self):             # <<<<<<<<<<<<<<
@@ -17519,7 +18775,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_34getMethod(struct PySlepcDSObjec
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":337
+/* "SLEPc/DS.pyx":336
  *         return val
  * 
  *     def setCompact(self, comp):             # <<<<<<<<<<<<<<
@@ -17543,6 +18799,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_37setCompact(PyObject *__pyx_v_se
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -17553,7 +18810,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_37setCompact(PyObject *__pyx_v_se
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setCompact") < 0)) __PYX_ERR(10, 337, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setCompact") < 0)) __PYX_ERR(11, 336, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -17564,7 +18821,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_37setCompact(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setCompact", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 337, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setCompact", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 336, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.DS.setCompact", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -17585,7 +18842,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_36setCompact(struct PySlepcDSObje
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setCompact", 0);
 
-  /* "SLEPc/DS.pyx":356
+  /* "SLEPc/DS.pyx":355
  *         The default is ``False``.
  *         """
  *         cdef PetscBool val = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -17594,28 +18851,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_36setCompact(struct PySlepcDSObje
  */
   __pyx_v_val = PETSC_FALSE;
 
-  /* "SLEPc/DS.pyx":357
+  /* "SLEPc/DS.pyx":356
  *         """
  *         cdef PetscBool val = PETSC_FALSE
  *         if comp: val = PETSC_TRUE             # <<<<<<<<<<<<<<
  *         CHKERR( DSSetCompact(self.ds, val) )
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_comp); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(10, 357, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_comp); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(11, 356, __pyx_L1_error)
   if (__pyx_t_1) {
     __pyx_v_val = PETSC_TRUE;
   }
 
-  /* "SLEPc/DS.pyx":358
+  /* "SLEPc/DS.pyx":357
  *         cdef PetscBool val = PETSC_FALSE
  *         if comp: val = PETSC_TRUE
  *         CHKERR( DSSetCompact(self.ds, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getCompact(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetCompact(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(10, 358, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetCompact(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 357, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":337
+  /* "SLEPc/DS.pyx":336
  *         return val
  * 
  *     def setCompact(self, comp):             # <<<<<<<<<<<<<<
@@ -17635,7 +18892,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_36setCompact(struct PySlepcDSObje
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":360
+/* "SLEPc/DS.pyx":359
  *         CHKERR( DSSetCompact(self.ds, val) )
  * 
  *     def getCompact(self):             # <<<<<<<<<<<<<<
@@ -17668,7 +18925,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_38getCompact(struct PySlepcDSObje
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getCompact", 0);
 
-  /* "SLEPc/DS.pyx":369
+  /* "SLEPc/DS.pyx":368
  *               The flag.
  *         """
  *         cdef PetscBool val = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -17677,16 +18934,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_38getCompact(struct PySlepcDSObje
  */
   __pyx_v_val = PETSC_FALSE;
 
-  /* "SLEPc/DS.pyx":370
+  /* "SLEPc/DS.pyx":369
  *         """
  *         cdef PetscBool val = PETSC_FALSE
  *         CHKERR( DSGetCompact(self.ds, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetCompact(__pyx_v_self->ds, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(10, 370, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetCompact(__pyx_v_self->ds, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 369, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":371
+  /* "SLEPc/DS.pyx":370
  *         cdef PetscBool val = PETSC_FALSE
  *         CHKERR( DSGetCompact(self.ds, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -17694,13 +18951,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_38getCompact(struct PySlepcDSObje
  *     def setExtraRow(self, ext):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 371, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 370, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/DS.pyx":360
+  /* "SLEPc/DS.pyx":359
  *         CHKERR( DSSetCompact(self.ds, val) )
  * 
  *     def getCompact(self):             # <<<<<<<<<<<<<<
@@ -17719,7 +18976,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_38getCompact(struct PySlepcDSObje
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":373
+/* "SLEPc/DS.pyx":372
  *         return val
  * 
  *     def setExtraRow(self, ext):             # <<<<<<<<<<<<<<
@@ -17743,6 +19000,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_41setExtraRow(PyObject *__pyx_v_s
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -17753,7 +19011,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_41setExtraRow(PyObject *__pyx_v_s
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setExtraRow") < 0)) __PYX_ERR(10, 373, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setExtraRow") < 0)) __PYX_ERR(11, 372, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -17764,7 +19022,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_41setExtraRow(PyObject *__pyx_v_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setExtraRow", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 373, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setExtraRow", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 372, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.DS.setExtraRow", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -17785,7 +19043,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_40setExtraRow(struct PySlepcDSObj
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setExtraRow", 0);
 
-  /* "SLEPc/DS.pyx":393
+  /* "SLEPc/DS.pyx":392
  *         The default is ``False``.
  *         """
  *         cdef PetscBool val = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -17794,28 +19052,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_40setExtraRow(struct PySlepcDSObj
  */
   __pyx_v_val = PETSC_FALSE;
 
-  /* "SLEPc/DS.pyx":394
+  /* "SLEPc/DS.pyx":393
  *         """
  *         cdef PetscBool val = PETSC_FALSE
  *         if ext: val = PETSC_TRUE             # <<<<<<<<<<<<<<
  *         CHKERR( DSSetExtraRow(self.ds, val) )
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_ext); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(10, 394, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_ext); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(11, 393, __pyx_L1_error)
   if (__pyx_t_1) {
     __pyx_v_val = PETSC_TRUE;
   }
 
-  /* "SLEPc/DS.pyx":395
+  /* "SLEPc/DS.pyx":394
  *         cdef PetscBool val = PETSC_FALSE
  *         if ext: val = PETSC_TRUE
  *         CHKERR( DSSetExtraRow(self.ds, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getExtraRow(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetExtraRow(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(10, 395, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetExtraRow(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 394, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":373
+  /* "SLEPc/DS.pyx":372
  *         return val
  * 
  *     def setExtraRow(self, ext):             # <<<<<<<<<<<<<<
@@ -17835,7 +19093,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_40setExtraRow(struct PySlepcDSObj
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":397
+/* "SLEPc/DS.pyx":396
  *         CHKERR( DSSetExtraRow(self.ds, val) )
  * 
  *     def getExtraRow(self):             # <<<<<<<<<<<<<<
@@ -17868,7 +19126,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_42getExtraRow(struct PySlepcDSObj
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getExtraRow", 0);
 
-  /* "SLEPc/DS.pyx":406
+  /* "SLEPc/DS.pyx":405
  *               The flag.
  *         """
  *         cdef PetscBool val = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -17877,16 +19135,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_42getExtraRow(struct PySlepcDSObj
  */
   __pyx_v_val = PETSC_FALSE;
 
-  /* "SLEPc/DS.pyx":407
+  /* "SLEPc/DS.pyx":406
  *         """
  *         cdef PetscBool val = PETSC_FALSE
  *         CHKERR( DSGetExtraRow(self.ds, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetExtraRow(__pyx_v_self->ds, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(10, 407, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetExtraRow(__pyx_v_self->ds, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 406, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":408
+  /* "SLEPc/DS.pyx":407
  *         cdef PetscBool val = PETSC_FALSE
  *         CHKERR( DSGetExtraRow(self.ds, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -17894,13 +19152,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_42getExtraRow(struct PySlepcDSObj
  *     def setRefined(self, ref):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 408, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 407, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/DS.pyx":397
+  /* "SLEPc/DS.pyx":396
  *         CHKERR( DSSetExtraRow(self.ds, val) )
  * 
  *     def getExtraRow(self):             # <<<<<<<<<<<<<<
@@ -17919,7 +19177,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_42getExtraRow(struct PySlepcDSObj
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":410
+/* "SLEPc/DS.pyx":409
  *         return val
  * 
  *     def setRefined(self, ref):             # <<<<<<<<<<<<<<
@@ -17943,6 +19201,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_45setRefined(PyObject *__pyx_v_se
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -17953,7 +19212,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_45setRefined(PyObject *__pyx_v_se
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRefined") < 0)) __PYX_ERR(10, 410, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRefined") < 0)) __PYX_ERR(11, 409, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -17964,7 +19223,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_45setRefined(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setRefined", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 410, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setRefined", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 409, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.DS.setRefined", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -17985,7 +19244,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_44setRefined(struct PySlepcDSObje
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setRefined", 0);
 
-  /* "SLEPc/DS.pyx":430
+  /* "SLEPc/DS.pyx":429
  *         The default is ``False``.
  *         """
  *         cdef PetscBool val = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -17994,28 +19253,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_44setRefined(struct PySlepcDSObje
  */
   __pyx_v_val = PETSC_FALSE;
 
-  /* "SLEPc/DS.pyx":431
+  /* "SLEPc/DS.pyx":430
  *         """
  *         cdef PetscBool val = PETSC_FALSE
  *         if ref: val = PETSC_TRUE             # <<<<<<<<<<<<<<
  *         CHKERR( DSSetRefined(self.ds, val) )
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_ref); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(10, 431, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_ref); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(11, 430, __pyx_L1_error)
   if (__pyx_t_1) {
     __pyx_v_val = PETSC_TRUE;
   }
 
-  /* "SLEPc/DS.pyx":432
+  /* "SLEPc/DS.pyx":431
  *         cdef PetscBool val = PETSC_FALSE
  *         if ref: val = PETSC_TRUE
  *         CHKERR( DSSetRefined(self.ds, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getRefined(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetRefined(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(10, 432, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSSetRefined(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 431, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":410
+  /* "SLEPc/DS.pyx":409
  *         return val
  * 
  *     def setRefined(self, ref):             # <<<<<<<<<<<<<<
@@ -18035,7 +19294,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_44setRefined(struct PySlepcDSObje
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":434
+/* "SLEPc/DS.pyx":433
  *         CHKERR( DSSetRefined(self.ds, val) )
  * 
  *     def getRefined(self):             # <<<<<<<<<<<<<<
@@ -18068,7 +19327,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_46getRefined(struct PySlepcDSObje
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getRefined", 0);
 
-  /* "SLEPc/DS.pyx":443
+  /* "SLEPc/DS.pyx":442
  *               The flag.
  *         """
  *         cdef PetscBool val = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -18077,16 +19336,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_46getRefined(struct PySlepcDSObje
  */
   __pyx_v_val = PETSC_FALSE;
 
-  /* "SLEPc/DS.pyx":444
+  /* "SLEPc/DS.pyx":443
  *         """
  *         cdef PetscBool val = PETSC_FALSE
  *         CHKERR( DSGetRefined(self.ds, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetRefined(__pyx_v_self->ds, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(10, 444, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSGetRefined(__pyx_v_self->ds, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 443, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":445
+  /* "SLEPc/DS.pyx":444
  *         cdef PetscBool val = PETSC_FALSE
  *         CHKERR( DSGetRefined(self.ds, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -18094,13 +19353,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_46getRefined(struct PySlepcDSObje
  *     def truncate(self, n):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 445, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 444, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/DS.pyx":434
+  /* "SLEPc/DS.pyx":433
  *         CHKERR( DSSetRefined(self.ds, val) )
  * 
  *     def getRefined(self):             # <<<<<<<<<<<<<<
@@ -18119,7 +19378,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_46getRefined(struct PySlepcDSObje
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":447
+/* "SLEPc/DS.pyx":446
  *         return val
  * 
  *     def truncate(self, n):             # <<<<<<<<<<<<<<
@@ -18143,6 +19402,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_49truncate(PyObject *__pyx_v_self
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -18153,7 +19413,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_49truncate(PyObject *__pyx_v_self
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "truncate") < 0)) __PYX_ERR(10, 447, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "truncate") < 0)) __PYX_ERR(11, 446, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -18164,7 +19424,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2DS_49truncate(PyObject *__pyx_v_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("truncate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 447, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("truncate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 446, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.DS.truncate", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -18185,26 +19445,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_48truncate(struct PySlepcDSObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("truncate", 0);
 
-  /* "SLEPc/DS.pyx":456
+  /* "SLEPc/DS.pyx":455
  *            The new size.
  *         """
  *         cdef PetscInt val = n             # <<<<<<<<<<<<<<
  *         CHKERR( DSTruncate(self.ds, val) )
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_n); if (unlikely((__pyx_t_1 == (PetscInt)-1) && PyErr_Occurred())) __PYX_ERR(10, 456, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_n); if (unlikely((__pyx_t_1 == ((PetscInt)-1)) && PyErr_Occurred())) __PYX_ERR(11, 455, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/DS.pyx":457
+  /* "SLEPc/DS.pyx":456
  *         """
  *         cdef PetscInt val = n
  *         CHKERR( DSTruncate(self.ds, val) )             # <<<<<<<<<<<<<<
  * 
  *     def updateExtraRow(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSTruncate(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(10, 457, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSTruncate(__pyx_v_self->ds, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 456, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":447
+  /* "SLEPc/DS.pyx":446
  *         return val
  * 
  *     def truncate(self, n):             # <<<<<<<<<<<<<<
@@ -18224,7 +19484,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_48truncate(struct PySlepcDSObject
   return __pyx_r;
 }
 
-/* "SLEPc/DS.pyx":459
+/* "SLEPc/DS.pyx":458
  *         CHKERR( DSTruncate(self.ds, val) )
  * 
  *     def updateExtraRow(self):             # <<<<<<<<<<<<<<
@@ -18255,16 +19515,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2DS_50updateExtraRow(struct PySlepcDS
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("updateExtraRow", 0);
 
-  /* "SLEPc/DS.pyx":464
+  /* "SLEPc/DS.pyx":463
  *         row gets up-to-date after a call to `solve()`.
  *         """
  *         CHKERR( DSUpdateExtraRow(self.ds) )             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSUpdateExtraRow(__pyx_v_self->ds)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(10, 464, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(DSUpdateExtraRow(__pyx_v_self->ds)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 463, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":459
+  /* "SLEPc/DS.pyx":458
  *         CHKERR( DSTruncate(self.ds, val) )
  * 
  *     def updateExtraRow(self):             # <<<<<<<<<<<<<<
@@ -18370,6 +19630,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_3view(PyObject *__pyx_v_self, PyO
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -18382,11 +19643,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_3view(PyObject *__pyx_v_self, PyO
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(11, 44, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(12, 44, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -18395,13 +19657,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_3view(PyObject *__pyx_v_self, PyO
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 44, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 44, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.FN.view", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(11, 44, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(12, 44, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2FN_2view(((struct PySlepcFNObject *)__pyx_v_self), __pyx_v_viewer);
 
   /* function exit code */
@@ -18418,42 +19680,25 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_2view(struct PySlepcFNObject *__p
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
-  PetscViewer __pyx_t_3;
-  int __pyx_t_4;
   __Pyx_RefNannySetupContext("view", 0);
 
   /* "SLEPc/FN.pyx":54
  *                 output is used.
  *         """
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( FNView(self.fn, vwr) )
+ * 
  */
-  __pyx_v_vwr = NULL;
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
   /* "SLEPc/FN.pyx":55
  *         """
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
- *         CHKERR( FNView(self.fn, vwr) )
- * 
- */
-  __pyx_t_1 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_3;
-  }
-
-  /* "SLEPc/FN.pyx":56
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( FNView(self.fn, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     def destroy(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNView(__pyx_v_self->fn, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(11, 56, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNView(__pyx_v_self->fn, __pyx_v_vwr)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 55, __pyx_L1_error)
 
   /* "SLEPc/FN.pyx":44
  *         self.fn = NULL
@@ -18475,7 +19720,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_2view(struct PySlepcFNObject *__p
   return __pyx_r;
 }
 
-/* "SLEPc/FN.pyx":58
+/* "SLEPc/FN.pyx":57
  *         CHKERR( FNView(self.fn, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -18506,16 +19751,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_4destroy(struct PySlepcFNObject *
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("destroy", 0);
 
-  /* "SLEPc/FN.pyx":62
+  /* "SLEPc/FN.pyx":61
  *         Destroys the FN object.
  *         """
  *         CHKERR( FNDestroy(&self.fn) )             # <<<<<<<<<<<<<<
  *         self.fn = NULL
  *         return self
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNDestroy((&__pyx_v_self->fn))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(11, 62, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNDestroy((&__pyx_v_self->fn))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 61, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":63
+  /* "SLEPc/FN.pyx":62
  *         """
  *         CHKERR( FNDestroy(&self.fn) )
  *         self.fn = NULL             # <<<<<<<<<<<<<<
@@ -18524,7 +19769,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_4destroy(struct PySlepcFNObject *
  */
   __pyx_v_self->fn = NULL;
 
-  /* "SLEPc/FN.pyx":64
+  /* "SLEPc/FN.pyx":63
  *         CHKERR( FNDestroy(&self.fn) )
  *         self.fn = NULL
  *         return self             # <<<<<<<<<<<<<<
@@ -18536,7 +19781,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_4destroy(struct PySlepcFNObject *
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/FN.pyx":58
+  /* "SLEPc/FN.pyx":57
  *         CHKERR( FNView(self.fn, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -18554,7 +19799,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_4destroy(struct PySlepcFNObject *
   return __pyx_r;
 }
 
-/* "SLEPc/FN.pyx":66
+/* "SLEPc/FN.pyx":65
  *         return self
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -18579,6 +19824,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_7create(PyObject *__pyx_v_self, P
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -18591,11 +19837,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_7create(PyObject *__pyx_v_self, P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(11, 66, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(12, 65, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -18604,7 +19851,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_7create(PyObject *__pyx_v_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 66, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 65, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.FN.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -18626,17 +19873,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_6create(struct PySlepcFNObject *_
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("create", 0);
 
-  /* "SLEPc/FN.pyx":76
+  /* "SLEPc/FN.pyx":75
  *               processes.
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())             # <<<<<<<<<<<<<<
  *         cdef SlepcFN newfn = NULL
  *         CHKERR( FNCreate(ccomm, &newfn) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 76, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 75, __pyx_L1_error)
   __pyx_v_ccomm = __pyx_t_1;
 
-  /* "SLEPc/FN.pyx":77
+  /* "SLEPc/FN.pyx":76
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcFN newfn = NULL             # <<<<<<<<<<<<<<
@@ -18645,16 +19892,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_6create(struct PySlepcFNObject *_
  */
   __pyx_v_newfn = NULL;
 
-  /* "SLEPc/FN.pyx":78
+  /* "SLEPc/FN.pyx":77
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcFN newfn = NULL
  *         CHKERR( FNCreate(ccomm, &newfn) )             # <<<<<<<<<<<<<<
  *         SlepcCLEAR(self.obj); self.fn = newfn
  *         return self
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNCreate(__pyx_v_ccomm, (&__pyx_v_newfn))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(11, 78, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNCreate(__pyx_v_ccomm, (&__pyx_v_newfn))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(12, 77, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":79
+  /* "SLEPc/FN.pyx":78
  *         cdef SlepcFN newfn = NULL
  *         CHKERR( FNCreate(ccomm, &newfn) )
  *         SlepcCLEAR(self.obj); self.fn = newfn             # <<<<<<<<<<<<<<
@@ -18664,7 +19911,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_6create(struct PySlepcFNObject *_
   __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(__pyx_v_self->__pyx_base.obj);
   __pyx_v_self->fn = __pyx_v_newfn;
 
-  /* "SLEPc/FN.pyx":80
+  /* "SLEPc/FN.pyx":79
  *         CHKERR( FNCreate(ccomm, &newfn) )
  *         SlepcCLEAR(self.obj); self.fn = newfn
  *         return self             # <<<<<<<<<<<<<<
@@ -18676,7 +19923,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_6create(struct PySlepcFNObject *_
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/FN.pyx":66
+  /* "SLEPc/FN.pyx":65
  *         return self
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -18694,7 +19941,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_6create(struct PySlepcFNObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/FN.pyx":82
+/* "SLEPc/FN.pyx":81
  *         return self
  * 
  *     def setType(self, fn_type):             # <<<<<<<<<<<<<<
@@ -18718,6 +19965,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_9setType(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -18728,7 +19976,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_9setType(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(11, 82, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(12, 81, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -18739,7 +19987,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_9setType(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 82, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 81, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.FN.setType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -18761,7 +20009,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_8setType(struct PySlepcFNObject *
   __Pyx_RefNannySetupContext("setType", 0);
   __Pyx_INCREF(__pyx_v_fn_type);
 
-  /* "SLEPc/FN.pyx":91
+  /* "SLEPc/FN.pyx":90
  *                   The inner product type to be used.
  *         """
  *         cdef SlepcFNType cval = NULL             # <<<<<<<<<<<<<<
@@ -18770,28 +20018,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_8setType(struct PySlepcFNObject *
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/FN.pyx":92
+  /* "SLEPc/FN.pyx":91
  *         """
  *         cdef SlepcFNType cval = NULL
  *         fn_type = str2bytes(fn_type, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( FNSetType(self.fn, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_fn_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 92, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_fn_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 91, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_fn_type, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/FN.pyx":93
+  /* "SLEPc/FN.pyx":92
  *         cdef SlepcFNType cval = NULL
  *         fn_type = str2bytes(fn_type, &cval)
  *         CHKERR( FNSetType(self.fn, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getType(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNSetType(__pyx_v_self->fn, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(11, 93, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNSetType(__pyx_v_self->fn, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(12, 92, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":82
+  /* "SLEPc/FN.pyx":81
  *         return self
  * 
  *     def setType(self, fn_type):             # <<<<<<<<<<<<<<
@@ -18813,7 +20061,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_8setType(struct PySlepcFNObject *
   return __pyx_r;
 }
 
-/* "SLEPc/FN.pyx":95
+/* "SLEPc/FN.pyx":94
  *         CHKERR( FNSetType(self.fn, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -18846,7 +20094,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_10getType(struct PySlepcFNObject
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getType", 0);
 
-  /* "SLEPc/FN.pyx":104
+  /* "SLEPc/FN.pyx":103
  *               The inner product type currently being used.
  *         """
  *         cdef SlepcFNType fn_type = NULL             # <<<<<<<<<<<<<<
@@ -18855,16 +20103,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_10getType(struct PySlepcFNObject
  */
   __pyx_v_fn_type = NULL;
 
-  /* "SLEPc/FN.pyx":105
+  /* "SLEPc/FN.pyx":104
  *         """
  *         cdef SlepcFNType fn_type = NULL
  *         CHKERR( FNGetType(self.fn, &fn_type) )             # <<<<<<<<<<<<<<
  *         return bytes2str(fn_type)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNGetType(__pyx_v_self->fn, (&__pyx_v_fn_type))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(11, 105, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNGetType(__pyx_v_self->fn, (&__pyx_v_fn_type))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 104, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":106
+  /* "SLEPc/FN.pyx":105
  *         cdef SlepcFNType fn_type = NULL
  *         CHKERR( FNGetType(self.fn, &fn_type) )
  *         return bytes2str(fn_type)             # <<<<<<<<<<<<<<
@@ -18872,13 +20120,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_10getType(struct PySlepcFNObject
  *     def setOptionsPrefix(self, prefix):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_fn_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 106, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_fn_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 105, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/FN.pyx":95
+  /* "SLEPc/FN.pyx":94
  *         CHKERR( FNSetType(self.fn, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -18897,7 +20145,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_10getType(struct PySlepcFNObject
   return __pyx_r;
 }
 
-/* "SLEPc/FN.pyx":108
+/* "SLEPc/FN.pyx":107
  *         return bytes2str(fn_type)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -18921,6 +20169,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_13setOptionsPrefix(PyObject *__py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -18931,7 +20180,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_13setOptionsPrefix(PyObject *__py
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(11, 108, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(12, 107, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -18942,7 +20191,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_13setOptionsPrefix(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 108, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 107, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.FN.setOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -18964,7 +20213,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_12setOptionsPrefix(struct PySlepc
   __Pyx_RefNannySetupContext("setOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/FN.pyx":125
+  /* "SLEPc/FN.pyx":124
  *         AUTOMATICALLY the hyphen.
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -18973,28 +20222,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_12setOptionsPrefix(struct PySlepc
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/FN.pyx":126
+  /* "SLEPc/FN.pyx":125
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( FNSetOptionsPrefix(self.fn, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 126, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 125, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/FN.pyx":127
+  /* "SLEPc/FN.pyx":126
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( FNSetOptionsPrefix(self.fn, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getOptionsPrefix(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNSetOptionsPrefix(__pyx_v_self->fn, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(11, 127, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNSetOptionsPrefix(__pyx_v_self->fn, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(12, 126, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":108
+  /* "SLEPc/FN.pyx":107
  *         return bytes2str(fn_type)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -19016,7 +20265,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_12setOptionsPrefix(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/FN.pyx":129
+/* "SLEPc/FN.pyx":128
  *         CHKERR( FNSetOptionsPrefix(self.fn, cval) )
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -19049,7 +20298,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_14getOptionsPrefix(struct PySlepc
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getOptionsPrefix", 0);
 
-  /* "SLEPc/FN.pyx":139
+  /* "SLEPc/FN.pyx":138
  *                 The prefix string set for this FN object.
  *         """
  *         cdef const_char *prefix = NULL             # <<<<<<<<<<<<<<
@@ -19058,16 +20307,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_14getOptionsPrefix(struct PySlepc
  */
   __pyx_v_prefix = NULL;
 
-  /* "SLEPc/FN.pyx":140
+  /* "SLEPc/FN.pyx":139
  *         """
  *         cdef const_char *prefix = NULL
  *         CHKERR( FNGetOptionsPrefix(self.fn, &prefix) )             # <<<<<<<<<<<<<<
  *         return bytes2str(prefix)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNGetOptionsPrefix(__pyx_v_self->fn, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(11, 140, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNGetOptionsPrefix(__pyx_v_self->fn, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 139, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":141
+  /* "SLEPc/FN.pyx":140
  *         cdef const_char *prefix = NULL
  *         CHKERR( FNGetOptionsPrefix(self.fn, &prefix) )
  *         return bytes2str(prefix)             # <<<<<<<<<<<<<<
@@ -19075,13 +20324,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_14getOptionsPrefix(struct PySlepc
  *     def setFromOptions(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 141, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 140, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/FN.pyx":129
+  /* "SLEPc/FN.pyx":128
  *         CHKERR( FNSetOptionsPrefix(self.fn, cval) )
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -19100,7 +20349,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_14getOptionsPrefix(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/FN.pyx":143
+/* "SLEPc/FN.pyx":142
  *         return bytes2str(prefix)
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -19131,16 +20380,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_16setFromOptions(struct PySlepcFN
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setFromOptions", 0);
 
-  /* "SLEPc/FN.pyx":152
+  /* "SLEPc/FN.pyx":151
  *         option.
  *         """
  *         CHKERR( FNSetFromOptions(self.fn) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNSetFromOptions(__pyx_v_self->fn)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(11, 152, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNSetFromOptions(__pyx_v_self->fn)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 151, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":143
+  /* "SLEPc/FN.pyx":142
  *         return bytes2str(prefix)
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -19160,7 +20409,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_16setFromOptions(struct PySlepcFN
   return __pyx_r;
 }
 
-/* "SLEPc/FN.pyx":156
+/* "SLEPc/FN.pyx":155
  *     #
  * 
  *     def evaluateFunction(self, x):             # <<<<<<<<<<<<<<
@@ -19184,6 +20433,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_19evaluateFunction(PyObject *__py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -19194,7 +20444,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_19evaluateFunction(PyObject *__py
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "evaluateFunction") < 0)) __PYX_ERR(11, 156, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "evaluateFunction") < 0)) __PYX_ERR(12, 155, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -19205,7 +20455,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_19evaluateFunction(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("evaluateFunction", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 156, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("evaluateFunction", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 155, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.FN.evaluateFunction", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -19227,7 +20477,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_18evaluateFunction(struct PySlepc
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("evaluateFunction", 0);
 
-  /* "SLEPc/FN.pyx":170
+  /* "SLEPc/FN.pyx":169
  *             The result of f(x).
  *         """
  *         cdef PetscScalar sval = 0             # <<<<<<<<<<<<<<
@@ -19236,17 +20486,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_18evaluateFunction(struct PySlepc
  */
   __pyx_v_sval = 0.0;
 
-  /* "SLEPc/FN.pyx":171
+  /* "SLEPc/FN.pyx":170
  *         """
  *         cdef PetscScalar sval = 0
  *         CHKERR( FNEvaluateFunction(self.fn, x, &sval) )             # <<<<<<<<<<<<<<
  *         return toScalar(sval)
  * 
  */
-  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_1 == (PetscScalar)-1) && PyErr_Occurred())) __PYX_ERR(11, 171, __pyx_L1_error)
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNEvaluateFunction(__pyx_v_self->fn, __pyx_t_1, (&__pyx_v_sval))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(11, 171, __pyx_L1_error)
+  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_1 == ((PetscScalar)-1)) && PyErr_Occurred())) __PYX_ERR(12, 170, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNEvaluateFunction(__pyx_v_self->fn, __pyx_t_1, (&__pyx_v_sval))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(12, 170, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":172
+  /* "SLEPc/FN.pyx":171
  *         cdef PetscScalar sval = 0
  *         CHKERR( FNEvaluateFunction(self.fn, x, &sval) )
  *         return toScalar(sval)             # <<<<<<<<<<<<<<
@@ -19254,13 +20504,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_18evaluateFunction(struct PySlepc
  *     def evaluateDerivative(self, x):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 172, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 171, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/FN.pyx":156
+  /* "SLEPc/FN.pyx":155
  *     #
  * 
  *     def evaluateFunction(self, x):             # <<<<<<<<<<<<<<
@@ -19279,7 +20529,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_18evaluateFunction(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/FN.pyx":174
+/* "SLEPc/FN.pyx":173
  *         return toScalar(sval)
  * 
  *     def evaluateDerivative(self, x):             # <<<<<<<<<<<<<<
@@ -19303,6 +20553,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_21evaluateDerivative(PyObject *__
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -19313,7 +20564,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_21evaluateDerivative(PyObject *__
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "evaluateDerivative") < 0)) __PYX_ERR(11, 174, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "evaluateDerivative") < 0)) __PYX_ERR(12, 173, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -19324,7 +20575,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_21evaluateDerivative(PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("evaluateDerivative", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 174, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("evaluateDerivative", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 173, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.FN.evaluateDerivative", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -19346,7 +20597,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_20evaluateDerivative(struct PySle
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("evaluateDerivative", 0);
 
-  /* "SLEPc/FN.pyx":188
+  /* "SLEPc/FN.pyx":187
  *             The result of f'(x).
  *         """
  *         cdef PetscScalar sval = 0             # <<<<<<<<<<<<<<
@@ -19355,17 +20606,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_20evaluateDerivative(struct PySle
  */
   __pyx_v_sval = 0.0;
 
-  /* "SLEPc/FN.pyx":189
+  /* "SLEPc/FN.pyx":188
  *         """
  *         cdef PetscScalar sval = 0
  *         CHKERR( FNEvaluateDerivative(self.fn, x, &sval) )             # <<<<<<<<<<<<<<
  *         return toScalar(sval)
  * 
  */
-  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_1 == (PetscScalar)-1) && PyErr_Occurred())) __PYX_ERR(11, 189, __pyx_L1_error)
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNEvaluateDerivative(__pyx_v_self->fn, __pyx_t_1, (&__pyx_v_sval))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(11, 189, __pyx_L1_error)
+  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_1 == ((PetscScalar)-1)) && PyErr_Occurred())) __PYX_ERR(12, 188, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNEvaluateDerivative(__pyx_v_self->fn, __pyx_t_1, (&__pyx_v_sval))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(12, 188, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":190
+  /* "SLEPc/FN.pyx":189
  *         cdef PetscScalar sval = 0
  *         CHKERR( FNEvaluateDerivative(self.fn, x, &sval) )
  *         return toScalar(sval)             # <<<<<<<<<<<<<<
@@ -19373,13 +20624,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_20evaluateDerivative(struct PySle
  *     def setScale(self, alpha=None, beta=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 190, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 189, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/FN.pyx":174
+  /* "SLEPc/FN.pyx":173
  *         return toScalar(sval)
  * 
  *     def evaluateDerivative(self, x):             # <<<<<<<<<<<<<<
@@ -19398,7 +20649,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_20evaluateDerivative(struct PySle
   return __pyx_r;
 }
 
-/* "SLEPc/FN.pyx":192
+/* "SLEPc/FN.pyx":191
  *         return toScalar(sval)
  * 
  *     def setScale(self, alpha=None, beta=None):             # <<<<<<<<<<<<<<
@@ -19425,7 +20676,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_23setScale(PyObject *__pyx_v_self
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -19436,6 +20689,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_23setScale(PyObject *__pyx_v_self
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_alpha);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_beta);
@@ -19443,12 +20697,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_23setScale(PyObject *__pyx_v_self
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setScale") < 0)) __PYX_ERR(11, 192, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setScale") < 0)) __PYX_ERR(12, 191, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -19458,7 +20714,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_23setScale(PyObject *__pyx_v_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setScale", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 192, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setScale", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 191, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.FN.setScale", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -19482,7 +20738,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_22setScale(struct PySlepcFNObject
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("setScale", 0);
 
-  /* "SLEPc/FN.pyx":203
+  /* "SLEPc/FN.pyx":202
  *                outer scaling (result).
  *         """
  *         cdef PetscScalar aval = 1.0             # <<<<<<<<<<<<<<
@@ -19491,7 +20747,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_22setScale(struct PySlepcFNObject
  */
   __pyx_v_aval = 1.0;
 
-  /* "SLEPc/FN.pyx":204
+  /* "SLEPc/FN.pyx":203
  *         """
  *         cdef PetscScalar aval = 1.0
  *         cdef PetscScalar bval = 1.0             # <<<<<<<<<<<<<<
@@ -19500,7 +20756,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_22setScale(struct PySlepcFNObject
  */
   __pyx_v_bval = 1.0;
 
-  /* "SLEPc/FN.pyx":205
+  /* "SLEPc/FN.pyx":204
  *         cdef PetscScalar aval = 1.0
  *         cdef PetscScalar bval = 1.0
  *         if alpha is not None: aval = asScalar(alpha)             # <<<<<<<<<<<<<<
@@ -19510,11 +20766,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_22setScale(struct PySlepcFNObject
   __pyx_t_1 = (__pyx_v_alpha != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_alpha); if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 205, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_alpha); if (unlikely(__pyx_t_3 == ((PetscScalar)((PetscScalar)(-1.0))) && PyErr_Occurred())) __PYX_ERR(12, 204, __pyx_L1_error)
     __pyx_v_aval = __pyx_t_3;
   }
 
-  /* "SLEPc/FN.pyx":206
+  /* "SLEPc/FN.pyx":205
  *         cdef PetscScalar bval = 1.0
  *         if alpha is not None: aval = asScalar(alpha)
  *         if beta  is not None: bval = asScalar(beta)             # <<<<<<<<<<<<<<
@@ -19524,20 +20780,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_22setScale(struct PySlepcFNObject
   __pyx_t_2 = (__pyx_v_beta != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_beta); if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 206, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_beta); if (unlikely(__pyx_t_3 == ((PetscScalar)((PetscScalar)(-1.0))) && PyErr_Occurred())) __PYX_ERR(12, 205, __pyx_L1_error)
     __pyx_v_bval = __pyx_t_3;
   }
 
-  /* "SLEPc/FN.pyx":207
+  /* "SLEPc/FN.pyx":206
  *         if alpha is not None: aval = asScalar(alpha)
  *         if beta  is not None: bval = asScalar(beta)
  *         CHKERR( FNSetScale(self.fn, aval, bval) )             # <<<<<<<<<<<<<<
  * 
  *     def getScale(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNSetScale(__pyx_v_self->fn, __pyx_v_aval, __pyx_v_bval)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(11, 207, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNSetScale(__pyx_v_self->fn, __pyx_v_aval, __pyx_v_bval)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(12, 206, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":192
+  /* "SLEPc/FN.pyx":191
  *         return toScalar(sval)
  * 
  *     def setScale(self, alpha=None, beta=None):             # <<<<<<<<<<<<<<
@@ -19557,7 +20813,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_22setScale(struct PySlepcFNObject
   return __pyx_r;
 }
 
-/* "SLEPc/FN.pyx":209
+/* "SLEPc/FN.pyx":208
  *         CHKERR( FNSetScale(self.fn, aval, bval) )
  * 
  *     def getScale(self):             # <<<<<<<<<<<<<<
@@ -19593,7 +20849,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_24getScale(struct PySlepcFNObject
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getScale", 0);
 
-  /* "SLEPc/FN.pyx":220
+  /* "SLEPc/FN.pyx":219
  *                outer scaling (result).
  *         """
  *         cdef PetscScalar aval = 0, bval = 0             # <<<<<<<<<<<<<<
@@ -19603,16 +20859,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_24getScale(struct PySlepcFNObject
   __pyx_v_aval = 0.0;
   __pyx_v_bval = 0.0;
 
-  /* "SLEPc/FN.pyx":221
+  /* "SLEPc/FN.pyx":220
  *         """
  *         cdef PetscScalar aval = 0, bval = 0
  *         CHKERR( FNGetScale(self.fn, &aval, &bval) )             # <<<<<<<<<<<<<<
  *         return (toScalar(aval), toScalar(bval))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNGetScale(__pyx_v_self->fn, (&__pyx_v_aval), (&__pyx_v_bval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(11, 221, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNGetScale(__pyx_v_self->fn, (&__pyx_v_aval), (&__pyx_v_bval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 220, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":222
+  /* "SLEPc/FN.pyx":221
  *         cdef PetscScalar aval = 0, bval = 0
  *         CHKERR( FNGetScale(self.fn, &aval, &bval) )
  *         return (toScalar(aval), toScalar(bval))             # <<<<<<<<<<<<<<
@@ -19620,11 +20876,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_24getScale(struct PySlepcFNObject
  *     #
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_aval); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 222, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_aval); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 221, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_bval); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 222, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_bval); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 221, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 222, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 221, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
@@ -19636,7 +20892,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_24getScale(struct PySlepcFNObject
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/FN.pyx":209
+  /* "SLEPc/FN.pyx":208
  *         CHKERR( FNSetScale(self.fn, aval, bval) )
  * 
  *     def getScale(self):             # <<<<<<<<<<<<<<
@@ -19657,10 +20913,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_24getScale(struct PySlepcFNObject
   return __pyx_r;
 }
 
-/* "SLEPc/FN.pyx":226
+/* "SLEPc/FN.pyx":225
  *     #
  * 
- *     def setRationalNumerator(self, alpha not None):             # <<<<<<<<<<<<<<
+ *     def setRationalNumerator(self, alpha):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the coefficients of the numerator of the rational function.
  */
@@ -19681,6 +20937,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_27setRationalNumerator(PyObject *
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -19691,7 +20948,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_27setRationalNumerator(PyObject *
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRationalNumerator") < 0)) __PYX_ERR(11, 226, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRationalNumerator") < 0)) __PYX_ERR(12, 225, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -19702,22 +20959,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_27setRationalNumerator(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setRationalNumerator", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 226, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setRationalNumerator", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 225, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.FN.setRationalNumerator", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(((PyObject *)__pyx_v_alpha) == Py_None)) {
-    PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "alpha"); __PYX_ERR(11, 226, __pyx_L1_error)
-  }
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2FN_26setRationalNumerator(((struct PySlepcFNObject *)__pyx_v_self), __pyx_v_alpha);
 
   /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -19732,7 +20982,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_26setRationalNumerator(struct PyS
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setRationalNumerator", 0);
 
-  /* "SLEPc/FN.pyx":235
+  /* "SLEPc/FN.pyx":234
  *             Coefficients.
  *         """
  *         cdef PetscInt na = 0             # <<<<<<<<<<<<<<
@@ -19741,7 +20991,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_26setRationalNumerator(struct PyS
  */
   __pyx_v_na = 0;
 
-  /* "SLEPc/FN.pyx":236
+  /* "SLEPc/FN.pyx":235
  *         """
  *         cdef PetscInt na = 0
  *         cdef PetscScalar *a = NULL             # <<<<<<<<<<<<<<
@@ -19750,31 +21000,31 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_26setRationalNumerator(struct PyS
  */
   __pyx_v_a = NULL;
 
-  /* "SLEPc/FN.pyx":237
+  /* "SLEPc/FN.pyx":236
  *         cdef PetscInt na = 0
  *         cdef PetscScalar *a = NULL
  *         cdef object tmp1 = iarray_s(alpha, &na, &a)             # <<<<<<<<<<<<<<
  *         CHKERR( FNRationalSetNumerator(self.fn, na, a) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_iarray_s(__pyx_v_alpha, (&__pyx_v_na), (&__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 237, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_iarray_s(__pyx_v_alpha, (&__pyx_v_na), (&__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 236, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_tmp1 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "SLEPc/FN.pyx":238
+  /* "SLEPc/FN.pyx":237
  *         cdef PetscScalar *a = NULL
  *         cdef object tmp1 = iarray_s(alpha, &na, &a)
  *         CHKERR( FNRationalSetNumerator(self.fn, na, a) )             # <<<<<<<<<<<<<<
  * 
- *     def setRationalDenominator(self, alpha not None):
+ *     def setRationalDenominator(self, alpha):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNRationalSetNumerator(__pyx_v_self->fn, __pyx_v_na, __pyx_v_a)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(11, 238, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNRationalSetNumerator(__pyx_v_self->fn, __pyx_v_na, __pyx_v_a)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(12, 237, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":226
+  /* "SLEPc/FN.pyx":225
  *     #
  * 
- *     def setRationalNumerator(self, alpha not None):             # <<<<<<<<<<<<<<
+ *     def setRationalNumerator(self, alpha):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the coefficients of the numerator of the rational function.
  */
@@ -19793,10 +21043,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_26setRationalNumerator(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/FN.pyx":240
+/* "SLEPc/FN.pyx":239
  *         CHKERR( FNRationalSetNumerator(self.fn, na, a) )
  * 
- *     def setRationalDenominator(self, alpha not None):             # <<<<<<<<<<<<<<
+ *     def setRationalDenominator(self, alpha):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the coefficients of the denominator of the rational function.
  */
@@ -19817,6 +21067,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_29setRationalDenominator(PyObject
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -19827,7 +21078,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_29setRationalDenominator(PyObject
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRationalDenominator") < 0)) __PYX_ERR(11, 240, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRationalDenominator") < 0)) __PYX_ERR(12, 239, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -19838,22 +21089,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2FN_29setRationalDenominator(PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setRationalDenominator", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 240, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setRationalDenominator", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 239, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.FN.setRationalDenominator", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(((PyObject *)__pyx_v_alpha) == Py_None)) {
-    PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "alpha"); __PYX_ERR(11, 240, __pyx_L1_error)
-  }
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2FN_28setRationalDenominator(((struct PySlepcFNObject *)__pyx_v_self), __pyx_v_alpha);
 
   /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -19868,7 +21112,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_28setRationalDenominator(struct P
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setRationalDenominator", 0);
 
-  /* "SLEPc/FN.pyx":249
+  /* "SLEPc/FN.pyx":248
  *             Coefficients.
  *         """
  *         cdef PetscInt na = 0             # <<<<<<<<<<<<<<
@@ -19877,7 +21121,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_28setRationalDenominator(struct P
  */
   __pyx_v_na = 0;
 
-  /* "SLEPc/FN.pyx":250
+  /* "SLEPc/FN.pyx":249
  *         """
  *         cdef PetscInt na = 0
  *         cdef PetscScalar *a = NULL             # <<<<<<<<<<<<<<
@@ -19886,31 +21130,31 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2FN_28setRationalDenominator(struct P
  */
   __pyx_v_a = NULL;
 
-  /* "SLEPc/FN.pyx":251
+  /* "SLEPc/FN.pyx":250
  *         cdef PetscInt na = 0
  *         cdef PetscScalar *a = NULL
  *         cdef object tmp1 = iarray_s(alpha, &na, &a)             # <<<<<<<<<<<<<<
  *         CHKERR( FNRationalSetDenominator(self.fn, na, a) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_iarray_s(__pyx_v_alpha, (&__pyx_v_na), (&__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 251, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_iarray_s(__pyx_v_alpha, (&__pyx_v_na), (&__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 250, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_tmp1 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "SLEPc/FN.pyx":252
+  /* "SLEPc/FN.pyx":251
  *         cdef PetscScalar *a = NULL
  *         cdef object tmp1 = iarray_s(alpha, &na, &a)
  *         CHKERR( FNRationalSetDenominator(self.fn, na, a) )             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNRationalSetDenominator(__pyx_v_self->fn, __pyx_v_na, __pyx_v_a)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(11, 252, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(FNRationalSetDenominator(__pyx_v_self->fn, __pyx_v_na, __pyx_v_a)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(12, 251, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":240
+  /* "SLEPc/FN.pyx":239
  *         CHKERR( FNRationalSetNumerator(self.fn, na, a) )
  * 
- *     def setRationalDenominator(self, alpha not None):             # <<<<<<<<<<<<<<
+ *     def setRationalDenominator(self, alpha):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the coefficients of the denominator of the rational function.
  */
@@ -20015,6 +21259,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_3view(PyObject *__pyx_v_self, PyO
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -20027,11 +21272,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_3view(PyObject *__pyx_v_self, PyO
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(12, 26, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(13, 26, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -20040,13 +21286,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_3view(PyObject *__pyx_v_self, PyO
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 26, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 26, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.RG.view", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(12, 26, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(13, 26, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_2RG_2view(((struct PySlepcRGObject *)__pyx_v_self), __pyx_v_viewer);
 
   /* function exit code */
@@ -20063,42 +21309,25 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_2view(struct PySlepcRGObject *__p
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
-  PetscViewer __pyx_t_3;
-  int __pyx_t_4;
   __Pyx_RefNannySetupContext("view", 0);
 
   /* "SLEPc/RG.pyx":36
  *                 output is used.
  *         """
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( RGView(self.rg, vwr) )
+ * 
  */
-  __pyx_v_vwr = NULL;
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
   /* "SLEPc/RG.pyx":37
  *         """
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
- *         CHKERR( RGView(self.rg, vwr) )
- * 
- */
-  __pyx_t_1 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_3;
-  }
-
-  /* "SLEPc/RG.pyx":38
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( RGView(self.rg, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     def destroy(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGView(__pyx_v_self->rg, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(12, 38, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGView(__pyx_v_self->rg, __pyx_v_vwr)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(13, 37, __pyx_L1_error)
 
   /* "SLEPc/RG.pyx":26
  *         self.rg = NULL
@@ -20120,7 +21349,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_2view(struct PySlepcRGObject *__p
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":40
+/* "SLEPc/RG.pyx":39
  *         CHKERR( RGView(self.rg, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -20151,16 +21380,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_4destroy(struct PySlepcRGObject *
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("destroy", 0);
 
-  /* "SLEPc/RG.pyx":44
+  /* "SLEPc/RG.pyx":43
  *         Destroys the RG object.
  *         """
  *         CHKERR( RGDestroy(&self.rg) )             # <<<<<<<<<<<<<<
  *         self.rg = NULL
  *         return self
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGDestroy((&__pyx_v_self->rg))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(12, 44, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGDestroy((&__pyx_v_self->rg))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(13, 43, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":45
+  /* "SLEPc/RG.pyx":44
  *         """
  *         CHKERR( RGDestroy(&self.rg) )
  *         self.rg = NULL             # <<<<<<<<<<<<<<
@@ -20169,7 +21398,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_4destroy(struct PySlepcRGObject *
  */
   __pyx_v_self->rg = NULL;
 
-  /* "SLEPc/RG.pyx":46
+  /* "SLEPc/RG.pyx":45
  *         CHKERR( RGDestroy(&self.rg) )
  *         self.rg = NULL
  *         return self             # <<<<<<<<<<<<<<
@@ -20181,7 +21410,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_4destroy(struct PySlepcRGObject *
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/RG.pyx":40
+  /* "SLEPc/RG.pyx":39
  *         CHKERR( RGView(self.rg, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -20199,7 +21428,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_4destroy(struct PySlepcRGObject *
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":48
+/* "SLEPc/RG.pyx":47
  *         return self
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -20224,6 +21453,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_7create(PyObject *__pyx_v_self, P
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -20236,11 +21466,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_7create(PyObject *__pyx_v_self, P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(12, 48, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(13, 47, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -20249,7 +21480,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_7create(PyObject *__pyx_v_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 48, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 47, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.RG.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -20271,17 +21502,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_6create(struct PySlepcRGObject *_
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("create", 0);
 
-  /* "SLEPc/RG.pyx":58
+  /* "SLEPc/RG.pyx":57
  *               processes.
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())             # <<<<<<<<<<<<<<
  *         cdef SlepcRG newrg = NULL
  *         CHKERR( RGCreate(ccomm, &newrg) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 58, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 57, __pyx_L1_error)
   __pyx_v_ccomm = __pyx_t_1;
 
-  /* "SLEPc/RG.pyx":59
+  /* "SLEPc/RG.pyx":58
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcRG newrg = NULL             # <<<<<<<<<<<<<<
@@ -20290,16 +21521,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_6create(struct PySlepcRGObject *_
  */
   __pyx_v_newrg = NULL;
 
-  /* "SLEPc/RG.pyx":60
+  /* "SLEPc/RG.pyx":59
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcRG newrg = NULL
  *         CHKERR( RGCreate(ccomm, &newrg) )             # <<<<<<<<<<<<<<
  *         SlepcCLEAR(self.obj); self.rg = newrg
  *         return self
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGCreate(__pyx_v_ccomm, (&__pyx_v_newrg))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(12, 60, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGCreate(__pyx_v_ccomm, (&__pyx_v_newrg))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(13, 59, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":61
+  /* "SLEPc/RG.pyx":60
  *         cdef SlepcRG newrg = NULL
  *         CHKERR( RGCreate(ccomm, &newrg) )
  *         SlepcCLEAR(self.obj); self.rg = newrg             # <<<<<<<<<<<<<<
@@ -20309,7 +21540,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_6create(struct PySlepcRGObject *_
   __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(__pyx_v_self->__pyx_base.obj);
   __pyx_v_self->rg = __pyx_v_newrg;
 
-  /* "SLEPc/RG.pyx":62
+  /* "SLEPc/RG.pyx":61
  *         CHKERR( RGCreate(ccomm, &newrg) )
  *         SlepcCLEAR(self.obj); self.rg = newrg
  *         return self             # <<<<<<<<<<<<<<
@@ -20321,7 +21552,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_6create(struct PySlepcRGObject *_
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/RG.pyx":48
+  /* "SLEPc/RG.pyx":47
  *         return self
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -20339,7 +21570,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_6create(struct PySlepcRGObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":64
+/* "SLEPc/RG.pyx":63
  *         return self
  * 
  *     def setType(self, rg_type):             # <<<<<<<<<<<<<<
@@ -20363,6 +21594,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_9setType(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -20373,7 +21605,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_9setType(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(12, 64, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(13, 63, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -20384,7 +21616,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_9setType(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 64, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 63, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.RG.setType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -20406,7 +21638,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_8setType(struct PySlepcRGObject *
   __Pyx_RefNannySetupContext("setType", 0);
   __Pyx_INCREF(__pyx_v_rg_type);
 
-  /* "SLEPc/RG.pyx":73
+  /* "SLEPc/RG.pyx":72
  *                   The inner product type to be used.
  *         """
  *         cdef SlepcRGType cval = NULL             # <<<<<<<<<<<<<<
@@ -20415,28 +21647,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_8setType(struct PySlepcRGObject *
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/RG.pyx":74
+  /* "SLEPc/RG.pyx":73
  *         """
  *         cdef SlepcRGType cval = NULL
  *         rg_type = str2bytes(rg_type, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( RGSetType(self.rg, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_rg_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 74, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_rg_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 73, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_rg_type, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/RG.pyx":75
+  /* "SLEPc/RG.pyx":74
  *         cdef SlepcRGType cval = NULL
  *         rg_type = str2bytes(rg_type, &cval)
  *         CHKERR( RGSetType(self.rg, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getType(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGSetType(__pyx_v_self->rg, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(12, 75, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGSetType(__pyx_v_self->rg, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(13, 74, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":64
+  /* "SLEPc/RG.pyx":63
  *         return self
  * 
  *     def setType(self, rg_type):             # <<<<<<<<<<<<<<
@@ -20458,7 +21690,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_8setType(struct PySlepcRGObject *
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":77
+/* "SLEPc/RG.pyx":76
  *         CHKERR( RGSetType(self.rg, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -20491,7 +21723,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_10getType(struct PySlepcRGObject
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getType", 0);
 
-  /* "SLEPc/RG.pyx":86
+  /* "SLEPc/RG.pyx":85
  *               The inner product type currently being used.
  *         """
  *         cdef SlepcRGType rg_type = NULL             # <<<<<<<<<<<<<<
@@ -20500,16 +21732,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_10getType(struct PySlepcRGObject
  */
   __pyx_v_rg_type = NULL;
 
-  /* "SLEPc/RG.pyx":87
+  /* "SLEPc/RG.pyx":86
  *         """
  *         cdef SlepcRGType rg_type = NULL
  *         CHKERR( RGGetType(self.rg, &rg_type) )             # <<<<<<<<<<<<<<
  *         return bytes2str(rg_type)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGGetType(__pyx_v_self->rg, (&__pyx_v_rg_type))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(12, 87, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGGetType(__pyx_v_self->rg, (&__pyx_v_rg_type))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(13, 86, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":88
+  /* "SLEPc/RG.pyx":87
  *         cdef SlepcRGType rg_type = NULL
  *         CHKERR( RGGetType(self.rg, &rg_type) )
  *         return bytes2str(rg_type)             # <<<<<<<<<<<<<<
@@ -20517,13 +21749,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_10getType(struct PySlepcRGObject
  *     def setOptionsPrefix(self, prefix):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_rg_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 88, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_rg_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 87, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/RG.pyx":77
+  /* "SLEPc/RG.pyx":76
  *         CHKERR( RGSetType(self.rg, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -20542,7 +21774,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_10getType(struct PySlepcRGObject
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":90
+/* "SLEPc/RG.pyx":89
  *         return bytes2str(rg_type)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -20566,6 +21798,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_13setOptionsPrefix(PyObject *__py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -20576,7 +21809,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_13setOptionsPrefix(PyObject *__py
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(12, 90, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(13, 89, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -20587,7 +21820,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_13setOptionsPrefix(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 90, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 89, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.RG.setOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -20609,7 +21842,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_12setOptionsPrefix(struct PySlepc
   __Pyx_RefNannySetupContext("setOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/RG.pyx":107
+  /* "SLEPc/RG.pyx":106
  *         AUTOMATICALLY the hyphen.
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -20618,28 +21851,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_12setOptionsPrefix(struct PySlepc
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/RG.pyx":108
+  /* "SLEPc/RG.pyx":107
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( RGSetOptionsPrefix(self.rg, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 108, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 107, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/RG.pyx":109
+  /* "SLEPc/RG.pyx":108
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( RGSetOptionsPrefix(self.rg, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getOptionsPrefix(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGSetOptionsPrefix(__pyx_v_self->rg, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(12, 109, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGSetOptionsPrefix(__pyx_v_self->rg, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(13, 108, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":90
+  /* "SLEPc/RG.pyx":89
  *         return bytes2str(rg_type)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -20661,7 +21894,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_12setOptionsPrefix(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":111
+/* "SLEPc/RG.pyx":110
  *         CHKERR( RGSetOptionsPrefix(self.rg, cval) )
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -20694,7 +21927,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_14getOptionsPrefix(struct PySlepc
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getOptionsPrefix", 0);
 
-  /* "SLEPc/RG.pyx":121
+  /* "SLEPc/RG.pyx":120
  *                 The prefix string set for this RG object.
  *         """
  *         cdef const_char *prefix = NULL             # <<<<<<<<<<<<<<
@@ -20703,16 +21936,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_14getOptionsPrefix(struct PySlepc
  */
   __pyx_v_prefix = NULL;
 
-  /* "SLEPc/RG.pyx":122
+  /* "SLEPc/RG.pyx":121
  *         """
  *         cdef const_char *prefix = NULL
  *         CHKERR( RGGetOptionsPrefix(self.rg, &prefix) )             # <<<<<<<<<<<<<<
  *         return bytes2str(prefix)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGGetOptionsPrefix(__pyx_v_self->rg, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(12, 122, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGGetOptionsPrefix(__pyx_v_self->rg, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(13, 121, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":123
+  /* "SLEPc/RG.pyx":122
  *         cdef const_char *prefix = NULL
  *         CHKERR( RGGetOptionsPrefix(self.rg, &prefix) )
  *         return bytes2str(prefix)             # <<<<<<<<<<<<<<
@@ -20720,13 +21953,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_14getOptionsPrefix(struct PySlepc
  *     def setFromOptions(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 123, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 122, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/RG.pyx":111
+  /* "SLEPc/RG.pyx":110
  *         CHKERR( RGSetOptionsPrefix(self.rg, cval) )
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -20745,7 +21978,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_14getOptionsPrefix(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":125
+/* "SLEPc/RG.pyx":124
  *         return bytes2str(prefix)
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -20776,16 +22009,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_16setFromOptions(struct PySlepcRG
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setFromOptions", 0);
 
-  /* "SLEPc/RG.pyx":134
+  /* "SLEPc/RG.pyx":133
  *         option.
  *         """
  *         CHKERR( RGSetFromOptions(self.rg) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGSetFromOptions(__pyx_v_self->rg)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(12, 134, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGSetFromOptions(__pyx_v_self->rg)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(13, 133, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":125
+  /* "SLEPc/RG.pyx":124
  *         return bytes2str(prefix)
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -20805,7 +22038,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_16setFromOptions(struct PySlepcRG
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":138
+/* "SLEPc/RG.pyx":137
  *     #
  * 
  *     def isTrivial(self):             # <<<<<<<<<<<<<<
@@ -20838,7 +22071,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_18isTrivial(struct PySlepcRGObjec
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("isTrivial", 0);
 
-  /* "SLEPc/RG.pyx":149
+  /* "SLEPc/RG.pyx":148
  *              ellipse with infinite radius.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -20847,16 +22080,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_18isTrivial(struct PySlepcRGObjec
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/RG.pyx":150
+  /* "SLEPc/RG.pyx":149
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( RGIsTrivial(self.rg, &tval) )             # <<<<<<<<<<<<<<
  *         return <bint> tval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGIsTrivial(__pyx_v_self->rg, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(12, 150, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGIsTrivial(__pyx_v_self->rg, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(13, 149, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":151
+  /* "SLEPc/RG.pyx":150
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( RGIsTrivial(self.rg, &tval) )
  *         return <bint> tval             # <<<<<<<<<<<<<<
@@ -20864,13 +22097,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_18isTrivial(struct PySlepcRGObjec
  *     def getComplement(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 151, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 150, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/RG.pyx":138
+  /* "SLEPc/RG.pyx":137
  *     #
  * 
  *     def isTrivial(self):             # <<<<<<<<<<<<<<
@@ -20889,7 +22122,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_18isTrivial(struct PySlepcRGObjec
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":153
+/* "SLEPc/RG.pyx":152
  *         return <bint> tval
  * 
  *     def getComplement(self):             # <<<<<<<<<<<<<<
@@ -20922,7 +22155,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_20getComplement(struct PySlepcRGO
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getComplement", 0);
 
-  /* "SLEPc/RG.pyx":162
+  /* "SLEPc/RG.pyx":161
  *             Whether the region is complemented or not.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -20931,16 +22164,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_20getComplement(struct PySlepcRGO
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/RG.pyx":163
+  /* "SLEPc/RG.pyx":162
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( RGGetComplement(self.rg, &tval) )             # <<<<<<<<<<<<<<
  *         return <bint>tval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGGetComplement(__pyx_v_self->rg, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(12, 163, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGGetComplement(__pyx_v_self->rg, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(13, 162, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":164
+  /* "SLEPc/RG.pyx":163
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( RGGetComplement(self.rg, &tval) )
  *         return <bint>tval             # <<<<<<<<<<<<<<
@@ -20948,13 +22181,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_20getComplement(struct PySlepcRGO
  *     def setComplement(self, comp):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 164, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 163, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/RG.pyx":153
+  /* "SLEPc/RG.pyx":152
  *         return <bint> tval
  * 
  *     def getComplement(self):             # <<<<<<<<<<<<<<
@@ -20973,7 +22206,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_20getComplement(struct PySlepcRGO
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":166
+/* "SLEPc/RG.pyx":165
  *         return <bint>tval
  * 
  *     def setComplement(self, comp):             # <<<<<<<<<<<<<<
@@ -20997,6 +22230,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_23setComplement(PyObject *__pyx_v
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -21007,7 +22241,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_23setComplement(PyObject *__pyx_v
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setComplement") < 0)) __PYX_ERR(12, 166, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setComplement") < 0)) __PYX_ERR(13, 165, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -21018,7 +22252,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_23setComplement(PyObject *__pyx_v
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setComplement", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 166, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setComplement", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 165, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.RG.setComplement", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -21039,26 +22273,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_22setComplement(struct PySlepcRGO
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setComplement", 0);
 
-  /* "SLEPc/RG.pyx":176
+  /* "SLEPc/RG.pyx":175
  *             Activate/deactivate the complementation of the region.
  *         """
  *         cdef PetscBool tval = comp             # <<<<<<<<<<<<<<
  *         CHKERR( RGSetComplement(self.rg, tval) )
  * 
  */
-  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_comp)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 176, __pyx_L1_error)
+  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_comp)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 175, __pyx_L1_error)
   __pyx_v_tval = __pyx_t_1;
 
-  /* "SLEPc/RG.pyx":177
+  /* "SLEPc/RG.pyx":176
  *         """
  *         cdef PetscBool tval = comp
  *         CHKERR( RGSetComplement(self.rg, tval) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGSetComplement(__pyx_v_self->rg, __pyx_v_tval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(12, 177, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGSetComplement(__pyx_v_self->rg, __pyx_v_tval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(13, 176, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":166
+  /* "SLEPc/RG.pyx":165
  *         return <bint>tval
  * 
  *     def setComplement(self, comp):             # <<<<<<<<<<<<<<
@@ -21078,7 +22312,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_22setComplement(struct PySlepcRGO
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":181
+/* "SLEPc/RG.pyx":180
  *     #
  * 
  *     def setEllipseParameters(self, center, radius, vscale):             # <<<<<<<<<<<<<<
@@ -21104,8 +22338,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_25setEllipseParameters(PyObject *
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -21114,19 +22351,21 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_25setEllipseParameters(PyObject *
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_center)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_radius)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setEllipseParameters", 1, 3, 3, 1); __PYX_ERR(12, 181, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("setEllipseParameters", 1, 3, 3, 1); __PYX_ERR(13, 180, __pyx_L3_error)
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vscale)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setEllipseParameters", 1, 3, 3, 2); __PYX_ERR(12, 181, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("setEllipseParameters", 1, 3, 3, 2); __PYX_ERR(13, 180, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setEllipseParameters") < 0)) __PYX_ERR(12, 181, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setEllipseParameters") < 0)) __PYX_ERR(13, 180, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -21141,7 +22380,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_25setEllipseParameters(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setEllipseParameters", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 181, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setEllipseParameters", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 180, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.RG.setEllipseParameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -21165,46 +22404,46 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_24setEllipseParameters(struct PyS
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("setEllipseParameters", 0);
 
-  /* "SLEPc/RG.pyx":194
+  /* "SLEPc/RG.pyx":193
  *               The vertical scale.
  *         """
  *         cdef PetscScalar sval = asScalar(center)             # <<<<<<<<<<<<<<
  *         cdef PetscReal val1 = radius
  *         cdef PetscReal val2 = vscale
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_center); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 194, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_center); if (unlikely(__pyx_t_1 == ((PetscScalar)((PetscScalar)(-1.0))) && PyErr_Occurred())) __PYX_ERR(13, 193, __pyx_L1_error)
   __pyx_v_sval = __pyx_t_1;
 
-  /* "SLEPc/RG.pyx":195
+  /* "SLEPc/RG.pyx":194
  *         """
  *         cdef PetscScalar sval = asScalar(center)
  *         cdef PetscReal val1 = radius             # <<<<<<<<<<<<<<
  *         cdef PetscReal val2 = vscale
  *         CHKERR( RGEllipseSetParameters(self.rg, sval, val1, val2) )
  */
-  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_radius); if (unlikely((__pyx_t_2 == (PetscReal)-1) && PyErr_Occurred())) __PYX_ERR(12, 195, __pyx_L1_error)
+  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_radius); if (unlikely((__pyx_t_2 == ((PetscReal)-1)) && PyErr_Occurred())) __PYX_ERR(13, 194, __pyx_L1_error)
   __pyx_v_val1 = __pyx_t_2;
 
-  /* "SLEPc/RG.pyx":196
+  /* "SLEPc/RG.pyx":195
  *         cdef PetscScalar sval = asScalar(center)
  *         cdef PetscReal val1 = radius
  *         cdef PetscReal val2 = vscale             # <<<<<<<<<<<<<<
  *         CHKERR( RGEllipseSetParameters(self.rg, sval, val1, val2) )
  * 
  */
-  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_vscale); if (unlikely((__pyx_t_2 == (PetscReal)-1) && PyErr_Occurred())) __PYX_ERR(12, 196, __pyx_L1_error)
+  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_vscale); if (unlikely((__pyx_t_2 == ((PetscReal)-1)) && PyErr_Occurred())) __PYX_ERR(13, 195, __pyx_L1_error)
   __pyx_v_val2 = __pyx_t_2;
 
-  /* "SLEPc/RG.pyx":197
+  /* "SLEPc/RG.pyx":196
  *         cdef PetscReal val1 = radius
  *         cdef PetscReal val2 = vscale
  *         CHKERR( RGEllipseSetParameters(self.rg, sval, val1, val2) )             # <<<<<<<<<<<<<<
  * 
  *     def getEllipseParameters(self):
  */
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGEllipseSetParameters(__pyx_v_self->rg, __pyx_v_sval, __pyx_v_val1, __pyx_v_val2)); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(12, 197, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGEllipseSetParameters(__pyx_v_self->rg, __pyx_v_sval, __pyx_v_val1, __pyx_v_val2)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(13, 196, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":181
+  /* "SLEPc/RG.pyx":180
  *     #
  * 
  *     def setEllipseParameters(self, center, radius, vscale):             # <<<<<<<<<<<<<<
@@ -21224,7 +22463,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_24setEllipseParameters(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":199
+/* "SLEPc/RG.pyx":198
  *         CHKERR( RGEllipseSetParameters(self.rg, sval, val1, val2) )
  * 
  *     def getEllipseParameters(self):             # <<<<<<<<<<<<<<
@@ -21262,7 +22501,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_26getEllipseParameters(struct PyS
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("getEllipseParameters", 0);
 
-  /* "SLEPc/RG.pyx":212
+  /* "SLEPc/RG.pyx":211
  *               The vertical scale.
  *         """
  *         cdef PetscScalar sval = 0             # <<<<<<<<<<<<<<
@@ -21271,7 +22510,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_26getEllipseParameters(struct PyS
  */
   __pyx_v_sval = 0.0;
 
-  /* "SLEPc/RG.pyx":213
+  /* "SLEPc/RG.pyx":212
  *         """
  *         cdef PetscScalar sval = 0
  *         cdef PetscReal val1 = 0             # <<<<<<<<<<<<<<
@@ -21280,7 +22519,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_26getEllipseParameters(struct PyS
  */
   __pyx_v_val1 = 0.0;
 
-  /* "SLEPc/RG.pyx":214
+  /* "SLEPc/RG.pyx":213
  *         cdef PetscScalar sval = 0
  *         cdef PetscReal val1 = 0
  *         cdef PetscReal val2 = 0             # <<<<<<<<<<<<<<
@@ -21289,16 +22528,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_26getEllipseParameters(struct PyS
  */
   __pyx_v_val2 = 0.0;
 
-  /* "SLEPc/RG.pyx":215
+  /* "SLEPc/RG.pyx":214
  *         cdef PetscReal val1 = 0
  *         cdef PetscReal val2 = 0
  *         CHKERR( RGEllipseGetParameters(self.rg, &sval, &val1, &val2) )             # <<<<<<<<<<<<<<
  *         return (toScalar(sval), toReal(val1), toReal(val2))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGEllipseGetParameters(__pyx_v_self->rg, (&__pyx_v_sval), (&__pyx_v_val1), (&__pyx_v_val2))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(12, 215, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGEllipseGetParameters(__pyx_v_self->rg, (&__pyx_v_sval), (&__pyx_v_val1), (&__pyx_v_val2))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(13, 214, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":216
+  /* "SLEPc/RG.pyx":215
  *         cdef PetscReal val2 = 0
  *         CHKERR( RGEllipseGetParameters(self.rg, &sval, &val1, &val2) )
  *         return (toScalar(sval), toReal(val1), toReal(val2))             # <<<<<<<<<<<<<<
@@ -21306,13 +22545,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_26getEllipseParameters(struct PyS
  *     def setIntervalEndpoints(self, a, b, c, d):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 216, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 215, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_val1); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 216, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_val1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 215, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_val2); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 216, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_val2); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 215, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 216, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 215, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
@@ -21327,7 +22566,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_26getEllipseParameters(struct PyS
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/RG.pyx":199
+  /* "SLEPc/RG.pyx":198
  *         CHKERR( RGEllipseSetParameters(self.rg, sval, val1, val2) )
  * 
  *     def getEllipseParameters(self):             # <<<<<<<<<<<<<<
@@ -21349,7 +22588,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_26getEllipseParameters(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":218
+/* "SLEPc/RG.pyx":217
  *         return (toScalar(sval), toReal(val1), toReal(val2))
  * 
  *     def setIntervalEndpoints(self, a, b, c, d):             # <<<<<<<<<<<<<<
@@ -21376,9 +22615,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_29setIntervalEndpoints(PyObject *
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -21387,24 +22630,27 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_29setIntervalEndpoints(PyObject *
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_b)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setIntervalEndpoints", 1, 4, 4, 1); __PYX_ERR(12, 218, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("setIntervalEndpoints", 1, 4, 4, 1); __PYX_ERR(13, 217, __pyx_L3_error)
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_c)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setIntervalEndpoints", 1, 4, 4, 2); __PYX_ERR(12, 218, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("setIntervalEndpoints", 1, 4, 4, 2); __PYX_ERR(13, 217, __pyx_L3_error)
         }
+        CYTHON_FALLTHROUGH;
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setIntervalEndpoints", 1, 4, 4, 3); __PYX_ERR(12, 218, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("setIntervalEndpoints", 1, 4, 4, 3); __PYX_ERR(13, 217, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setIntervalEndpoints") < 0)) __PYX_ERR(12, 218, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setIntervalEndpoints") < 0)) __PYX_ERR(13, 217, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
       goto __pyx_L5_argtuple_error;
@@ -21421,7 +22667,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_2RG_29setIntervalEndpoints(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setIntervalEndpoints", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 218, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setIntervalEndpoints", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 217, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.RG.setIntervalEndpoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -21445,56 +22691,56 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_28setIntervalEndpoints(struct PyS
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setIntervalEndpoints", 0);
 
-  /* "SLEPc/RG.pyx":233
+  /* "SLEPc/RG.pyx":232
  *               The lower endpoint in the imaginary axis.
  *         """
  *         cdef PetscReal va = a             # <<<<<<<<<<<<<<
  *         cdef PetscReal vb = b
  *         cdef PetscReal vc = c
  */
-  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_1 == (PetscReal)-1) && PyErr_Occurred())) __PYX_ERR(12, 233, __pyx_L1_error)
+  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_1 == ((PetscReal)-1)) && PyErr_Occurred())) __PYX_ERR(13, 232, __pyx_L1_error)
   __pyx_v_va = __pyx_t_1;
 
-  /* "SLEPc/RG.pyx":234
+  /* "SLEPc/RG.pyx":233
  *         """
  *         cdef PetscReal va = a
  *         cdef PetscReal vb = b             # <<<<<<<<<<<<<<
  *         cdef PetscReal vc = c
  *         cdef PetscReal vd = d
  */
-  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_b); if (unlikely((__pyx_t_1 == (PetscReal)-1) && PyErr_Occurred())) __PYX_ERR(12, 234, __pyx_L1_error)
+  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_b); if (unlikely((__pyx_t_1 == ((PetscReal)-1)) && PyErr_Occurred())) __PYX_ERR(13, 233, __pyx_L1_error)
   __pyx_v_vb = __pyx_t_1;
 
-  /* "SLEPc/RG.pyx":235
+  /* "SLEPc/RG.pyx":234
  *         cdef PetscReal va = a
  *         cdef PetscReal vb = b
  *         cdef PetscReal vc = c             # <<<<<<<<<<<<<<
  *         cdef PetscReal vd = d
  *         CHKERR( RGIntervalSetEndpoints(self.rg, va, vb, vc, vd) )
  */
-  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_c); if (unlikely((__pyx_t_1 == (PetscReal)-1) && PyErr_Occurred())) __PYX_ERR(12, 235, __pyx_L1_error)
+  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_c); if (unlikely((__pyx_t_1 == ((PetscReal)-1)) && PyErr_Occurred())) __PYX_ERR(13, 234, __pyx_L1_error)
   __pyx_v_vc = __pyx_t_1;
 
-  /* "SLEPc/RG.pyx":236
+  /* "SLEPc/RG.pyx":235
  *         cdef PetscReal vb = b
  *         cdef PetscReal vc = c
  *         cdef PetscReal vd = d             # <<<<<<<<<<<<<<
  *         CHKERR( RGIntervalSetEndpoints(self.rg, va, vb, vc, vd) )
  * 
  */
-  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_d); if (unlikely((__pyx_t_1 == (PetscReal)-1) && PyErr_Occurred())) __PYX_ERR(12, 236, __pyx_L1_error)
+  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_d); if (unlikely((__pyx_t_1 == ((PetscReal)-1)) && PyErr_Occurred())) __PYX_ERR(13, 235, __pyx_L1_error)
   __pyx_v_vd = __pyx_t_1;
 
-  /* "SLEPc/RG.pyx":237
+  /* "SLEPc/RG.pyx":236
  *         cdef PetscReal vc = c
  *         cdef PetscReal vd = d
  *         CHKERR( RGIntervalSetEndpoints(self.rg, va, vb, vc, vd) )             # <<<<<<<<<<<<<<
  * 
  *     def getIntervalEndpoints(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGIntervalSetEndpoints(__pyx_v_self->rg, __pyx_v_va, __pyx_v_vb, __pyx_v_vc, __pyx_v_vd)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(12, 237, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGIntervalSetEndpoints(__pyx_v_self->rg, __pyx_v_va, __pyx_v_vb, __pyx_v_vc, __pyx_v_vd)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(13, 236, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":218
+  /* "SLEPc/RG.pyx":217
  *         return (toScalar(sval), toReal(val1), toReal(val2))
  * 
  *     def setIntervalEndpoints(self, a, b, c, d):             # <<<<<<<<<<<<<<
@@ -21514,7 +22760,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_28setIntervalEndpoints(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/RG.pyx":239
+/* "SLEPc/RG.pyx":238
  *         CHKERR( RGIntervalSetEndpoints(self.rg, va, vb, vc, vd) )
  * 
  *     def getIntervalEndpoints(self):             # <<<<<<<<<<<<<<
@@ -21554,7 +22800,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_30getIntervalEndpoints(struct PyS
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("getIntervalEndpoints", 0);
 
-  /* "SLEPc/RG.pyx":254
+  /* "SLEPc/RG.pyx":253
  *               The lower endpoint in the imaginary axis.
  *         """
  *         cdef PetscReal va = 0             # <<<<<<<<<<<<<<
@@ -21563,7 +22809,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_30getIntervalEndpoints(struct PyS
  */
   __pyx_v_va = 0.0;
 
-  /* "SLEPc/RG.pyx":255
+  /* "SLEPc/RG.pyx":254
  *         """
  *         cdef PetscReal va = 0
  *         cdef PetscReal vb = 0             # <<<<<<<<<<<<<<
@@ -21572,7 +22818,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_30getIntervalEndpoints(struct PyS
  */
   __pyx_v_vb = 0.0;
 
-  /* "SLEPc/RG.pyx":256
+  /* "SLEPc/RG.pyx":255
  *         cdef PetscReal va = 0
  *         cdef PetscReal vb = 0
  *         cdef PetscReal vc = 0             # <<<<<<<<<<<<<<
@@ -21581,7 +22827,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_30getIntervalEndpoints(struct PyS
  */
   __pyx_v_vc = 0.0;
 
-  /* "SLEPc/RG.pyx":257
+  /* "SLEPc/RG.pyx":256
  *         cdef PetscReal vb = 0
  *         cdef PetscReal vc = 0
  *         cdef PetscReal vd = 0             # <<<<<<<<<<<<<<
@@ -21590,16 +22836,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_30getIntervalEndpoints(struct PyS
  */
   __pyx_v_vd = 0.0;
 
-  /* "SLEPc/RG.pyx":258
+  /* "SLEPc/RG.pyx":257
  *         cdef PetscReal vc = 0
  *         cdef PetscReal vd = 0
  *         CHKERR( RGIntervalGetEndpoints(self.rg, &va, &vb, &vc, &vd) )             # <<<<<<<<<<<<<<
  *         return (toReal(va), toReal(vb), toReal(vc), toReal(vd))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGIntervalGetEndpoints(__pyx_v_self->rg, (&__pyx_v_va), (&__pyx_v_vb), (&__pyx_v_vc), (&__pyx_v_vd))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(12, 258, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(RGIntervalGetEndpoints(__pyx_v_self->rg, (&__pyx_v_va), (&__pyx_v_vb), (&__pyx_v_vc), (&__pyx_v_vd))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(13, 257, __pyx_L1_error)
 
-  /* "SLEPc/RG.pyx":259
+  /* "SLEPc/RG.pyx":258
  *         cdef PetscReal vd = 0
  *         CHKERR( RGIntervalGetEndpoints(self.rg, &va, &vb, &vc, &vd) )
  *         return (toReal(va), toReal(vb), toReal(vc), toReal(vd))             # <<<<<<<<<<<<<<
@@ -21607,15 +22853,15 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_30getIntervalEndpoints(struct PyS
  * # -----------------------------------------------------------------------------
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_va); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 259, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_va); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 258, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_vb); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 259, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_vb); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 258, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_vc); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 259, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_vc); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 258, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_vd); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 259, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_vd); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 258, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 259, __pyx_L1_error)
+  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 258, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
@@ -21633,7 +22879,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2RG_30getIntervalEndpoints(struct PyS
   __pyx_t_6 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/RG.pyx":239
+  /* "SLEPc/RG.pyx":238
  *         CHKERR( RGIntervalSetEndpoints(self.rg, va, vb, vc, vd) )
  * 
  *     def getIntervalEndpoints(self):             # <<<<<<<<<<<<<<
@@ -21742,6 +22988,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_3view(PyObject *__pyx_v_self, Py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -21754,11 +23001,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_3view(PyObject *__pyx_v_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(13, 231, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(14, 231, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -21767,13 +23015,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_3view(PyObject *__pyx_v_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 231, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 231, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.view", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(13, 231, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(14, 231, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_2view(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_viewer);
 
   /* function exit code */
@@ -21790,42 +23038,25 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_2view(struct PySlepcEPSObject *_
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
-  PetscViewer __pyx_t_3;
-  int __pyx_t_4;
   __Pyx_RefNannySetupContext("view", 0);
 
   /* "SLEPc/EPS.pyx":241
  *                 output is used.
  *         """
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( EPSView(self.eps, vwr) )
+ * 
  */
-  __pyx_v_vwr = NULL;
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
   /* "SLEPc/EPS.pyx":242
  *         """
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
- *         CHKERR( EPSView(self.eps, vwr) )
- * 
- */
-  __pyx_t_1 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_3;
-  }
-
-  /* "SLEPc/EPS.pyx":243
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( EPSView(self.eps, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     def destroy(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSView(__pyx_v_self->eps, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(13, 243, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSView(__pyx_v_self->eps, __pyx_v_vwr)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 242, __pyx_L1_error)
 
   /* "SLEPc/EPS.pyx":231
  *         self.eps = NULL
@@ -21847,7 +23078,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_2view(struct PySlepcEPSObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":245
+/* "SLEPc/EPS.pyx":244
  *         CHKERR( EPSView(self.eps, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -21878,16 +23109,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_4destroy(struct PySlepcEPSObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("destroy", 0);
 
-  /* "SLEPc/EPS.pyx":249
+  /* "SLEPc/EPS.pyx":248
  *         Destroys the EPS object.
  *         """
  *         CHKERR( EPSDestroy(&self.eps) )             # <<<<<<<<<<<<<<
  *         self.eps = NULL
  *         return self
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSDestroy((&__pyx_v_self->eps))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 249, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSDestroy((&__pyx_v_self->eps))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 248, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":250
+  /* "SLEPc/EPS.pyx":249
  *         """
  *         CHKERR( EPSDestroy(&self.eps) )
  *         self.eps = NULL             # <<<<<<<<<<<<<<
@@ -21896,7 +23127,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_4destroy(struct PySlepcEPSObject
  */
   __pyx_v_self->eps = NULL;
 
-  /* "SLEPc/EPS.pyx":251
+  /* "SLEPc/EPS.pyx":250
  *         CHKERR( EPSDestroy(&self.eps) )
  *         self.eps = NULL
  *         return self             # <<<<<<<<<<<<<<
@@ -21908,7 +23139,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_4destroy(struct PySlepcEPSObject
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":245
+  /* "SLEPc/EPS.pyx":244
  *         CHKERR( EPSView(self.eps, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -21926,7 +23157,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_4destroy(struct PySlepcEPSObject
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":253
+/* "SLEPc/EPS.pyx":252
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -21957,16 +23188,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_6reset(struct PySlepcEPSObject *
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("reset", 0);
 
-  /* "SLEPc/EPS.pyx":257
+  /* "SLEPc/EPS.pyx":256
  *         Resets the EPS object.
  *         """
  *         CHKERR( EPSReset(self.eps) )             # <<<<<<<<<<<<<<
  * 
  *     def create(self, comm=None):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSReset(__pyx_v_self->eps)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 257, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSReset(__pyx_v_self->eps)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 256, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":253
+  /* "SLEPc/EPS.pyx":252
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -21986,7 +23217,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_6reset(struct PySlepcEPSObject *
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":259
+/* "SLEPc/EPS.pyx":258
  *         CHKERR( EPSReset(self.eps) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -22011,6 +23242,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_9create(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -22023,11 +23255,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_9create(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(13, 259, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(14, 258, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -22036,7 +23269,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_9create(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 259, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 258, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -22058,17 +23291,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_8create(struct PySlepcEPSObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("create", 0);
 
-  /* "SLEPc/EPS.pyx":269
+  /* "SLEPc/EPS.pyx":268
  *               processes.
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())             # <<<<<<<<<<<<<<
  *         cdef SlepcEPS neweps = NULL
  *         CHKERR( EPSCreate(ccomm, &neweps) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 269, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 268, __pyx_L1_error)
   __pyx_v_ccomm = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":270
+  /* "SLEPc/EPS.pyx":269
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcEPS neweps = NULL             # <<<<<<<<<<<<<<
@@ -22077,16 +23310,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_8create(struct PySlepcEPSObject
  */
   __pyx_v_neweps = NULL;
 
-  /* "SLEPc/EPS.pyx":271
+  /* "SLEPc/EPS.pyx":270
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcEPS neweps = NULL
  *         CHKERR( EPSCreate(ccomm, &neweps) )             # <<<<<<<<<<<<<<
  *         SlepcCLEAR(self.obj); self.eps = neweps
  *         return self
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSCreate(__pyx_v_ccomm, (&__pyx_v_neweps))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 271, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSCreate(__pyx_v_ccomm, (&__pyx_v_neweps))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 270, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":272
+  /* "SLEPc/EPS.pyx":271
  *         cdef SlepcEPS neweps = NULL
  *         CHKERR( EPSCreate(ccomm, &neweps) )
  *         SlepcCLEAR(self.obj); self.eps = neweps             # <<<<<<<<<<<<<<
@@ -22096,7 +23329,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_8create(struct PySlepcEPSObject
   __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(__pyx_v_self->__pyx_base.obj);
   __pyx_v_self->eps = __pyx_v_neweps;
 
-  /* "SLEPc/EPS.pyx":273
+  /* "SLEPc/EPS.pyx":272
  *         CHKERR( EPSCreate(ccomm, &neweps) )
  *         SlepcCLEAR(self.obj); self.eps = neweps
  *         return self             # <<<<<<<<<<<<<<
@@ -22108,7 +23341,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_8create(struct PySlepcEPSObject
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":259
+  /* "SLEPc/EPS.pyx":258
  *         CHKERR( EPSReset(self.eps) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -22126,7 +23359,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_8create(struct PySlepcEPSObject
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":275
+/* "SLEPc/EPS.pyx":274
  *         return self
  * 
  *     def setType(self, eps_type):             # <<<<<<<<<<<<<<
@@ -22150,6 +23383,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_11setType(PyObject *__pyx_v_self
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -22160,7 +23394,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_11setType(PyObject *__pyx_v_self
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(13, 275, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(14, 274, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -22171,7 +23405,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_11setType(PyObject *__pyx_v_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 275, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 274, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -22193,7 +23427,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_10setType(struct PySlepcEPSObjec
   __Pyx_RefNannySetupContext("setType", 0);
   __Pyx_INCREF(__pyx_v_eps_type);
 
-  /* "SLEPc/EPS.pyx":293
+  /* "SLEPc/EPS.pyx":292
  *         evaluating the different available methods.
  *         """
  *         cdef SlepcEPSType cval = NULL             # <<<<<<<<<<<<<<
@@ -22202,28 +23436,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_10setType(struct PySlepcEPSObjec
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/EPS.pyx":294
+  /* "SLEPc/EPS.pyx":293
  *         """
  *         cdef SlepcEPSType cval = NULL
  *         eps_type = str2bytes(eps_type, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( EPSSetType(self.eps, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_eps_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 294, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_eps_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 293, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_eps_type, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":295
+  /* "SLEPc/EPS.pyx":294
  *         cdef SlepcEPSType cval = NULL
  *         eps_type = str2bytes(eps_type, &cval)
  *         CHKERR( EPSSetType(self.eps, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getType(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetType(__pyx_v_self->eps, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 295, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetType(__pyx_v_self->eps, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 294, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":275
+  /* "SLEPc/EPS.pyx":274
  *         return self
  * 
  *     def setType(self, eps_type):             # <<<<<<<<<<<<<<
@@ -22245,7 +23479,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_10setType(struct PySlepcEPSObjec
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":297
+/* "SLEPc/EPS.pyx":296
  *         CHKERR( EPSSetType(self.eps, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -22278,7 +23512,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_12getType(struct PySlepcEPSObjec
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getType", 0);
 
-  /* "SLEPc/EPS.pyx":306
+  /* "SLEPc/EPS.pyx":305
  *               The solver currently being used.
  *         """
  *         cdef SlepcEPSType eps_type = NULL             # <<<<<<<<<<<<<<
@@ -22287,16 +23521,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_12getType(struct PySlepcEPSObjec
  */
   __pyx_v_eps_type = NULL;
 
-  /* "SLEPc/EPS.pyx":307
+  /* "SLEPc/EPS.pyx":306
  *         """
  *         cdef SlepcEPSType eps_type = NULL
  *         CHKERR( EPSGetType(self.eps, &eps_type) )             # <<<<<<<<<<<<<<
  *         return bytes2str(eps_type)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetType(__pyx_v_self->eps, (&__pyx_v_eps_type))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 307, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetType(__pyx_v_self->eps, (&__pyx_v_eps_type))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 306, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":308
+  /* "SLEPc/EPS.pyx":307
  *         cdef SlepcEPSType eps_type = NULL
  *         CHKERR( EPSGetType(self.eps, &eps_type) )
  *         return bytes2str(eps_type)             # <<<<<<<<<<<<<<
@@ -22304,13 +23538,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_12getType(struct PySlepcEPSObjec
  *     def getOptionsPrefix(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_eps_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 308, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_eps_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 307, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":297
+  /* "SLEPc/EPS.pyx":296
  *         CHKERR( EPSSetType(self.eps, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -22329,7 +23563,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_12getType(struct PySlepcEPSObjec
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":310
+/* "SLEPc/EPS.pyx":309
  *         return bytes2str(eps_type)
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -22362,7 +23596,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_14getOptionsPrefix(struct PySlep
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getOptionsPrefix", 0);
 
-  /* "SLEPc/EPS.pyx":320
+  /* "SLEPc/EPS.pyx":319
  *                 The prefix string set for this EPS object.
  *         """
  *         cdef const_char *prefix = NULL             # <<<<<<<<<<<<<<
@@ -22371,16 +23605,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_14getOptionsPrefix(struct PySlep
  */
   __pyx_v_prefix = NULL;
 
-  /* "SLEPc/EPS.pyx":321
+  /* "SLEPc/EPS.pyx":320
  *         """
  *         cdef const_char *prefix = NULL
  *         CHKERR( EPSGetOptionsPrefix(self.eps, &prefix) )             # <<<<<<<<<<<<<<
  *         return bytes2str(prefix)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetOptionsPrefix(__pyx_v_self->eps, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 321, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetOptionsPrefix(__pyx_v_self->eps, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 320, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":322
+  /* "SLEPc/EPS.pyx":321
  *         cdef const_char *prefix = NULL
  *         CHKERR( EPSGetOptionsPrefix(self.eps, &prefix) )
  *         return bytes2str(prefix)             # <<<<<<<<<<<<<<
@@ -22388,13 +23622,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_14getOptionsPrefix(struct PySlep
  *     def setOptionsPrefix(self, prefix):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 322, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 321, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":310
+  /* "SLEPc/EPS.pyx":309
  *         return bytes2str(eps_type)
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -22413,7 +23647,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_14getOptionsPrefix(struct PySlep
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":324
+/* "SLEPc/EPS.pyx":323
  *         return bytes2str(prefix)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -22437,6 +23671,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_17setOptionsPrefix(PyObject *__p
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -22447,7 +23682,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_17setOptionsPrefix(PyObject *__p
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(13, 324, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(14, 323, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -22458,7 +23693,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_17setOptionsPrefix(PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 324, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 323, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -22480,7 +23715,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_16setOptionsPrefix(struct PySlep
   __Pyx_RefNannySetupContext("setOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/EPS.pyx":347
+  /* "SLEPc/EPS.pyx":346
  *             E2.setOptionsPrefix("eig2_")
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -22489,28 +23724,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_16setOptionsPrefix(struct PySlep
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/EPS.pyx":348
+  /* "SLEPc/EPS.pyx":347
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( EPSSetOptionsPrefix(self.eps, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 348, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 347, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":349
+  /* "SLEPc/EPS.pyx":348
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( EPSSetOptionsPrefix(self.eps, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def appendOptionsPrefix(self, prefix):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetOptionsPrefix(__pyx_v_self->eps, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 349, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetOptionsPrefix(__pyx_v_self->eps, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 348, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":324
+  /* "SLEPc/EPS.pyx":323
  *         return bytes2str(prefix)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -22532,7 +23767,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_16setOptionsPrefix(struct PySlep
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":351
+/* "SLEPc/EPS.pyx":350
  *         CHKERR( EPSSetOptionsPrefix(self.eps, cval) )
  * 
  *     def appendOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -22556,6 +23791,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_19appendOptionsPrefix(PyObject *
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -22566,7 +23802,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_19appendOptionsPrefix(PyObject *
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "appendOptionsPrefix") < 0)) __PYX_ERR(13, 351, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "appendOptionsPrefix") < 0)) __PYX_ERR(14, 350, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -22577,7 +23813,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_19appendOptionsPrefix(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("appendOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 351, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("appendOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 350, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.appendOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -22599,7 +23835,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_18appendOptionsPrefix(struct PyS
   __Pyx_RefNannySetupContext("appendOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/EPS.pyx":361
+  /* "SLEPc/EPS.pyx":360
  *                 The prefix string to prepend to all EPS option requests.
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -22608,28 +23844,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_18appendOptionsPrefix(struct PyS
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/EPS.pyx":362
+  /* "SLEPc/EPS.pyx":361
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( EPSAppendOptionsPrefix(self.eps, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 362, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 361, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":363
+  /* "SLEPc/EPS.pyx":362
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( EPSAppendOptionsPrefix(self.eps, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def setFromOptions(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSAppendOptionsPrefix(__pyx_v_self->eps, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 363, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSAppendOptionsPrefix(__pyx_v_self->eps, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 362, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":351
+  /* "SLEPc/EPS.pyx":350
  *         CHKERR( EPSSetOptionsPrefix(self.eps, cval) )
  * 
  *     def appendOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -22651,7 +23887,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_18appendOptionsPrefix(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":365
+/* "SLEPc/EPS.pyx":364
  *         CHKERR( EPSAppendOptionsPrefix(self.eps, cval) )
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -22682,16 +23918,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_20setFromOptions(struct PySlepcE
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setFromOptions", 0);
 
-  /* "SLEPc/EPS.pyx":376
+  /* "SLEPc/EPS.pyx":375
  *         option.
  *         """
  *         CHKERR( EPSSetFromOptions(self.eps) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetFromOptions(__pyx_v_self->eps)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 376, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetFromOptions(__pyx_v_self->eps)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 375, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":365
+  /* "SLEPc/EPS.pyx":364
  *         CHKERR( EPSAppendOptionsPrefix(self.eps, cval) )
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -22711,7 +23947,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_20setFromOptions(struct PySlepcE
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":380
+/* "SLEPc/EPS.pyx":379
  *     #
  * 
  *     def getProblemType(self):             # <<<<<<<<<<<<<<
@@ -22744,7 +23980,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_22getProblemType(struct PySlepcE
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getProblemType", 0);
 
-  /* "SLEPc/EPS.pyx":389
+  /* "SLEPc/EPS.pyx":388
  *                       The problem type that was previously set.
  *         """
  *         cdef SlepcEPSProblemType val = EPS_NHEP             # <<<<<<<<<<<<<<
@@ -22753,16 +23989,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_22getProblemType(struct PySlepcE
  */
   __pyx_v_val = EPS_NHEP;
 
-  /* "SLEPc/EPS.pyx":390
+  /* "SLEPc/EPS.pyx":389
  *         """
  *         cdef SlepcEPSProblemType val = EPS_NHEP
  *         CHKERR( EPSGetProblemType(self.eps, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetProblemType(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 390, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetProblemType(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 389, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":391
+  /* "SLEPc/EPS.pyx":390
  *         cdef SlepcEPSProblemType val = EPS_NHEP
  *         CHKERR( EPSGetProblemType(self.eps, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -22770,13 +24006,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_22getProblemType(struct PySlepcE
  *     def setProblemType(self, problem_type):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_EPSProblemType(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 391, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_EPSProblemType(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 390, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":380
+  /* "SLEPc/EPS.pyx":379
  *     #
  * 
  *     def getProblemType(self):             # <<<<<<<<<<<<<<
@@ -22795,7 +24031,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_22getProblemType(struct PySlepcE
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":393
+/* "SLEPc/EPS.pyx":392
  *         return val
  * 
  *     def setProblemType(self, problem_type):             # <<<<<<<<<<<<<<
@@ -22819,6 +24055,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_25setProblemType(PyObject *__pyx
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -22829,7 +24066,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_25setProblemType(PyObject *__pyx
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setProblemType") < 0)) __PYX_ERR(13, 393, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setProblemType") < 0)) __PYX_ERR(14, 392, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -22840,7 +24077,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_25setProblemType(PyObject *__pyx
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setProblemType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 393, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setProblemType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 392, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setProblemType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -22861,26 +24098,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_24setProblemType(struct PySlepcE
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setProblemType", 0);
 
-  /* "SLEPc/EPS.pyx":418
+  /* "SLEPc/EPS.pyx":417
  *         properties.
  *         """
  *         cdef SlepcEPSProblemType val = problem_type             # <<<<<<<<<<<<<<
  *         CHKERR( EPSSetProblemType(self.eps, val) )
  * 
  */
-  __pyx_t_1 = ((EPSProblemType)__Pyx_PyInt_As_EPSProblemType(__pyx_v_problem_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 418, __pyx_L1_error)
+  __pyx_t_1 = ((EPSProblemType)__Pyx_PyInt_As_EPSProblemType(__pyx_v_problem_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 417, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":419
+  /* "SLEPc/EPS.pyx":418
  *         """
  *         cdef SlepcEPSProblemType val = problem_type
  *         CHKERR( EPSSetProblemType(self.eps, val) )             # <<<<<<<<<<<<<<
  * 
  *     def isGeneralized(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetProblemType(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 419, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetProblemType(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 418, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":393
+  /* "SLEPc/EPS.pyx":392
  *         return val
  * 
  *     def setProblemType(self, problem_type):             # <<<<<<<<<<<<<<
@@ -22900,7 +24137,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_24setProblemType(struct PySlepcE
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":421
+/* "SLEPc/EPS.pyx":420
  *         CHKERR( EPSSetProblemType(self.eps, val) )
  * 
  *     def isGeneralized(self):             # <<<<<<<<<<<<<<
@@ -22933,7 +24170,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_26isGeneralized(struct PySlepcEP
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("isGeneralized", 0);
 
-  /* "SLEPc/EPS.pyx":431
+  /* "SLEPc/EPS.pyx":430
  *               True if two matrices were set with `setOperators()`.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -22942,16 +24179,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_26isGeneralized(struct PySlepcEP
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/EPS.pyx":432
+  /* "SLEPc/EPS.pyx":431
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSIsGeneralized(self.eps, &tval) )             # <<<<<<<<<<<<<<
  *         return <bint> tval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSIsGeneralized(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 432, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSIsGeneralized(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 431, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":433
+  /* "SLEPc/EPS.pyx":432
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSIsGeneralized(self.eps, &tval) )
  *         return <bint> tval             # <<<<<<<<<<<<<<
@@ -22959,13 +24196,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_26isGeneralized(struct PySlepcEP
  *     def isHermitian(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 433, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 432, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":421
+  /* "SLEPc/EPS.pyx":420
  *         CHKERR( EPSSetProblemType(self.eps, val) )
  * 
  *     def isGeneralized(self):             # <<<<<<<<<<<<<<
@@ -22984,7 +24221,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_26isGeneralized(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":435
+/* "SLEPc/EPS.pyx":434
  *         return <bint> tval
  * 
  *     def isHermitian(self):             # <<<<<<<<<<<<<<
@@ -23017,7 +24254,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_28isHermitian(struct PySlepcEPSO
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("isHermitian", 0);
 
-  /* "SLEPc/EPS.pyx":446
+  /* "SLEPc/EPS.pyx":445
  *               Hermitian.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -23026,16 +24263,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_28isHermitian(struct PySlepcEPSO
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/EPS.pyx":447
+  /* "SLEPc/EPS.pyx":446
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSIsHermitian(self.eps, &tval) )             # <<<<<<<<<<<<<<
  *         return <bint> tval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSIsHermitian(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 447, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSIsHermitian(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 446, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":448
+  /* "SLEPc/EPS.pyx":447
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSIsHermitian(self.eps, &tval) )
  *         return <bint> tval             # <<<<<<<<<<<<<<
@@ -23043,13 +24280,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_28isHermitian(struct PySlepcEPSO
  *     def isPositive(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 448, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 447, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":435
+  /* "SLEPc/EPS.pyx":434
  *         return <bint> tval
  * 
  *     def isHermitian(self):             # <<<<<<<<<<<<<<
@@ -23068,7 +24305,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_28isHermitian(struct PySlepcEPSO
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":450
+/* "SLEPc/EPS.pyx":449
  *         return <bint> tval
  * 
  *     def isPositive(self):             # <<<<<<<<<<<<<<
@@ -23101,7 +24338,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_30isPositive(struct PySlepcEPSOb
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("isPositive", 0);
 
-  /* "SLEPc/EPS.pyx":461
+  /* "SLEPc/EPS.pyx":460
  *               positive.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -23110,16 +24347,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_30isPositive(struct PySlepcEPSOb
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/EPS.pyx":462
+  /* "SLEPc/EPS.pyx":461
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSIsPositive(self.eps, &tval) )             # <<<<<<<<<<<<<<
  *         return <bint> tval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSIsPositive(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 462, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSIsPositive(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 461, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":463
+  /* "SLEPc/EPS.pyx":462
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSIsPositive(self.eps, &tval) )
  *         return <bint> tval             # <<<<<<<<<<<<<<
@@ -23127,13 +24364,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_30isPositive(struct PySlepcEPSOb
  *     def getBalance(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 463, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 462, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":450
+  /* "SLEPc/EPS.pyx":449
  *         return <bint> tval
  * 
  *     def isPositive(self):             # <<<<<<<<<<<<<<
@@ -23152,7 +24389,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_30isPositive(struct PySlepcEPSOb
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":465
+/* "SLEPc/EPS.pyx":464
  *         return <bint> tval
  * 
  *     def getBalance(self):             # <<<<<<<<<<<<<<
@@ -23190,7 +24427,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_32getBalance(struct PySlepcEPSOb
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("getBalance", 0);
 
-  /* "SLEPc/EPS.pyx":479
+  /* "SLEPc/EPS.pyx":478
  *                 Cutoff value
  *         """
  *         cdef SlepcEPSBalance val = EPS_BALANCE_ONESIDE             # <<<<<<<<<<<<<<
@@ -23199,7 +24436,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_32getBalance(struct PySlepcEPSOb
  */
   __pyx_v_val = EPS_BALANCE_ONESIDE;
 
-  /* "SLEPc/EPS.pyx":480
+  /* "SLEPc/EPS.pyx":479
  *         """
  *         cdef SlepcEPSBalance val = EPS_BALANCE_ONESIDE
  *         cdef PetscInt ival = 0             # <<<<<<<<<<<<<<
@@ -23208,7 +24445,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_32getBalance(struct PySlepcEPSOb
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/EPS.pyx":481
+  /* "SLEPc/EPS.pyx":480
  *         cdef SlepcEPSBalance val = EPS_BALANCE_ONESIDE
  *         cdef PetscInt ival = 0
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -23217,16 +24454,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_32getBalance(struct PySlepcEPSOb
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/EPS.pyx":482
+  /* "SLEPc/EPS.pyx":481
  *         cdef PetscInt ival = 0
  *         cdef PetscReal rval = 0
  *         CHKERR( EPSGetBalance(self.eps, &val, &ival, &rval) )             # <<<<<<<<<<<<<<
  *         return (val, toInt(ival), toReal(rval))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetBalance(__pyx_v_self->eps, (&__pyx_v_val), (&__pyx_v_ival), (&__pyx_v_rval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 482, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetBalance(__pyx_v_self->eps, (&__pyx_v_val), (&__pyx_v_ival), (&__pyx_v_rval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 481, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":483
+  /* "SLEPc/EPS.pyx":482
  *         cdef PetscReal rval = 0
  *         CHKERR( EPSGetBalance(self.eps, &val, &ival, &rval) )
  *         return (val, toInt(ival), toReal(rval))             # <<<<<<<<<<<<<<
@@ -23234,13 +24471,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_32getBalance(struct PySlepcEPSOb
  *     def setBalance(self, balance=None, iterations=None, cutoff=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_EPSBalance(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 483, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_EPSBalance(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 482, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 483, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 482, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 483, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 482, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 483, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 482, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
@@ -23255,7 +24492,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_32getBalance(struct PySlepcEPSOb
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":465
+  /* "SLEPc/EPS.pyx":464
  *         return <bint> tval
  * 
  *     def getBalance(self):             # <<<<<<<<<<<<<<
@@ -23277,7 +24514,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_32getBalance(struct PySlepcEPSOb
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":485
+/* "SLEPc/EPS.pyx":484
  *         return (val, toInt(ival), toReal(rval))
  * 
  *     def setBalance(self, balance=None, iterations=None, cutoff=None):             # <<<<<<<<<<<<<<
@@ -23306,8 +24543,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_35setBalance(PyObject *__pyx_v_s
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -23318,11 +24558,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_35setBalance(PyObject *__pyx_v_s
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_balance);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_iterations);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cutoff);
@@ -23330,13 +24572,16 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_35setBalance(PyObject *__pyx_v_s
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBalance") < 0)) __PYX_ERR(13, 485, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBalance") < 0)) __PYX_ERR(14, 484, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -23347,7 +24592,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_35setBalance(PyObject *__pyx_v_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setBalance", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 485, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setBalance", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 484, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setBalance", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -23374,7 +24619,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_34setBalance(struct PySlepcEPSOb
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("setBalance", 0);
 
-  /* "SLEPc/EPS.pyx":499
+  /* "SLEPc/EPS.pyx":498
  *                 Cutoff value
  *         """
  *         cdef SlepcEPSBalance val = <SlepcEPSBalance>PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -23383,7 +24628,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_34setBalance(struct PySlepcEPSOb
  */
   __pyx_v_val = ((EPSBalance)PETSC_DEFAULT);
 
-  /* "SLEPc/EPS.pyx":500
+  /* "SLEPc/EPS.pyx":499
  *         """
  *         cdef SlepcEPSBalance val = <SlepcEPSBalance>PETSC_DEFAULT
  *         cdef PetscInt  ival = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -23392,7 +24637,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_34setBalance(struct PySlepcEPSOb
  */
   __pyx_v_ival = PETSC_DEFAULT;
 
-  /* "SLEPc/EPS.pyx":501
+  /* "SLEPc/EPS.pyx":500
  *         cdef SlepcEPSBalance val = <SlepcEPSBalance>PETSC_DEFAULT
  *         cdef PetscInt  ival = PETSC_DEFAULT
  *         cdef PetscReal rval = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -23401,7 +24646,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_34setBalance(struct PySlepcEPSOb
  */
   __pyx_v_rval = PETSC_DEFAULT;
 
-  /* "SLEPc/EPS.pyx":502
+  /* "SLEPc/EPS.pyx":501
  *         cdef PetscInt  ival = PETSC_DEFAULT
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         if balance    is not None: val  = balance             # <<<<<<<<<<<<<<
@@ -23411,11 +24656,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_34setBalance(struct PySlepcEPSOb
   __pyx_t_1 = (__pyx_v_balance != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = ((EPSBalance)__Pyx_PyInt_As_EPSBalance(__pyx_v_balance)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 502, __pyx_L1_error)
+    __pyx_t_3 = ((EPSBalance)__Pyx_PyInt_As_EPSBalance(__pyx_v_balance)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 501, __pyx_L1_error)
     __pyx_v_val = __pyx_t_3;
   }
 
-  /* "SLEPc/EPS.pyx":503
+  /* "SLEPc/EPS.pyx":502
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         if balance    is not None: val  = balance
  *         if iterations is not None: ival = asInt(iterations)             # <<<<<<<<<<<<<<
@@ -23425,11 +24670,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_34setBalance(struct PySlepcEPSOb
   __pyx_t_2 = (__pyx_v_iterations != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_iterations); if (unlikely(__pyx_t_4 == -1L && PyErr_Occurred())) __PYX_ERR(13, 503, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_iterations); if (unlikely(__pyx_t_4 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(14, 502, __pyx_L1_error)
     __pyx_v_ival = __pyx_t_4;
   }
 
-  /* "SLEPc/EPS.pyx":504
+  /* "SLEPc/EPS.pyx":503
  *         if balance    is not None: val  = balance
  *         if iterations is not None: ival = asInt(iterations)
  *         if cutoff     is not None: rval = asReal(cutoff)             # <<<<<<<<<<<<<<
@@ -23439,20 +24684,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_34setBalance(struct PySlepcEPSOb
   __pyx_t_1 = (__pyx_v_cutoff != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_cutoff); if (unlikely(__pyx_t_5 == -1.0 && PyErr_Occurred())) __PYX_ERR(13, 504, __pyx_L1_error)
+    __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_cutoff); if (unlikely(__pyx_t_5 == ((PetscReal)-1.0) && PyErr_Occurred())) __PYX_ERR(14, 503, __pyx_L1_error)
     __pyx_v_rval = __pyx_t_5;
   }
 
-  /* "SLEPc/EPS.pyx":505
+  /* "SLEPc/EPS.pyx":504
  *         if iterations is not None: ival = asInt(iterations)
  *         if cutoff     is not None: rval = asReal(cutoff)
  *         CHKERR( EPSSetBalance(self.eps, val, ival, rval) )             # <<<<<<<<<<<<<<
  * 
  *     def getExtraction(self):
  */
-  __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetBalance(__pyx_v_self->eps, __pyx_v_val, __pyx_v_ival, __pyx_v_rval)); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(13, 505, __pyx_L1_error)
+  __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetBalance(__pyx_v_self->eps, __pyx_v_val, __pyx_v_ival, __pyx_v_rval)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(14, 504, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":485
+  /* "SLEPc/EPS.pyx":484
  *         return (val, toInt(ival), toReal(rval))
  * 
  *     def setBalance(self, balance=None, iterations=None, cutoff=None):             # <<<<<<<<<<<<<<
@@ -23472,7 +24717,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_34setBalance(struct PySlepcEPSOb
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":507
+/* "SLEPc/EPS.pyx":506
  *         CHKERR( EPSSetBalance(self.eps, val, ival, rval) )
  * 
  *     def getExtraction(self):             # <<<<<<<<<<<<<<
@@ -23505,7 +24750,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_36getExtraction(struct PySlepcEP
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getExtraction", 0);
 
-  /* "SLEPc/EPS.pyx":516
+  /* "SLEPc/EPS.pyx":515
  *                     The method of extraction.
  *         """
  *         cdef SlepcEPSExtraction val = EPS_RITZ             # <<<<<<<<<<<<<<
@@ -23514,16 +24759,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_36getExtraction(struct PySlepcEP
  */
   __pyx_v_val = EPS_RITZ;
 
-  /* "SLEPc/EPS.pyx":517
+  /* "SLEPc/EPS.pyx":516
  *         """
  *         cdef SlepcEPSExtraction val = EPS_RITZ
  *         CHKERR( EPSGetExtraction(self.eps, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetExtraction(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 517, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetExtraction(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 516, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":518
+  /* "SLEPc/EPS.pyx":517
  *         cdef SlepcEPSExtraction val = EPS_RITZ
  *         CHKERR( EPSGetExtraction(self.eps, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -23531,13 +24776,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_36getExtraction(struct PySlepcEP
  *     def setExtraction(self, extraction):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_EPSExtraction(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 518, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_EPSExtraction(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 517, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":507
+  /* "SLEPc/EPS.pyx":506
  *         CHKERR( EPSSetBalance(self.eps, val, ival, rval) )
  * 
  *     def getExtraction(self):             # <<<<<<<<<<<<<<
@@ -23556,7 +24801,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_36getExtraction(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":520
+/* "SLEPc/EPS.pyx":519
  *         return val
  * 
  *     def setExtraction(self, extraction):             # <<<<<<<<<<<<<<
@@ -23580,6 +24825,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_39setExtraction(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -23590,7 +24836,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_39setExtraction(PyObject *__pyx_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setExtraction") < 0)) __PYX_ERR(13, 520, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setExtraction") < 0)) __PYX_ERR(14, 519, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -23601,7 +24847,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_39setExtraction(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setExtraction", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 520, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setExtraction", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 519, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setExtraction", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -23622,26 +24868,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_38setExtraction(struct PySlepcEP
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setExtraction", 0);
 
-  /* "SLEPc/EPS.pyx":540
+  /* "SLEPc/EPS.pyx":539
  *         *target*. See `setTarget()`.
  *         """
  *         cdef SlepcEPSExtraction val = extraction             # <<<<<<<<<<<<<<
  *         CHKERR( EPSSetExtraction(self.eps, val) )
  * 
  */
-  __pyx_t_1 = ((EPSExtraction)__Pyx_PyInt_As_EPSExtraction(__pyx_v_extraction)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 540, __pyx_L1_error)
+  __pyx_t_1 = ((EPSExtraction)__Pyx_PyInt_As_EPSExtraction(__pyx_v_extraction)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 539, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":541
+  /* "SLEPc/EPS.pyx":540
  *         """
  *         cdef SlepcEPSExtraction val = extraction
  *         CHKERR( EPSSetExtraction(self.eps, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getWhichEigenpairs(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetExtraction(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 541, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetExtraction(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 540, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":520
+  /* "SLEPc/EPS.pyx":519
  *         return val
  * 
  *     def setExtraction(self, extraction):             # <<<<<<<<<<<<<<
@@ -23661,7 +24907,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_38setExtraction(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":543
+/* "SLEPc/EPS.pyx":542
  *         CHKERR( EPSSetExtraction(self.eps, val) )
  * 
  *     def getWhichEigenpairs(self):             # <<<<<<<<<<<<<<
@@ -23694,7 +24940,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_40getWhichEigenpairs(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getWhichEigenpairs", 0);
 
-  /* "SLEPc/EPS.pyx":552
+  /* "SLEPc/EPS.pyx":551
  *                The portion of the spectrum to be sought by the solver.
  *         """
  *         cdef SlepcEPSWhich val = EPS_LARGEST_MAGNITUDE             # <<<<<<<<<<<<<<
@@ -23703,16 +24949,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_40getWhichEigenpairs(struct PySl
  */
   __pyx_v_val = EPS_LARGEST_MAGNITUDE;
 
-  /* "SLEPc/EPS.pyx":553
+  /* "SLEPc/EPS.pyx":552
  *         """
  *         cdef SlepcEPSWhich val = EPS_LARGEST_MAGNITUDE
  *         CHKERR( EPSGetWhichEigenpairs(self.eps, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetWhichEigenpairs(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 553, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetWhichEigenpairs(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 552, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":554
+  /* "SLEPc/EPS.pyx":553
  *         cdef SlepcEPSWhich val = EPS_LARGEST_MAGNITUDE
  *         CHKERR( EPSGetWhichEigenpairs(self.eps, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -23720,13 +24966,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_40getWhichEigenpairs(struct PySl
  *     def setWhichEigenpairs(self, which):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_EPSWhich(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 554, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_EPSWhich(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 553, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":543
+  /* "SLEPc/EPS.pyx":542
  *         CHKERR( EPSSetExtraction(self.eps, val) )
  * 
  *     def getWhichEigenpairs(self):             # <<<<<<<<<<<<<<
@@ -23745,7 +24991,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_40getWhichEigenpairs(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":556
+/* "SLEPc/EPS.pyx":555
  *         return val
  * 
  *     def setWhichEigenpairs(self, which):             # <<<<<<<<<<<<<<
@@ -23769,6 +25015,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_43setWhichEigenpairs(PyObject *_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -23779,7 +25026,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_43setWhichEigenpairs(PyObject *_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setWhichEigenpairs") < 0)) __PYX_ERR(13, 556, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setWhichEigenpairs") < 0)) __PYX_ERR(14, 555, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -23790,7 +25037,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_43setWhichEigenpairs(PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setWhichEigenpairs", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 556, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setWhichEigenpairs", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 555, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setWhichEigenpairs", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -23811,26 +25058,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_42setWhichEigenpairs(struct PySl
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setWhichEigenpairs", 0);
 
-  /* "SLEPc/EPS.pyx":574
+  /* "SLEPc/EPS.pyx":573
  *         imaginary part for eigenvalue selection.
  *         """
  *         cdef SlepcEPSWhich val = which             # <<<<<<<<<<<<<<
  *         CHKERR( EPSSetWhichEigenpairs(self.eps, val) )
  * 
  */
-  __pyx_t_1 = ((EPSWhich)__Pyx_PyInt_As_EPSWhich(__pyx_v_which)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 574, __pyx_L1_error)
+  __pyx_t_1 = ((EPSWhich)__Pyx_PyInt_As_EPSWhich(__pyx_v_which)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 573, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":575
+  /* "SLEPc/EPS.pyx":574
  *         """
  *         cdef SlepcEPSWhich val = which
  *         CHKERR( EPSSetWhichEigenpairs(self.eps, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getTarget(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetWhichEigenpairs(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 575, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetWhichEigenpairs(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 574, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":556
+  /* "SLEPc/EPS.pyx":555
  *         return val
  * 
  *     def setWhichEigenpairs(self, which):             # <<<<<<<<<<<<<<
@@ -23850,7 +25097,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_42setWhichEigenpairs(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":577
+/* "SLEPc/EPS.pyx":576
  *         CHKERR( EPSSetWhichEigenpairs(self.eps, val) )
  * 
  *     def getTarget(self):             # <<<<<<<<<<<<<<
@@ -23883,7 +25130,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_44getTarget(struct PySlepcEPSObj
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getTarget", 0);
 
-  /* "SLEPc/EPS.pyx":590
+  /* "SLEPc/EPS.pyx":589
  *         If the target was not set by the user, then zero is returned.
  *         """
  *         cdef PetscScalar sval = 0             # <<<<<<<<<<<<<<
@@ -23892,16 +25139,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_44getTarget(struct PySlepcEPSObj
  */
   __pyx_v_sval = 0.0;
 
-  /* "SLEPc/EPS.pyx":591
+  /* "SLEPc/EPS.pyx":590
  *         """
  *         cdef PetscScalar sval = 0
  *         CHKERR( EPSGetTarget(self.eps, &sval) )             # <<<<<<<<<<<<<<
  *         return toScalar(sval)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetTarget(__pyx_v_self->eps, (&__pyx_v_sval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 591, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetTarget(__pyx_v_self->eps, (&__pyx_v_sval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 590, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":592
+  /* "SLEPc/EPS.pyx":591
  *         cdef PetscScalar sval = 0
  *         CHKERR( EPSGetTarget(self.eps, &sval) )
  *         return toScalar(sval)             # <<<<<<<<<<<<<<
@@ -23909,13 +25156,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_44getTarget(struct PySlepcEPSObj
  *     def setTarget(self, target):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 592, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 591, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":577
+  /* "SLEPc/EPS.pyx":576
  *         CHKERR( EPSSetWhichEigenpairs(self.eps, val) )
  * 
  *     def getTarget(self):             # <<<<<<<<<<<<<<
@@ -23934,7 +25181,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_44getTarget(struct PySlepcEPSObj
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":594
+/* "SLEPc/EPS.pyx":593
  *         return toScalar(sval)
  * 
  *     def setTarget(self, target):             # <<<<<<<<<<<<<<
@@ -23958,6 +25205,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_47setTarget(PyObject *__pyx_v_se
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -23968,7 +25216,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_47setTarget(PyObject *__pyx_v_se
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTarget") < 0)) __PYX_ERR(13, 594, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTarget") < 0)) __PYX_ERR(14, 593, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -23979,7 +25227,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_47setTarget(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setTarget", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 594, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setTarget", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 593, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setTarget", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -24000,26 +25248,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_46setTarget(struct PySlepcEPSObj
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setTarget", 0);
 
-  /* "SLEPc/EPS.pyx":609
+  /* "SLEPc/EPS.pyx":608
  *         `setWhichEigenpairs()`.
  *         """
  *         cdef PetscScalar sval = asScalar(target)             # <<<<<<<<<<<<<<
  *         CHKERR( EPSSetTarget(self.eps, sval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_target); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 609, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_target); if (unlikely(__pyx_t_1 == ((PetscScalar)((PetscScalar)(-1.0))) && PyErr_Occurred())) __PYX_ERR(14, 608, __pyx_L1_error)
   __pyx_v_sval = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":610
+  /* "SLEPc/EPS.pyx":609
  *         """
  *         cdef PetscScalar sval = asScalar(target)
  *         CHKERR( EPSSetTarget(self.eps, sval) )             # <<<<<<<<<<<<<<
  * 
  *     def getInterval(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetTarget(__pyx_v_self->eps, __pyx_v_sval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 610, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetTarget(__pyx_v_self->eps, __pyx_v_sval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 609, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":594
+  /* "SLEPc/EPS.pyx":593
  *         return toScalar(sval)
  * 
  *     def setTarget(self, target):             # <<<<<<<<<<<<<<
@@ -24039,7 +25287,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_46setTarget(struct PySlepcEPSObj
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":612
+/* "SLEPc/EPS.pyx":611
  *         CHKERR( EPSSetTarget(self.eps, sval) )
  * 
  *     def getInterval(self):             # <<<<<<<<<<<<<<
@@ -24075,7 +25323,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_48getInterval(struct PySlepcEPSO
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getInterval", 0);
 
-  /* "SLEPc/EPS.pyx":627
+  /* "SLEPc/EPS.pyx":626
  *         If the interval was not set by the user, then zeros are returned.
  *         """
  *         cdef PetscReal inta = 0             # <<<<<<<<<<<<<<
@@ -24084,7 +25332,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_48getInterval(struct PySlepcEPSO
  */
   __pyx_v_inta = 0.0;
 
-  /* "SLEPc/EPS.pyx":628
+  /* "SLEPc/EPS.pyx":627
  *         """
  *         cdef PetscReal inta = 0
  *         cdef PetscReal intb = 0             # <<<<<<<<<<<<<<
@@ -24093,16 +25341,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_48getInterval(struct PySlepcEPSO
  */
   __pyx_v_intb = 0.0;
 
-  /* "SLEPc/EPS.pyx":629
+  /* "SLEPc/EPS.pyx":628
  *         cdef PetscReal inta = 0
  *         cdef PetscReal intb = 0
  *         CHKERR( EPSGetInterval(self.eps, &inta, &intb) )             # <<<<<<<<<<<<<<
  *         return (toReal(inta), toReal(intb))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetInterval(__pyx_v_self->eps, (&__pyx_v_inta), (&__pyx_v_intb))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 629, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetInterval(__pyx_v_self->eps, (&__pyx_v_inta), (&__pyx_v_intb))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 628, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":630
+  /* "SLEPc/EPS.pyx":629
  *         cdef PetscReal intb = 0
  *         CHKERR( EPSGetInterval(self.eps, &inta, &intb) )
  *         return (toReal(inta), toReal(intb))             # <<<<<<<<<<<<<<
@@ -24110,11 +25358,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_48getInterval(struct PySlepcEPSO
  *     def setInterval(self, inta, intb):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_inta); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 630, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_inta); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 629, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_intb); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 630, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_intb); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 629, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 630, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 629, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
@@ -24126,7 +25374,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_48getInterval(struct PySlepcEPSO
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":612
+  /* "SLEPc/EPS.pyx":611
  *         CHKERR( EPSSetTarget(self.eps, sval) )
  * 
  *     def getInterval(self):             # <<<<<<<<<<<<<<
@@ -24147,7 +25395,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_48getInterval(struct PySlepcEPSO
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":632
+/* "SLEPc/EPS.pyx":631
  *         return (toReal(inta), toReal(intb))
  * 
  *     def setInterval(self, inta, intb):             # <<<<<<<<<<<<<<
@@ -24172,7 +25420,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_51setInterval(PyObject *__pyx_v_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -24181,14 +25431,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_51setInterval(PyObject *__pyx_v_
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_inta)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_intb)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setInterval", 1, 2, 2, 1); __PYX_ERR(13, 632, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("setInterval", 1, 2, 2, 1); __PYX_ERR(14, 631, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setInterval") < 0)) __PYX_ERR(13, 632, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setInterval") < 0)) __PYX_ERR(14, 631, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -24201,7 +25452,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_51setInterval(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setInterval", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 632, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setInterval", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 631, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setInterval", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -24223,36 +25474,36 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_50setInterval(struct PySlepcEPSO
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setInterval", 0);
 
-  /* "SLEPc/EPS.pyx":651
+  /* "SLEPc/EPS.pyx":650
  *         `setWhichEigenpairs()`.
  *         """
  *         cdef PetscReal rval1 = asReal(inta)             # <<<<<<<<<<<<<<
  *         cdef PetscReal rval2 = asReal(intb)
  *         CHKERR( EPSSetInterval(self.eps, rval1, rval2) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_inta); if (unlikely(__pyx_t_1 == -1.0 && PyErr_Occurred())) __PYX_ERR(13, 651, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_inta); if (unlikely(__pyx_t_1 == ((PetscReal)-1.0) && PyErr_Occurred())) __PYX_ERR(14, 650, __pyx_L1_error)
   __pyx_v_rval1 = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":652
+  /* "SLEPc/EPS.pyx":651
  *         """
  *         cdef PetscReal rval1 = asReal(inta)
  *         cdef PetscReal rval2 = asReal(intb)             # <<<<<<<<<<<<<<
  *         CHKERR( EPSSetInterval(self.eps, rval1, rval2) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_intb); if (unlikely(__pyx_t_1 == -1.0 && PyErr_Occurred())) __PYX_ERR(13, 652, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_intb); if (unlikely(__pyx_t_1 == ((PetscReal)-1.0) && PyErr_Occurred())) __PYX_ERR(14, 651, __pyx_L1_error)
   __pyx_v_rval2 = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":653
+  /* "SLEPc/EPS.pyx":652
  *         cdef PetscReal rval1 = asReal(inta)
  *         cdef PetscReal rval2 = asReal(intb)
  *         CHKERR( EPSSetInterval(self.eps, rval1, rval2) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetInterval(__pyx_v_self->eps, __pyx_v_rval1, __pyx_v_rval2)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 653, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetInterval(__pyx_v_self->eps, __pyx_v_rval1, __pyx_v_rval2)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 652, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":632
+  /* "SLEPc/EPS.pyx":631
  *         return (toReal(inta), toReal(intb))
  * 
  *     def setInterval(self, inta, intb):             # <<<<<<<<<<<<<<
@@ -24272,7 +25523,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_50setInterval(struct PySlepcEPSO
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":657
+/* "SLEPc/EPS.pyx":656
  *     #
  * 
  *     def getTolerances(self):             # <<<<<<<<<<<<<<
@@ -24308,7 +25559,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_52getTolerances(struct PySlepcEP
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getTolerances", 0);
 
-  /* "SLEPc/EPS.pyx":669
+  /* "SLEPc/EPS.pyx":668
  *              The maximum number of iterations
  *         """
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -24317,7 +25568,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_52getTolerances(struct PySlepcEP
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/EPS.pyx":670
+  /* "SLEPc/EPS.pyx":669
  *         """
  *         cdef PetscReal rval = 0
  *         cdef PetscInt  ival = 0             # <<<<<<<<<<<<<<
@@ -24326,16 +25577,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_52getTolerances(struct PySlepcEP
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/EPS.pyx":671
+  /* "SLEPc/EPS.pyx":670
  *         cdef PetscReal rval = 0
  *         cdef PetscInt  ival = 0
  *         CHKERR( EPSGetTolerances(self.eps, &rval, &ival) )             # <<<<<<<<<<<<<<
  *         return (toReal(rval), toInt(ival))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetTolerances(__pyx_v_self->eps, (&__pyx_v_rval), (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 671, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetTolerances(__pyx_v_self->eps, (&__pyx_v_rval), (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 670, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":672
+  /* "SLEPc/EPS.pyx":671
  *         cdef PetscInt  ival = 0
  *         CHKERR( EPSGetTolerances(self.eps, &rval, &ival) )
  *         return (toReal(rval), toInt(ival))             # <<<<<<<<<<<<<<
@@ -24343,11 +25594,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_52getTolerances(struct PySlepcEP
  *     def setTolerances(self, tol=None, max_it=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 672, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 671, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 672, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 671, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 672, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 671, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
@@ -24359,7 +25610,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_52getTolerances(struct PySlepcEP
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":657
+  /* "SLEPc/EPS.pyx":656
  *     #
  * 
  *     def getTolerances(self):             # <<<<<<<<<<<<<<
@@ -24380,7 +25631,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_52getTolerances(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":674
+/* "SLEPc/EPS.pyx":673
  *         return (toReal(rval), toInt(ival))
  * 
  *     def setTolerances(self, tol=None, max_it=None):             # <<<<<<<<<<<<<<
@@ -24407,7 +25658,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_55setTolerances(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -24418,6 +25671,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_55setTolerances(PyObject *__pyx_
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_tol);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_max_it);
@@ -24425,12 +25679,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_55setTolerances(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTolerances") < 0)) __PYX_ERR(13, 674, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTolerances") < 0)) __PYX_ERR(14, 673, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -24440,7 +25696,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_55setTolerances(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setTolerances", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 674, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setTolerances", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 673, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setTolerances", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -24465,7 +25721,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_54setTolerances(struct PySlepcEP
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("setTolerances", 0);
 
-  /* "SLEPc/EPS.pyx":691
+  /* "SLEPc/EPS.pyx":690
  *         which is dependent on the solution method.
  *         """
  *         cdef PetscReal rval = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -24474,7 +25730,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_54setTolerances(struct PySlepcEP
  */
   __pyx_v_rval = PETSC_DEFAULT;
 
-  /* "SLEPc/EPS.pyx":692
+  /* "SLEPc/EPS.pyx":691
  *         """
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         cdef PetscInt  ival = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -24483,7 +25739,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_54setTolerances(struct PySlepcEP
  */
   __pyx_v_ival = PETSC_DEFAULT;
 
-  /* "SLEPc/EPS.pyx":693
+  /* "SLEPc/EPS.pyx":692
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         cdef PetscInt  ival = PETSC_DEFAULT
  *         if tol    is not None: rval = asReal(tol)             # <<<<<<<<<<<<<<
@@ -24493,11 +25749,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_54setTolerances(struct PySlepcEP
   __pyx_t_1 = (__pyx_v_tol != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_tol); if (unlikely(__pyx_t_3 == -1.0 && PyErr_Occurred())) __PYX_ERR(13, 693, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_tol); if (unlikely(__pyx_t_3 == ((PetscReal)-1.0) && PyErr_Occurred())) __PYX_ERR(14, 692, __pyx_L1_error)
     __pyx_v_rval = __pyx_t_3;
   }
 
-  /* "SLEPc/EPS.pyx":694
+  /* "SLEPc/EPS.pyx":693
  *         cdef PetscInt  ival = PETSC_DEFAULT
  *         if tol    is not None: rval = asReal(tol)
  *         if max_it is not None: ival = asInt(max_it)             # <<<<<<<<<<<<<<
@@ -24507,20 +25763,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_54setTolerances(struct PySlepcEP
   __pyx_t_2 = (__pyx_v_max_it != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_max_it); if (unlikely(__pyx_t_4 == -1L && PyErr_Occurred())) __PYX_ERR(13, 694, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_max_it); if (unlikely(__pyx_t_4 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(14, 693, __pyx_L1_error)
     __pyx_v_ival = __pyx_t_4;
   }
 
-  /* "SLEPc/EPS.pyx":695
+  /* "SLEPc/EPS.pyx":694
  *         if tol    is not None: rval = asReal(tol)
  *         if max_it is not None: ival = asInt(max_it)
  *         CHKERR( EPSSetTolerances(self.eps, rval, ival) )             # <<<<<<<<<<<<<<
  * 
  *     def getConvergenceTest(self):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetTolerances(__pyx_v_self->eps, __pyx_v_rval, __pyx_v_ival)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(13, 695, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetTolerances(__pyx_v_self->eps, __pyx_v_rval, __pyx_v_ival)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 694, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":674
+  /* "SLEPc/EPS.pyx":673
  *         return (toReal(rval), toInt(ival))
  * 
  *     def setTolerances(self, tol=None, max_it=None):             # <<<<<<<<<<<<<<
@@ -24540,7 +25796,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_54setTolerances(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":697
+/* "SLEPc/EPS.pyx":696
  *         CHKERR( EPSSetTolerances(self.eps, rval, ival) )
  * 
  *     def getConvergenceTest(self):             # <<<<<<<<<<<<<<
@@ -24573,7 +25829,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_56getConvergenceTest(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getConvergenceTest", 0);
 
-  /* "SLEPc/EPS.pyx":708
+  /* "SLEPc/EPS.pyx":707
  *             used in the convergence test.
  *         """
  *         cdef SlepcEPSConv conv = EPS_CONV_REL             # <<<<<<<<<<<<<<
@@ -24582,16 +25838,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_56getConvergenceTest(struct PySl
  */
   __pyx_v_conv = EPS_CONV_REL;
 
-  /* "SLEPc/EPS.pyx":709
+  /* "SLEPc/EPS.pyx":708
  *         """
  *         cdef SlepcEPSConv conv = EPS_CONV_REL
  *         CHKERR( EPSGetConvergenceTest(self.eps, &conv) )             # <<<<<<<<<<<<<<
  *         return conv
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetConvergenceTest(__pyx_v_self->eps, (&__pyx_v_conv))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 709, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetConvergenceTest(__pyx_v_self->eps, (&__pyx_v_conv))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 708, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":710
+  /* "SLEPc/EPS.pyx":709
  *         cdef SlepcEPSConv conv = EPS_CONV_REL
  *         CHKERR( EPSGetConvergenceTest(self.eps, &conv) )
  *         return conv             # <<<<<<<<<<<<<<
@@ -24599,13 +25855,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_56getConvergenceTest(struct PySl
  *     def setConvergenceTest(self, conv):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_EPSConv(__pyx_v_conv); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 710, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_EPSConv(__pyx_v_conv); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 709, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":697
+  /* "SLEPc/EPS.pyx":696
  *         CHKERR( EPSSetTolerances(self.eps, rval, ival) )
  * 
  *     def getConvergenceTest(self):             # <<<<<<<<<<<<<<
@@ -24624,7 +25880,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_56getConvergenceTest(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":712
+/* "SLEPc/EPS.pyx":711
  *         return conv
  * 
  *     def setConvergenceTest(self, conv):             # <<<<<<<<<<<<<<
@@ -24648,6 +25904,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_59setConvergenceTest(PyObject *_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -24658,7 +25915,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_59setConvergenceTest(PyObject *_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setConvergenceTest") < 0)) __PYX_ERR(13, 712, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setConvergenceTest") < 0)) __PYX_ERR(14, 711, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -24669,7 +25926,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_59setConvergenceTest(PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setConvergenceTest", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 712, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setConvergenceTest", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 711, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setConvergenceTest", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -24690,26 +25947,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_58setConvergenceTest(struct PySl
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setConvergenceTest", 0);
 
-  /* "SLEPc/EPS.pyx":723
+  /* "SLEPc/EPS.pyx":722
  *             used in the convergence test.
  *         """
  *         cdef SlepcEPSConv tconv = conv             # <<<<<<<<<<<<<<
  *         CHKERR( EPSSetConvergenceTest(self.eps, tconv) )
  * 
  */
-  __pyx_t_1 = ((EPSConv)__Pyx_PyInt_As_EPSConv(__pyx_v_conv)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 723, __pyx_L1_error)
+  __pyx_t_1 = ((EPSConv)__Pyx_PyInt_As_EPSConv(__pyx_v_conv)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 722, __pyx_L1_error)
   __pyx_v_tconv = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":724
+  /* "SLEPc/EPS.pyx":723
  *         """
  *         cdef SlepcEPSConv tconv = conv
  *         CHKERR( EPSSetConvergenceTest(self.eps, tconv) )             # <<<<<<<<<<<<<<
  * 
  *     def getTrueResidual(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetConvergenceTest(__pyx_v_self->eps, __pyx_v_tconv)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 724, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetConvergenceTest(__pyx_v_self->eps, __pyx_v_tconv)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 723, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":712
+  /* "SLEPc/EPS.pyx":711
  *         return conv
  * 
  *     def setConvergenceTest(self, conv):             # <<<<<<<<<<<<<<
@@ -24729,7 +25986,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_58setConvergenceTest(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":726
+/* "SLEPc/EPS.pyx":725
  *         CHKERR( EPSSetConvergenceTest(self.eps, tconv) )
  * 
  *     def getTrueResidual(self):             # <<<<<<<<<<<<<<
@@ -24762,7 +26019,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_60getTrueResidual(struct PySlepc
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getTrueResidual", 0);
 
-  /* "SLEPc/EPS.pyx":736
+  /* "SLEPc/EPS.pyx":735
  *             Whether the solver compute all residuals or not.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -24771,16 +26028,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_60getTrueResidual(struct PySlepc
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/EPS.pyx":737
+  /* "SLEPc/EPS.pyx":736
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSGetTrueResidual(self.eps, &tval) )             # <<<<<<<<<<<<<<
  *         return <bint> tval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetTrueResidual(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 737, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetTrueResidual(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 736, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":738
+  /* "SLEPc/EPS.pyx":737
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSGetTrueResidual(self.eps, &tval) )
  *         return <bint> tval             # <<<<<<<<<<<<<<
@@ -24788,13 +26045,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_60getTrueResidual(struct PySlepc
  *     def setTrueResidual(self, trueres):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 738, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 737, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":726
+  /* "SLEPc/EPS.pyx":725
  *         CHKERR( EPSSetConvergenceTest(self.eps, tconv) )
  * 
  *     def getTrueResidual(self):             # <<<<<<<<<<<<<<
@@ -24813,7 +26070,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_60getTrueResidual(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":740
+/* "SLEPc/EPS.pyx":739
  *         return <bint> tval
  * 
  *     def setTrueResidual(self, trueres):             # <<<<<<<<<<<<<<
@@ -24837,6 +26094,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_63setTrueResidual(PyObject *__py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -24847,7 +26105,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_63setTrueResidual(PyObject *__py
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTrueResidual") < 0)) __PYX_ERR(13, 740, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTrueResidual") < 0)) __PYX_ERR(14, 739, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -24858,7 +26116,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_63setTrueResidual(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setTrueResidual", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 740, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setTrueResidual", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 739, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setTrueResidual", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -24879,26 +26137,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_62setTrueResidual(struct PySlepc
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setTrueResidual", 0);
 
-  /* "SLEPc/EPS.pyx":750
+  /* "SLEPc/EPS.pyx":749
  *             Whether compute the true residual or not.
  *         """
  *         cdef PetscBool tval = trueres             # <<<<<<<<<<<<<<
  *         CHKERR( EPSSetTrueResidual(self.eps, tval) )
  * 
  */
-  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_trueres)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 750, __pyx_L1_error)
+  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_trueres)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 749, __pyx_L1_error)
   __pyx_v_tval = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":751
+  /* "SLEPc/EPS.pyx":750
  *         """
  *         cdef PetscBool tval = trueres
  *         CHKERR( EPSSetTrueResidual(self.eps, tval) )             # <<<<<<<<<<<<<<
  * 
  *     def getTrackAll(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetTrueResidual(__pyx_v_self->eps, __pyx_v_tval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 751, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetTrueResidual(__pyx_v_self->eps, __pyx_v_tval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 750, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":740
+  /* "SLEPc/EPS.pyx":739
  *         return <bint> tval
  * 
  *     def setTrueResidual(self, trueres):             # <<<<<<<<<<<<<<
@@ -24918,7 +26176,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_62setTrueResidual(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":753
+/* "SLEPc/EPS.pyx":752
  *         CHKERR( EPSSetTrueResidual(self.eps, tval) )
  * 
  *     def getTrackAll(self):             # <<<<<<<<<<<<<<
@@ -24951,7 +26209,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_64getTrackAll(struct PySlepcEPSO
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getTrackAll", 0);
 
-  /* "SLEPc/EPS.pyx":763
+  /* "SLEPc/EPS.pyx":762
  *             Whether the solver compute all residuals or not.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -24960,16 +26218,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_64getTrackAll(struct PySlepcEPSO
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/EPS.pyx":764
+  /* "SLEPc/EPS.pyx":763
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSGetTrackAll(self.eps, &tval) )             # <<<<<<<<<<<<<<
  *         return <bint> tval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetTrackAll(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 764, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetTrackAll(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 763, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":765
+  /* "SLEPc/EPS.pyx":764
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSGetTrackAll(self.eps, &tval) )
  *         return <bint> tval             # <<<<<<<<<<<<<<
@@ -24977,13 +26235,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_64getTrackAll(struct PySlepcEPSO
  *     def setTrackAll(self, trackall):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 765, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 764, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":753
+  /* "SLEPc/EPS.pyx":752
  *         CHKERR( EPSSetTrueResidual(self.eps, tval) )
  * 
  *     def getTrackAll(self):             # <<<<<<<<<<<<<<
@@ -25002,7 +26260,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_64getTrackAll(struct PySlepcEPSO
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":767
+/* "SLEPc/EPS.pyx":766
  *         return <bint> tval
  * 
  *     def setTrackAll(self, trackall):             # <<<<<<<<<<<<<<
@@ -25026,6 +26284,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_67setTrackAll(PyObject *__pyx_v_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -25036,7 +26295,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_67setTrackAll(PyObject *__pyx_v_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTrackAll") < 0)) __PYX_ERR(13, 767, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTrackAll") < 0)) __PYX_ERR(14, 766, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -25047,7 +26306,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_67setTrackAll(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setTrackAll", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 767, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setTrackAll", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 766, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setTrackAll", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -25068,26 +26327,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_66setTrackAll(struct PySlepcEPSO
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setTrackAll", 0);
 
-  /* "SLEPc/EPS.pyx":777
+  /* "SLEPc/EPS.pyx":776
  *             Whether compute all residuals or not.
  *         """
  *         cdef PetscBool tval = trackall             # <<<<<<<<<<<<<<
  *         CHKERR( EPSSetTrackAll(self.eps, tval) )
  * 
  */
-  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_trackall)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 777, __pyx_L1_error)
+  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_trackall)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 776, __pyx_L1_error)
   __pyx_v_tval = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":778
+  /* "SLEPc/EPS.pyx":777
  *         """
  *         cdef PetscBool tval = trackall
  *         CHKERR( EPSSetTrackAll(self.eps, tval) )             # <<<<<<<<<<<<<<
  * 
  *     def getDimensions(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetTrackAll(__pyx_v_self->eps, __pyx_v_tval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 778, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetTrackAll(__pyx_v_self->eps, __pyx_v_tval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 777, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":767
+  /* "SLEPc/EPS.pyx":766
  *         return <bint> tval
  * 
  *     def setTrackAll(self, trackall):             # <<<<<<<<<<<<<<
@@ -25107,7 +26366,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_66setTrackAll(struct PySlepcEPSO
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":780
+/* "SLEPc/EPS.pyx":779
  *         CHKERR( EPSSetTrackAll(self.eps, tval) )
  * 
  *     def getDimensions(self):             # <<<<<<<<<<<<<<
@@ -25145,7 +26404,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_68getDimensions(struct PySlepcEP
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("getDimensions", 0);
 
-  /* "SLEPc/EPS.pyx":795
+  /* "SLEPc/EPS.pyx":794
  *              Maximum dimension allowed for the projected problem.
  *         """
  *         cdef PetscInt ival1 = 0             # <<<<<<<<<<<<<<
@@ -25154,7 +26413,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_68getDimensions(struct PySlepcEP
  */
   __pyx_v_ival1 = 0;
 
-  /* "SLEPc/EPS.pyx":796
+  /* "SLEPc/EPS.pyx":795
  *         """
  *         cdef PetscInt ival1 = 0
  *         cdef PetscInt ival2 = 0             # <<<<<<<<<<<<<<
@@ -25163,7 +26422,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_68getDimensions(struct PySlepcEP
  */
   __pyx_v_ival2 = 0;
 
-  /* "SLEPc/EPS.pyx":797
+  /* "SLEPc/EPS.pyx":796
  *         cdef PetscInt ival1 = 0
  *         cdef PetscInt ival2 = 0
  *         cdef PetscInt ival3 = 0             # <<<<<<<<<<<<<<
@@ -25172,16 +26431,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_68getDimensions(struct PySlepcEP
  */
   __pyx_v_ival3 = 0;
 
-  /* "SLEPc/EPS.pyx":798
+  /* "SLEPc/EPS.pyx":797
  *         cdef PetscInt ival2 = 0
  *         cdef PetscInt ival3 = 0
  *         CHKERR( EPSGetDimensions(self.eps, &ival1, &ival2, &ival3) )             # <<<<<<<<<<<<<<
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetDimensions(__pyx_v_self->eps, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_ival3))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 798, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetDimensions(__pyx_v_self->eps, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_ival3))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 797, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":799
+  /* "SLEPc/EPS.pyx":798
  *         cdef PetscInt ival3 = 0
  *         CHKERR( EPSGetDimensions(self.eps, &ival1, &ival2, &ival3) )
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))             # <<<<<<<<<<<<<<
@@ -25189,13 +26448,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_68getDimensions(struct PySlepcEP
  *     def setDimensions(self, nev=None, ncv=None, mpd=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 799, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 799, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 799, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival3); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 799, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
@@ -25210,7 +26469,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_68getDimensions(struct PySlepcEP
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":780
+  /* "SLEPc/EPS.pyx":779
  *         CHKERR( EPSSetTrackAll(self.eps, tval) )
  * 
  *     def getDimensions(self):             # <<<<<<<<<<<<<<
@@ -25232,7 +26491,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_68getDimensions(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":801
+/* "SLEPc/EPS.pyx":800
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  *     def setDimensions(self, nev=None, ncv=None, mpd=None):             # <<<<<<<<<<<<<<
@@ -25261,8 +26520,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_71setDimensions(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -25273,11 +26535,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_71setDimensions(PyObject *__pyx_
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nev);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ncv);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mpd);
@@ -25285,13 +26549,16 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_71setDimensions(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDimensions") < 0)) __PYX_ERR(13, 801, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDimensions") < 0)) __PYX_ERR(14, 800, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -25302,7 +26569,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_71setDimensions(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setDimensions", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 801, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setDimensions", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 800, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setDimensions", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -25327,7 +26594,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_70setDimensions(struct PySlepcEP
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("setDimensions", 0);
 
-  /* "SLEPc/EPS.pyx":835
+  /* "SLEPc/EPS.pyx":834
  *         smaller value should be used.
  *         """
  *         cdef PetscInt ival1 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -25336,7 +26603,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_70setDimensions(struct PySlepcEP
  */
   __pyx_v_ival1 = PETSC_DEFAULT;
 
-  /* "SLEPc/EPS.pyx":836
+  /* "SLEPc/EPS.pyx":835
  *         """
  *         cdef PetscInt ival1 = PETSC_DEFAULT
  *         cdef PetscInt ival2 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -25345,7 +26612,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_70setDimensions(struct PySlepcEP
  */
   __pyx_v_ival2 = PETSC_DEFAULT;
 
-  /* "SLEPc/EPS.pyx":837
+  /* "SLEPc/EPS.pyx":836
  *         cdef PetscInt ival1 = PETSC_DEFAULT
  *         cdef PetscInt ival2 = PETSC_DEFAULT
  *         cdef PetscInt ival3 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -25354,7 +26621,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_70setDimensions(struct PySlepcEP
  */
   __pyx_v_ival3 = PETSC_DEFAULT;
 
-  /* "SLEPc/EPS.pyx":838
+  /* "SLEPc/EPS.pyx":837
  *         cdef PetscInt ival2 = PETSC_DEFAULT
  *         cdef PetscInt ival3 = PETSC_DEFAULT
  *         if nev is not None: ival1 = asInt(nev)             # <<<<<<<<<<<<<<
@@ -25364,11 +26631,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_70setDimensions(struct PySlepcEP
   __pyx_t_1 = (__pyx_v_nev != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_nev); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(13, 838, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_nev); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(14, 837, __pyx_L1_error)
     __pyx_v_ival1 = __pyx_t_3;
   }
 
-  /* "SLEPc/EPS.pyx":839
+  /* "SLEPc/EPS.pyx":838
  *         cdef PetscInt ival3 = PETSC_DEFAULT
  *         if nev is not None: ival1 = asInt(nev)
  *         if ncv is not None: ival2 = asInt(ncv)             # <<<<<<<<<<<<<<
@@ -25378,11 +26645,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_70setDimensions(struct PySlepcEP
   __pyx_t_2 = (__pyx_v_ncv != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_ncv); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(13, 839, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_ncv); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(14, 838, __pyx_L1_error)
     __pyx_v_ival2 = __pyx_t_3;
   }
 
-  /* "SLEPc/EPS.pyx":840
+  /* "SLEPc/EPS.pyx":839
  *         if nev is not None: ival1 = asInt(nev)
  *         if ncv is not None: ival2 = asInt(ncv)
  *         if mpd is not None: ival3 = asInt(mpd)             # <<<<<<<<<<<<<<
@@ -25392,20 +26659,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_70setDimensions(struct PySlepcEP
   __pyx_t_1 = (__pyx_v_mpd != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_mpd); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(13, 840, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_mpd); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(14, 839, __pyx_L1_error)
     __pyx_v_ival3 = __pyx_t_3;
   }
 
-  /* "SLEPc/EPS.pyx":841
+  /* "SLEPc/EPS.pyx":840
  *         if ncv is not None: ival2 = asInt(ncv)
  *         if mpd is not None: ival3 = asInt(mpd)
  *         CHKERR( EPSSetDimensions(self.eps, ival1, ival2, ival3) )             # <<<<<<<<<<<<<<
  * 
  *     def getST(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetDimensions(__pyx_v_self->eps, __pyx_v_ival1, __pyx_v_ival2, __pyx_v_ival3)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(13, 841, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetDimensions(__pyx_v_self->eps, __pyx_v_ival1, __pyx_v_ival2, __pyx_v_ival3)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(14, 840, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":801
+  /* "SLEPc/EPS.pyx":800
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  *     def setDimensions(self, nev=None, ncv=None, mpd=None):             # <<<<<<<<<<<<<<
@@ -25425,7 +26692,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_70setDimensions(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":843
+/* "SLEPc/EPS.pyx":842
  *         CHKERR( EPSSetDimensions(self.eps, ival1, ival2, ival3) )
  * 
  *     def getST(self):             # <<<<<<<<<<<<<<
@@ -25458,28 +26725,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_72getST(struct PySlepcEPSObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getST", 0);
 
-  /* "SLEPc/EPS.pyx":853
+  /* "SLEPc/EPS.pyx":852
  *             The spectral transformation.
  *         """
  *         cdef ST st = ST()             # <<<<<<<<<<<<<<
  *         CHKERR( EPSGetST(self.eps, &st.st) )
  *         PetscINCREF(st.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_ST), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 853, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_ST), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 852, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_st = ((struct PySlepcSTObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":854
+  /* "SLEPc/EPS.pyx":853
  *         """
  *         cdef ST st = ST()
  *         CHKERR( EPSGetST(self.eps, &st.st) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(st.obj)
  *         return st
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetST(__pyx_v_self->eps, (&__pyx_v_st->st))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 854, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetST(__pyx_v_self->eps, (&__pyx_v_st->st))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 853, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":855
+  /* "SLEPc/EPS.pyx":854
  *         cdef ST st = ST()
  *         CHKERR( EPSGetST(self.eps, &st.st) )
  *         PetscINCREF(st.obj)             # <<<<<<<<<<<<<<
@@ -25488,19 +26755,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_72getST(struct PySlepcEPSObject
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_st->__pyx_base.obj);
 
-  /* "SLEPc/EPS.pyx":856
+  /* "SLEPc/EPS.pyx":855
  *         CHKERR( EPSGetST(self.eps, &st.st) )
  *         PetscINCREF(st.obj)
  *         return st             # <<<<<<<<<<<<<<
  * 
- *     def setST(self, ST st not None):
+ *     def setST(self, ST st):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_st));
   __pyx_r = ((PyObject *)__pyx_v_st);
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":843
+  /* "SLEPc/EPS.pyx":842
  *         CHKERR( EPSSetDimensions(self.eps, ival1, ival2, ival3) )
  * 
  *     def getST(self):             # <<<<<<<<<<<<<<
@@ -25520,10 +26787,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_72getST(struct PySlepcEPSObject
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":858
+/* "SLEPc/EPS.pyx":857
  *         return st
  * 
- *     def setST(self, ST st not None):             # <<<<<<<<<<<<<<
+ *     def setST(self, ST st):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a spectral transformation object to the
  */
@@ -25544,6 +26811,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_75setST(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -25554,7 +26822,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_75setST(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setST") < 0)) __PYX_ERR(13, 858, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setST") < 0)) __PYX_ERR(14, 857, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -25565,13 +26833,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_75setST(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setST", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 858, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setST", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 857, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setST", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_st), __pyx_ptype_8slepc4py_5SLEPc_ST, 0, "st", 0))) __PYX_ERR(13, 858, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_st), __pyx_ptype_8slepc4py_5SLEPc_ST, 0, "st", 0))) __PYX_ERR(14, 857, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_74setST(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_st);
 
   /* function exit code */
@@ -25589,19 +26857,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_74setST(struct PySlepcEPSObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setST", 0);
 
-  /* "SLEPc/EPS.pyx":868
+  /* "SLEPc/EPS.pyx":867
  *             The spectral transformation.
  *         """
  *         CHKERR( EPSSetST(self.eps, st.st) )             # <<<<<<<<<<<<<<
  * 
  *     def getBV(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetST(__pyx_v_self->eps, __pyx_v_st->st)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 868, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetST(__pyx_v_self->eps, __pyx_v_st->st)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 867, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":858
+  /* "SLEPc/EPS.pyx":857
  *         return st
  * 
- *     def setST(self, ST st not None):             # <<<<<<<<<<<<<<
+ *     def setST(self, ST st):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a spectral transformation object to the
  */
@@ -25618,7 +26886,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_74setST(struct PySlepcEPSObject
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":870
+/* "SLEPc/EPS.pyx":869
  *         CHKERR( EPSSetST(self.eps, st.st) )
  * 
  *     def getBV(self):             # <<<<<<<<<<<<<<
@@ -25651,28 +26919,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_76getBV(struct PySlepcEPSObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getBV", 0);
 
-  /* "SLEPc/EPS.pyx":879
+  /* "SLEPc/EPS.pyx":878
  *             The basis vectors context.
  *         """
  *         cdef BV bv = BV()             # <<<<<<<<<<<<<<
  *         CHKERR( EPSGetBV(self.eps, &bv.bv) )
  *         PetscINCREF(bv.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 879, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 878, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bv = ((struct PySlepcBVObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":880
+  /* "SLEPc/EPS.pyx":879
  *         """
  *         cdef BV bv = BV()
  *         CHKERR( EPSGetBV(self.eps, &bv.bv) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(bv.obj)
  *         return bv
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetBV(__pyx_v_self->eps, (&__pyx_v_bv->bv))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 880, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetBV(__pyx_v_self->eps, (&__pyx_v_bv->bv))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 879, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":881
+  /* "SLEPc/EPS.pyx":880
  *         cdef BV bv = BV()
  *         CHKERR( EPSGetBV(self.eps, &bv.bv) )
  *         PetscINCREF(bv.obj)             # <<<<<<<<<<<<<<
@@ -25681,19 +26949,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_76getBV(struct PySlepcEPSObject
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_bv->__pyx_base.obj);
 
-  /* "SLEPc/EPS.pyx":882
+  /* "SLEPc/EPS.pyx":881
  *         CHKERR( EPSGetBV(self.eps, &bv.bv) )
  *         PetscINCREF(bv.obj)
  *         return bv             # <<<<<<<<<<<<<<
  * 
- *     def setBV(self, BV bv not None):
+ *     def setBV(self, BV bv):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_bv));
   __pyx_r = ((PyObject *)__pyx_v_bv);
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":870
+  /* "SLEPc/EPS.pyx":869
  *         CHKERR( EPSSetST(self.eps, st.st) )
  * 
  *     def getBV(self):             # <<<<<<<<<<<<<<
@@ -25713,10 +26981,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_76getBV(struct PySlepcEPSObject
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":884
+/* "SLEPc/EPS.pyx":883
  *         return bv
  * 
- *     def setBV(self, BV bv not None):             # <<<<<<<<<<<<<<
+ *     def setBV(self, BV bv):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a basis vectors object to the eigensolver.
  */
@@ -25737,6 +27005,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_79setBV(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -25747,7 +27016,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_79setBV(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBV") < 0)) __PYX_ERR(13, 884, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBV") < 0)) __PYX_ERR(14, 883, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -25758,13 +27027,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_79setBV(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setBV", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 884, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setBV", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 883, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setBV", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bv), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "bv", 0))) __PYX_ERR(13, 884, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bv), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "bv", 0))) __PYX_ERR(14, 883, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_78setBV(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_bv);
 
   /* function exit code */
@@ -25782,19 +27051,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_78setBV(struct PySlepcEPSObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setBV", 0);
 
-  /* "SLEPc/EPS.pyx":893
+  /* "SLEPc/EPS.pyx":892
  *             The basis vectors context.
  *         """
  *         CHKERR( EPSSetBV(self.eps, bv.bv) )             # <<<<<<<<<<<<<<
  * 
  *     def getDS(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetBV(__pyx_v_self->eps, __pyx_v_bv->bv)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 893, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetBV(__pyx_v_self->eps, __pyx_v_bv->bv)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 892, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":884
+  /* "SLEPc/EPS.pyx":883
  *         return bv
  * 
- *     def setBV(self, BV bv not None):             # <<<<<<<<<<<<<<
+ *     def setBV(self, BV bv):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a basis vectors object to the eigensolver.
  */
@@ -25811,7 +27080,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_78setBV(struct PySlepcEPSObject
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":895
+/* "SLEPc/EPS.pyx":894
  *         CHKERR( EPSSetBV(self.eps, bv.bv) )
  * 
  *     def getDS(self):             # <<<<<<<<<<<<<<
@@ -25844,28 +27113,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_80getDS(struct PySlepcEPSObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getDS", 0);
 
-  /* "SLEPc/EPS.pyx":904
+  /* "SLEPc/EPS.pyx":903
  *             The direct solver context.
  *         """
  *         cdef DS ds = DS()             # <<<<<<<<<<<<<<
  *         CHKERR( EPSGetDS(self.eps, &ds.ds) )
  *         PetscINCREF(ds.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_DS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 904, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_DS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 903, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_ds = ((struct PySlepcDSObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":905
+  /* "SLEPc/EPS.pyx":904
  *         """
  *         cdef DS ds = DS()
  *         CHKERR( EPSGetDS(self.eps, &ds.ds) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(ds.obj)
  *         return ds
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetDS(__pyx_v_self->eps, (&__pyx_v_ds->ds))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 905, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetDS(__pyx_v_self->eps, (&__pyx_v_ds->ds))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 904, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":906
+  /* "SLEPc/EPS.pyx":905
  *         cdef DS ds = DS()
  *         CHKERR( EPSGetDS(self.eps, &ds.ds) )
  *         PetscINCREF(ds.obj)             # <<<<<<<<<<<<<<
@@ -25874,19 +27143,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_80getDS(struct PySlepcEPSObject
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_ds->__pyx_base.obj);
 
-  /* "SLEPc/EPS.pyx":907
+  /* "SLEPc/EPS.pyx":906
  *         CHKERR( EPSGetDS(self.eps, &ds.ds) )
  *         PetscINCREF(ds.obj)
  *         return ds             # <<<<<<<<<<<<<<
  * 
- *     def setDS(self, DS ds not None):
+ *     def setDS(self, DS ds):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_ds));
   __pyx_r = ((PyObject *)__pyx_v_ds);
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":895
+  /* "SLEPc/EPS.pyx":894
  *         CHKERR( EPSSetBV(self.eps, bv.bv) )
  * 
  *     def getDS(self):             # <<<<<<<<<<<<<<
@@ -25906,10 +27175,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_80getDS(struct PySlepcEPSObject
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":909
+/* "SLEPc/EPS.pyx":908
  *         return ds
  * 
- *     def setDS(self, DS ds not None):             # <<<<<<<<<<<<<<
+ *     def setDS(self, DS ds):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a direct solver object to the eigensolver.
  */
@@ -25930,6 +27199,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_83setDS(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -25940,7 +27210,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_83setDS(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDS") < 0)) __PYX_ERR(13, 909, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDS") < 0)) __PYX_ERR(14, 908, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -25951,13 +27221,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_83setDS(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setDS", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 909, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setDS", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 908, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setDS", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ds), __pyx_ptype_8slepc4py_5SLEPc_DS, 0, "ds", 0))) __PYX_ERR(13, 909, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ds), __pyx_ptype_8slepc4py_5SLEPc_DS, 0, "ds", 0))) __PYX_ERR(14, 908, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_82setDS(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_ds);
 
   /* function exit code */
@@ -25975,19 +27245,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_82setDS(struct PySlepcEPSObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setDS", 0);
 
-  /* "SLEPc/EPS.pyx":918
+  /* "SLEPc/EPS.pyx":917
  *             The direct solver context.
  *         """
  *         CHKERR( EPSSetDS(self.eps, ds.ds) )             # <<<<<<<<<<<<<<
  * 
  *     def getRG(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetDS(__pyx_v_self->eps, __pyx_v_ds->ds)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 918, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetDS(__pyx_v_self->eps, __pyx_v_ds->ds)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 917, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":909
+  /* "SLEPc/EPS.pyx":908
  *         return ds
  * 
- *     def setDS(self, DS ds not None):             # <<<<<<<<<<<<<<
+ *     def setDS(self, DS ds):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a direct solver object to the eigensolver.
  */
@@ -26004,7 +27274,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_82setDS(struct PySlepcEPSObject
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":920
+/* "SLEPc/EPS.pyx":919
  *         CHKERR( EPSSetDS(self.eps, ds.ds) )
  * 
  *     def getRG(self):             # <<<<<<<<<<<<<<
@@ -26037,28 +27307,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_84getRG(struct PySlepcEPSObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getRG", 0);
 
-  /* "SLEPc/EPS.pyx":929
+  /* "SLEPc/EPS.pyx":928
  *             The region context.
  *         """
  *         cdef RG rg = RG()             # <<<<<<<<<<<<<<
  *         CHKERR( EPSGetRG(self.eps, &rg.rg) )
  *         PetscINCREF(rg.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_RG), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 929, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_RG), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 928, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_rg = ((struct PySlepcRGObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":930
+  /* "SLEPc/EPS.pyx":929
  *         """
  *         cdef RG rg = RG()
  *         CHKERR( EPSGetRG(self.eps, &rg.rg) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(rg.obj)
  *         return rg
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetRG(__pyx_v_self->eps, (&__pyx_v_rg->rg))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 930, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetRG(__pyx_v_self->eps, (&__pyx_v_rg->rg))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 929, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":931
+  /* "SLEPc/EPS.pyx":930
  *         cdef RG rg = RG()
  *         CHKERR( EPSGetRG(self.eps, &rg.rg) )
  *         PetscINCREF(rg.obj)             # <<<<<<<<<<<<<<
@@ -26067,19 +27337,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_84getRG(struct PySlepcEPSObject
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_rg->__pyx_base.obj);
 
-  /* "SLEPc/EPS.pyx":932
+  /* "SLEPc/EPS.pyx":931
  *         CHKERR( EPSGetRG(self.eps, &rg.rg) )
  *         PetscINCREF(rg.obj)
  *         return rg             # <<<<<<<<<<<<<<
  * 
- *     def setRG(self, RG rg not None):
+ *     def setRG(self, RG rg):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_rg));
   __pyx_r = ((PyObject *)__pyx_v_rg);
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":920
+  /* "SLEPc/EPS.pyx":919
  *         CHKERR( EPSSetDS(self.eps, ds.ds) )
  * 
  *     def getRG(self):             # <<<<<<<<<<<<<<
@@ -26099,10 +27369,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_84getRG(struct PySlepcEPSObject
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":934
+/* "SLEPc/EPS.pyx":933
  *         return rg
  * 
- *     def setRG(self, RG rg not None):             # <<<<<<<<<<<<<<
+ *     def setRG(self, RG rg):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a region object to the eigensolver.
  */
@@ -26123,6 +27393,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_87setRG(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -26133,7 +27404,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_87setRG(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRG") < 0)) __PYX_ERR(13, 934, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRG") < 0)) __PYX_ERR(14, 933, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -26144,13 +27415,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_87setRG(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setRG", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 934, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setRG", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 933, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setRG", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rg), __pyx_ptype_8slepc4py_5SLEPc_RG, 0, "rg", 0))) __PYX_ERR(13, 934, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rg), __pyx_ptype_8slepc4py_5SLEPc_RG, 0, "rg", 0))) __PYX_ERR(14, 933, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_86setRG(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_rg);
 
   /* function exit code */
@@ -26168,19 +27439,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_86setRG(struct PySlepcEPSObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setRG", 0);
 
-  /* "SLEPc/EPS.pyx":943
+  /* "SLEPc/EPS.pyx":942
  *             The region context.
  *         """
  *         CHKERR( EPSSetRG(self.eps, rg.rg) )             # <<<<<<<<<<<<<<
  * 
  *     def getOperators(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetRG(__pyx_v_self->eps, __pyx_v_rg->rg)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 943, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetRG(__pyx_v_self->eps, __pyx_v_rg->rg)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 942, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":934
+  /* "SLEPc/EPS.pyx":933
  *         return rg
  * 
- *     def setRG(self, RG rg not None):             # <<<<<<<<<<<<<<
+ *     def setRG(self, RG rg):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a region object to the eigensolver.
  */
@@ -26197,7 +27468,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_86setRG(struct PySlepcEPSObject
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":945
+/* "SLEPc/EPS.pyx":944
  *         CHKERR( EPSSetRG(self.eps, rg.rg) )
  * 
  *     def getOperators(self):             # <<<<<<<<<<<<<<
@@ -26231,40 +27502,40 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_88getOperators(struct PySlepcEPS
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getOperators", 0);
 
-  /* "SLEPc/EPS.pyx":956
+  /* "SLEPc/EPS.pyx":955
  *            The second matrix in the case of generalized eigenproblems.
  *         """
  *         cdef Mat A = Mat()             # <<<<<<<<<<<<<<
  *         cdef Mat B = Mat()
  *         CHKERR( EPSGetOperators(self.eps, &A.mat, &B.mat) )
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 956, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 955, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_A = ((struct PyPetscMatObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":957
+  /* "SLEPc/EPS.pyx":956
  *         """
  *         cdef Mat A = Mat()
  *         cdef Mat B = Mat()             # <<<<<<<<<<<<<<
  *         CHKERR( EPSGetOperators(self.eps, &A.mat, &B.mat) )
  *         PetscINCREF(A.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 957, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 956, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_B = ((struct PyPetscMatObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":958
+  /* "SLEPc/EPS.pyx":957
  *         cdef Mat A = Mat()
  *         cdef Mat B = Mat()
  *         CHKERR( EPSGetOperators(self.eps, &A.mat, &B.mat) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(A.obj)
  *         PetscINCREF(B.obj)
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetOperators(__pyx_v_self->eps, (&__pyx_v_A->mat), (&__pyx_v_B->mat))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 958, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetOperators(__pyx_v_self->eps, (&__pyx_v_A->mat), (&__pyx_v_B->mat))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 957, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":959
+  /* "SLEPc/EPS.pyx":958
  *         cdef Mat B = Mat()
  *         CHKERR( EPSGetOperators(self.eps, &A.mat, &B.mat) )
  *         PetscINCREF(A.obj)             # <<<<<<<<<<<<<<
@@ -26273,7 +27544,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_88getOperators(struct PySlepcEPS
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_A->__pyx_base.obj);
 
-  /* "SLEPc/EPS.pyx":960
+  /* "SLEPc/EPS.pyx":959
  *         CHKERR( EPSGetOperators(self.eps, &A.mat, &B.mat) )
  *         PetscINCREF(A.obj)
  *         PetscINCREF(B.obj)             # <<<<<<<<<<<<<<
@@ -26282,15 +27553,15 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_88getOperators(struct PySlepcEPS
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_B->__pyx_base.obj);
 
-  /* "SLEPc/EPS.pyx":961
+  /* "SLEPc/EPS.pyx":960
  *         PetscINCREF(A.obj)
  *         PetscINCREF(B.obj)
  *         return (A, B)             # <<<<<<<<<<<<<<
  * 
- *     def setOperators(self, Mat A not None, Mat B=None):
+ *     def setOperators(self, Mat A, Mat B=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 961, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 960, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_v_A));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_A));
@@ -26302,7 +27573,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_88getOperators(struct PySlepcEPS
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":945
+  /* "SLEPc/EPS.pyx":944
  *         CHKERR( EPSSetRG(self.eps, rg.rg) )
  * 
  *     def getOperators(self):             # <<<<<<<<<<<<<<
@@ -26323,10 +27594,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_88getOperators(struct PySlepcEPS
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":963
+/* "SLEPc/EPS.pyx":962
  *         return (A, B)
  * 
- *     def setOperators(self, Mat A not None, Mat B=None):             # <<<<<<<<<<<<<<
+ *     def setOperators(self, Mat A, Mat B=None):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the matrices associated with the eigenvalue problem.
  */
@@ -26349,7 +27620,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_91setOperators(PyObject *__pyx_v
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -26358,6 +27631,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_91setOperators(PyObject *__pyx_v
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_B);
@@ -26365,11 +27639,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_91setOperators(PyObject *__pyx_v
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOperators") < 0)) __PYX_ERR(13, 963, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOperators") < 0)) __PYX_ERR(14, 962, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
@@ -26380,14 +27655,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_91setOperators(PyObject *__pyx_v
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOperators", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 963, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOperators", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 962, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setOperators", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_A), __pyx_ptype_8petsc4py_5PETSc_Mat, 0, "A", 0))) __PYX_ERR(13, 963, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_B), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "B", 0))) __PYX_ERR(13, 963, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_A), __pyx_ptype_8petsc4py_5PETSc_Mat, 0, "A", 0))) __PYX_ERR(14, 962, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_B), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "B", 0))) __PYX_ERR(14, 962, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_90setOperators(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_A, __pyx_v_B);
 
   /* function exit code */
@@ -26403,48 +27678,39 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_90setOperators(struct PySlepcEPS
   Mat __pyx_v_Bmat;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
+  Mat __pyx_t_1;
   int __pyx_t_2;
-  Mat __pyx_t_3;
-  int __pyx_t_4;
+  int __pyx_t_3;
   __Pyx_RefNannySetupContext("setOperators", 0);
 
-  /* "SLEPc/EPS.pyx":975
+  /* "SLEPc/EPS.pyx":974
  *            if not provided, a standard eigenproblem is assumed.
  *         """
- *         cdef PetscMat Bmat = NULL             # <<<<<<<<<<<<<<
- *         if B is not None: Bmat = B.mat
- *         CHKERR( EPSSetOperators(self.eps, A.mat, Bmat) )
- */
-  __pyx_v_Bmat = NULL;
-
-  /* "SLEPc/EPS.pyx":976
- *         """
- *         cdef PetscMat Bmat = NULL
- *         if B is not None: Bmat = B.mat             # <<<<<<<<<<<<<<
+ *         cdef PetscMat Bmat = B.mat if B is not None else <PetscMat>NULL             # <<<<<<<<<<<<<<
  *         CHKERR( EPSSetOperators(self.eps, A.mat, Bmat) )
  * 
  */
-  __pyx_t_1 = (((PyObject *)__pyx_v_B) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_B->mat;
-    __pyx_v_Bmat = __pyx_t_3;
+  __pyx_t_2 = (((PyObject *)__pyx_v_B) != Py_None);
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_B->mat;
+  } else {
+    __pyx_t_1 = ((Mat)NULL);
   }
+  __pyx_v_Bmat = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":977
- *         cdef PetscMat Bmat = NULL
- *         if B is not None: Bmat = B.mat
+  /* "SLEPc/EPS.pyx":975
+ *         """
+ *         cdef PetscMat Bmat = B.mat if B is not None else <PetscMat>NULL
  *         CHKERR( EPSSetOperators(self.eps, A.mat, Bmat) )             # <<<<<<<<<<<<<<
  * 
  *     def setDeflationSpace(self, space):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetOperators(__pyx_v_self->eps, __pyx_v_A->mat, __pyx_v_Bmat)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(13, 977, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetOperators(__pyx_v_self->eps, __pyx_v_A->mat, __pyx_v_Bmat)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(14, 975, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":963
+  /* "SLEPc/EPS.pyx":962
  *         return (A, B)
  * 
- *     def setOperators(self, Mat A not None, Mat B=None):             # <<<<<<<<<<<<<<
+ *     def setOperators(self, Mat A, Mat B=None):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the matrices associated with the eigenvalue problem.
  */
@@ -26461,7 +27727,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_90setOperators(struct PySlepcEPS
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":979
+/* "SLEPc/EPS.pyx":977
  *         CHKERR( EPSSetOperators(self.eps, A.mat, Bmat) )
  * 
  *     def setDeflationSpace(self, space):             # <<<<<<<<<<<<<<
@@ -26485,6 +27751,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_93setDeflationSpace(PyObject *__
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -26495,7 +27762,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_93setDeflationSpace(PyObject *__
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDeflationSpace") < 0)) __PYX_ERR(13, 979, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDeflationSpace") < 0)) __PYX_ERR(14, 977, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -26506,7 +27773,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_93setDeflationSpace(PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setDeflationSpace", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 979, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setDeflationSpace", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 977, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setDeflationSpace", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -26536,7 +27803,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_92setDeflationSpace(struct PySle
   __Pyx_RefNannySetupContext("setDeflationSpace", 0);
   __Pyx_INCREF(__pyx_v_space);
 
-  /* "SLEPc/EPS.pyx":1003
+  /* "SLEPc/EPS.pyx":1001
  *         so the deflation space should be set every time.
  *         """
  *         if isinstance(space, Vec): space = [space]             # <<<<<<<<<<<<<<
@@ -26546,7 +27813,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_92setDeflationSpace(struct PySle
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_space, __pyx_ptype_8petsc4py_5PETSc_Vec); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 1003, __pyx_L1_error)
+    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1001, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_space);
     __Pyx_GIVEREF(__pyx_v_space);
@@ -26555,7 +27822,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_92setDeflationSpace(struct PySle
     __pyx_t_3 = 0;
   }
 
-  /* "SLEPc/EPS.pyx":1004
+  /* "SLEPc/EPS.pyx":1002
  *         """
  *         if isinstance(space, Vec): space = [space]
  *         cdef PetscVec* vs = NULL             # <<<<<<<<<<<<<<
@@ -26564,7 +27831,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_92setDeflationSpace(struct PySle
  */
   __pyx_v_vs = NULL;
 
-  /* "SLEPc/EPS.pyx":1005
+  /* "SLEPc/EPS.pyx":1003
  *         if isinstance(space, Vec): space = [space]
  *         cdef PetscVec* vs = NULL
  *         cdef Py_ssize_t i = 0, ns = len(space)             # <<<<<<<<<<<<<<
@@ -26572,22 +27839,22 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_92setDeflationSpace(struct PySle
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
  */
   __pyx_v_i = 0;
-  __pyx_t_4 = PyObject_Length(__pyx_v_space); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(13, 1005, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_space); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(14, 1003, __pyx_L1_error)
   __pyx_v_ns = __pyx_t_4;
 
-  /* "SLEPc/EPS.pyx":1006
+  /* "SLEPc/EPS.pyx":1004
  *         cdef PetscVec* vs = NULL
  *         cdef Py_ssize_t i = 0, ns = len(space)
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)             # <<<<<<<<<<<<<<
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
  *         CHKERR( EPSSetDeflationSpace(self.eps, <PetscInt>ns, vs) )
  */
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_ns) * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_vs))); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 1006, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_ns) * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_vs))); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1004, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_tmp = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "SLEPc/EPS.pyx":1007
+  /* "SLEPc/EPS.pyx":1005
  *         cdef Py_ssize_t i = 0, ns = len(space)
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec             # <<<<<<<<<<<<<<
@@ -26597,24 +27864,24 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_92setDeflationSpace(struct PySle
   __pyx_t_4 = __pyx_v_ns;
   for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
     __pyx_v_i = __pyx_t_5;
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_space, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 1007, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_space, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1005, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Vec)))) __PYX_ERR(13, 1007, __pyx_L1_error)
+    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Vec)))) __PYX_ERR(14, 1005, __pyx_L1_error)
     __pyx_t_6 = ((struct PyPetscVecObject *)__pyx_t_3)->vec;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     (__pyx_v_vs[__pyx_v_i]) = __pyx_t_6;
   }
 
-  /* "SLEPc/EPS.pyx":1008
+  /* "SLEPc/EPS.pyx":1006
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
  *         CHKERR( EPSSetDeflationSpace(self.eps, <PetscInt>ns, vs) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetDeflationSpace(__pyx_v_self->eps, ((PetscInt)__pyx_v_ns), __pyx_v_vs)); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(13, 1008, __pyx_L1_error)
+  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetDeflationSpace(__pyx_v_self->eps, ((PetscInt)__pyx_v_ns), __pyx_v_vs)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(14, 1006, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":979
+  /* "SLEPc/EPS.pyx":977
  *         CHKERR( EPSSetOperators(self.eps, A.mat, Bmat) )
  * 
  *     def setDeflationSpace(self, space):             # <<<<<<<<<<<<<<
@@ -26637,7 +27904,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_92setDeflationSpace(struct PySle
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1012
+/* "SLEPc/EPS.pyx":1010
  *     #
  * 
  *     def setInitialSpace(self, space):             # <<<<<<<<<<<<<<
@@ -26661,6 +27928,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_95setInitialSpace(PyObject *__py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -26671,7 +27939,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_95setInitialSpace(PyObject *__py
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setInitialSpace") < 0)) __PYX_ERR(13, 1012, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setInitialSpace") < 0)) __PYX_ERR(14, 1010, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -26682,7 +27950,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_95setInitialSpace(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setInitialSpace", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1012, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setInitialSpace", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1010, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setInitialSpace", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -26712,7 +27980,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_94setInitialSpace(struct PySlepc
   __Pyx_RefNannySetupContext("setInitialSpace", 0);
   __Pyx_INCREF(__pyx_v_space);
 
-  /* "SLEPc/EPS.pyx":1037
+  /* "SLEPc/EPS.pyx":1035
  *         approximation of the wanted eigenspace. Then, convergence may be faster.
  *         """
  *         if isinstance(space, Vec): space = [space]             # <<<<<<<<<<<<<<
@@ -26722,7 +27990,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_94setInitialSpace(struct PySlepc
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_space, __pyx_ptype_8petsc4py_5PETSc_Vec); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 1037, __pyx_L1_error)
+    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1035, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_space);
     __Pyx_GIVEREF(__pyx_v_space);
@@ -26731,7 +27999,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_94setInitialSpace(struct PySlepc
     __pyx_t_3 = 0;
   }
 
-  /* "SLEPc/EPS.pyx":1038
+  /* "SLEPc/EPS.pyx":1036
  *         """
  *         if isinstance(space, Vec): space = [space]
  *         cdef PetscVec *vs = NULL             # <<<<<<<<<<<<<<
@@ -26740,7 +28008,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_94setInitialSpace(struct PySlepc
  */
   __pyx_v_vs = NULL;
 
-  /* "SLEPc/EPS.pyx":1039
+  /* "SLEPc/EPS.pyx":1037
  *         if isinstance(space, Vec): space = [space]
  *         cdef PetscVec *vs = NULL
  *         cdef Py_ssize_t i = 0, ns = len(space)             # <<<<<<<<<<<<<<
@@ -26748,22 +28016,22 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_94setInitialSpace(struct PySlepc
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
  */
   __pyx_v_i = 0;
-  __pyx_t_4 = PyObject_Length(__pyx_v_space); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(13, 1039, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_space); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(14, 1037, __pyx_L1_error)
   __pyx_v_ns = __pyx_t_4;
 
-  /* "SLEPc/EPS.pyx":1040
+  /* "SLEPc/EPS.pyx":1038
  *         cdef PetscVec *vs = NULL
  *         cdef Py_ssize_t i = 0, ns = len(space)
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)             # <<<<<<<<<<<<<<
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
  *         CHKERR( EPSSetInitialSpace(self.eps, <PetscInt>ns, vs) )
  */
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_ns) * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_vs))); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 1040, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_ns) * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_vs))); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1038, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_tmp = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "SLEPc/EPS.pyx":1041
+  /* "SLEPc/EPS.pyx":1039
  *         cdef Py_ssize_t i = 0, ns = len(space)
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec             # <<<<<<<<<<<<<<
@@ -26773,24 +28041,24 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_94setInitialSpace(struct PySlepc
   __pyx_t_4 = __pyx_v_ns;
   for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
     __pyx_v_i = __pyx_t_5;
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_space, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 1041, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_space, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1039, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Vec)))) __PYX_ERR(13, 1041, __pyx_L1_error)
+    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Vec)))) __PYX_ERR(14, 1039, __pyx_L1_error)
     __pyx_t_6 = ((struct PyPetscVecObject *)__pyx_t_3)->vec;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     (__pyx_v_vs[__pyx_v_i]) = __pyx_t_6;
   }
 
-  /* "SLEPc/EPS.pyx":1042
+  /* "SLEPc/EPS.pyx":1040
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
  *         CHKERR( EPSSetInitialSpace(self.eps, <PetscInt>ns, vs) )             # <<<<<<<<<<<<<<
  * 
- *     #
+ *     # --- convergence ---
  */
-  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetInitialSpace(__pyx_v_self->eps, ((PetscInt)__pyx_v_ns), __pyx_v_vs)); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(13, 1042, __pyx_L1_error)
+  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetInitialSpace(__pyx_v_self->eps, ((PetscInt)__pyx_v_ns), __pyx_v_vs)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(14, 1040, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1012
+  /* "SLEPc/EPS.pyx":1010
  *     #
  * 
  *     def setInitialSpace(self, space):             # <<<<<<<<<<<<<<
@@ -26813,8 +28081,555 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_94setInitialSpace(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1046
- *     #
+/* "SLEPc/EPS.pyx":1044
+ *     # --- convergence ---
+ * 
+ *     def setStoppingTest(self, stopping, args=None, kargs=None):             # <<<<<<<<<<<<<<
+ *         """
+ *         Sets a function to decide when to stop the outer iteration of the eigensolver.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_97setStoppingTest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_96setStoppingTest[] = "EPS.setStoppingTest(self, stopping, args=None, kargs=None)\n\n        Sets a function to decide when to stop the outer iteration of the eigensolver.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_97setStoppingTest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_stopping = 0;
+  PyObject *__pyx_v_args = 0;
+  PyObject *__pyx_v_kargs = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("setStoppingTest (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_stopping,&__pyx_n_s_args,&__pyx_n_s_kargs,0};
+    PyObject* values[3] = {0,0,0};
+    values[1] = ((PyObject *)Py_None);
+    values[2] = ((PyObject *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stopping)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_args);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kargs);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setStoppingTest") < 0)) __PYX_ERR(14, 1044, __pyx_L3_error)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_stopping = values[0];
+    __pyx_v_args = values[1];
+    __pyx_v_kargs = values[2];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("setStoppingTest", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1044, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setStoppingTest", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_96setStoppingTest(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_stopping, __pyx_v_args, __pyx_v_kargs);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_96setStoppingTest(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_stopping, PyObject *__pyx_v_args, PyObject *__pyx_v_kargs) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_t_5;
+  __Pyx_RefNannySetupContext("setStoppingTest", 0);
+  __Pyx_INCREF(__pyx_v_args);
+  __Pyx_INCREF(__pyx_v_kargs);
+
+  /* "SLEPc/EPS.pyx":1048
+ *         Sets a function to decide when to stop the outer iteration of the eigensolver.
+ *         """
+ *         if stopping is not None:             # <<<<<<<<<<<<<<
+ *             if args is None: args = ()
+ *             if kargs is None: kargs = {}
+ */
+  __pyx_t_1 = (__pyx_v_stopping != Py_None);
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "SLEPc/EPS.pyx":1049
+ *         """
+ *         if stopping is not None:
+ *             if args is None: args = ()             # <<<<<<<<<<<<<<
+ *             if kargs is None: kargs = {}
+ *             self.set_attr('__stopping__', (stopping, args, kargs))
+ */
+    __pyx_t_2 = (__pyx_v_args == Py_None);
+    __pyx_t_1 = (__pyx_t_2 != 0);
+    if (__pyx_t_1) {
+      __Pyx_INCREF(__pyx_empty_tuple);
+      __Pyx_DECREF_SET(__pyx_v_args, __pyx_empty_tuple);
+    }
+
+    /* "SLEPc/EPS.pyx":1050
+ *         if stopping is not None:
+ *             if args is None: args = ()
+ *             if kargs is None: kargs = {}             # <<<<<<<<<<<<<<
+ *             self.set_attr('__stopping__', (stopping, args, kargs))
+ *             CHKERR( EPSSetStoppingTestFunction(self.eps, EPS_Stopping, NULL, NULL) )
+ */
+    __pyx_t_1 = (__pyx_v_kargs == Py_None);
+    __pyx_t_2 = (__pyx_t_1 != 0);
+    if (__pyx_t_2) {
+      __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1050, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF_SET(__pyx_v_kargs, __pyx_t_3);
+      __pyx_t_3 = 0;
+    }
+
+    /* "SLEPc/EPS.pyx":1051
+ *             if args is None: args = ()
+ *             if kargs is None: kargs = {}
+ *             self.set_attr('__stopping__', (stopping, args, kargs))             # <<<<<<<<<<<<<<
+ *             CHKERR( EPSSetStoppingTestFunction(self.eps, EPS_Stopping, NULL, NULL) )
+ *         else:
+ */
+    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1051, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_stopping);
+    __Pyx_GIVEREF(__pyx_v_stopping);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_stopping);
+    __Pyx_INCREF(__pyx_v_args);
+    __Pyx_GIVEREF(__pyx_v_args);
+    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_args);
+    __Pyx_INCREF(__pyx_v_kargs);
+    __Pyx_GIVEREF(__pyx_v_kargs);
+    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_kargs);
+    __pyx_t_4 = ((struct __pyx_vtabstruct_8slepc4py_5SLEPc_EPS *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.set_attr(((struct PyPetscObjectObject *)__pyx_v_self), ((char *)"__stopping__"), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1051, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+    /* "SLEPc/EPS.pyx":1052
+ *             if kargs is None: kargs = {}
+ *             self.set_attr('__stopping__', (stopping, args, kargs))
+ *             CHKERR( EPSSetStoppingTestFunction(self.eps, EPS_Stopping, NULL, NULL) )             # <<<<<<<<<<<<<<
+ *         else:
+ *             self.set_attr('__stopping__', None)
+ */
+    __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetStoppingTestFunction(__pyx_v_self->eps, __pyx_f_8slepc4py_5SLEPc_EPS_Stopping, NULL, NULL)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 1052, __pyx_L1_error)
+
+    /* "SLEPc/EPS.pyx":1048
+ *         Sets a function to decide when to stop the outer iteration of the eigensolver.
+ *         """
+ *         if stopping is not None:             # <<<<<<<<<<<<<<
+ *             if args is None: args = ()
+ *             if kargs is None: kargs = {}
+ */
+    goto __pyx_L3;
+  }
+
+  /* "SLEPc/EPS.pyx":1054
+ *             CHKERR( EPSSetStoppingTestFunction(self.eps, EPS_Stopping, NULL, NULL) )
+ *         else:
+ *             self.set_attr('__stopping__', None)             # <<<<<<<<<<<<<<
+ *             CHKERR( EPSSetStoppingTestFunction(self.eps, EPSStoppingBasic, NULL, NULL) )
+ * 
+ */
+  /*else*/ {
+    __pyx_t_4 = ((struct __pyx_vtabstruct_8slepc4py_5SLEPc_EPS *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.set_attr(((struct PyPetscObjectObject *)__pyx_v_self), ((char *)"__stopping__"), Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1054, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+    /* "SLEPc/EPS.pyx":1055
+ *         else:
+ *             self.set_attr('__stopping__', None)
+ *             CHKERR( EPSSetStoppingTestFunction(self.eps, EPSStoppingBasic, NULL, NULL) )             # <<<<<<<<<<<<<<
+ * 
+ *     # --- monitoring ---
+ */
+    __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetStoppingTestFunction(__pyx_v_self->eps, EPSStoppingBasic, NULL, NULL)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 1055, __pyx_L1_error)
+  }
+  __pyx_L3:;
+
+  /* "SLEPc/EPS.pyx":1044
+ *     # --- convergence ---
+ * 
+ *     def setStoppingTest(self, stopping, args=None, kargs=None):             # <<<<<<<<<<<<<<
+ *         """
+ *         Sets a function to decide when to stop the outer iteration of the eigensolver.
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setStoppingTest", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_args);
+  __Pyx_XDECREF(__pyx_v_kargs);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "SLEPc/EPS.pyx":1059
+ *     # --- monitoring ---
+ * 
+ *     def setMonitor(self, monitor, args=None, kargs=None):             # <<<<<<<<<<<<<<
+ *         """
+ *         Appends a monitor function to the list of monitors.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_99setMonitor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_98setMonitor[] = "EPS.setMonitor(self, monitor, args=None, kargs=None)\n\n        Appends a monitor function to the list of monitors.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_99setMonitor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_monitor = 0;
+  PyObject *__pyx_v_args = 0;
+  PyObject *__pyx_v_kargs = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("setMonitor (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_monitor,&__pyx_n_s_args,&__pyx_n_s_kargs,0};
+    PyObject* values[3] = {0,0,0};
+    values[1] = ((PyObject *)Py_None);
+    values[2] = ((PyObject *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_monitor)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_args);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kargs);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setMonitor") < 0)) __PYX_ERR(14, 1059, __pyx_L3_error)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_monitor = values[0];
+    __pyx_v_args = values[1];
+    __pyx_v_kargs = values[2];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("setMonitor", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1059, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setMonitor", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_98setMonitor(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_monitor, __pyx_v_args, __pyx_v_kargs);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_98setMonitor(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_monitor, PyObject *__pyx_v_args, PyObject *__pyx_v_kargs) {
+  PyObject *__pyx_v_monitorlist = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  int __pyx_t_5;
+  __Pyx_RefNannySetupContext("setMonitor", 0);
+  __Pyx_INCREF(__pyx_v_args);
+  __Pyx_INCREF(__pyx_v_kargs);
+
+  /* "SLEPc/EPS.pyx":1063
+ *         Appends a monitor function to the list of monitors.
+ *         """
+ *         if monitor is None: return             # <<<<<<<<<<<<<<
+ *         cdef object monitorlist = self.get_attr('__monitor__')
+ *         if monitorlist is None:
+ */
+  __pyx_t_1 = (__pyx_v_monitor == Py_None);
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+  }
+
+  /* "SLEPc/EPS.pyx":1064
+ *         """
+ *         if monitor is None: return
+ *         cdef object monitorlist = self.get_attr('__monitor__')             # <<<<<<<<<<<<<<
+ *         if monitorlist is None:
+ *             monitorlist = []
+ */
+  __pyx_t_3 = ((struct __pyx_vtabstruct_8slepc4py_5SLEPc_EPS *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.get_attr(((struct PyPetscObjectObject *)__pyx_v_self), ((char *)"__monitor__")); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1064, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_v_monitorlist = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "SLEPc/EPS.pyx":1065
+ *         if monitor is None: return
+ *         cdef object monitorlist = self.get_attr('__monitor__')
+ *         if monitorlist is None:             # <<<<<<<<<<<<<<
+ *             monitorlist = []
+ *             self.set_attr('__monitor__', monitorlist)
+ */
+  __pyx_t_2 = (__pyx_v_monitorlist == Py_None);
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (__pyx_t_1) {
+
+    /* "SLEPc/EPS.pyx":1066
+ *         cdef object monitorlist = self.get_attr('__monitor__')
+ *         if monitorlist is None:
+ *             monitorlist = []             # <<<<<<<<<<<<<<
+ *             self.set_attr('__monitor__', monitorlist)
+ *             CHKERR( EPSMonitorSet(self.eps, EPS_Monitor, NULL, NULL) )
+ */
+    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1066, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF_SET(__pyx_v_monitorlist, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "SLEPc/EPS.pyx":1067
+ *         if monitorlist is None:
+ *             monitorlist = []
+ *             self.set_attr('__monitor__', monitorlist)             # <<<<<<<<<<<<<<
+ *             CHKERR( EPSMonitorSet(self.eps, EPS_Monitor, NULL, NULL) )
+ *         if args is None: args = ()
+ */
+    __pyx_t_3 = ((struct __pyx_vtabstruct_8slepc4py_5SLEPc_EPS *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.set_attr(((struct PyPetscObjectObject *)__pyx_v_self), ((char *)"__monitor__"), __pyx_v_monitorlist); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1067, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+    /* "SLEPc/EPS.pyx":1068
+ *             monitorlist = []
+ *             self.set_attr('__monitor__', monitorlist)
+ *             CHKERR( EPSMonitorSet(self.eps, EPS_Monitor, NULL, NULL) )             # <<<<<<<<<<<<<<
+ *         if args is None: args = ()
+ *         if kargs is None: kargs = {}
+ */
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSMonitorSet(__pyx_v_self->eps, __pyx_f_8slepc4py_5SLEPc_EPS_Monitor, NULL, NULL)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(14, 1068, __pyx_L1_error)
+
+    /* "SLEPc/EPS.pyx":1065
+ *         if monitor is None: return
+ *         cdef object monitorlist = self.get_attr('__monitor__')
+ *         if monitorlist is None:             # <<<<<<<<<<<<<<
+ *             monitorlist = []
+ *             self.set_attr('__monitor__', monitorlist)
+ */
+  }
+
+  /* "SLEPc/EPS.pyx":1069
+ *             self.set_attr('__monitor__', monitorlist)
+ *             CHKERR( EPSMonitorSet(self.eps, EPS_Monitor, NULL, NULL) )
+ *         if args is None: args = ()             # <<<<<<<<<<<<<<
+ *         if kargs is None: kargs = {}
+ *         monitorlist.append((monitor, args, kargs))
+ */
+  __pyx_t_1 = (__pyx_v_args == Py_None);
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+    __Pyx_INCREF(__pyx_empty_tuple);
+    __Pyx_DECREF_SET(__pyx_v_args, __pyx_empty_tuple);
+  }
+
+  /* "SLEPc/EPS.pyx":1070
+ *             CHKERR( EPSMonitorSet(self.eps, EPS_Monitor, NULL, NULL) )
+ *         if args is None: args = ()
+ *         if kargs is None: kargs = {}             # <<<<<<<<<<<<<<
+ *         monitorlist.append((monitor, args, kargs))
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_kargs == Py_None);
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (__pyx_t_1) {
+    __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1070, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF_SET(__pyx_v_kargs, __pyx_t_3);
+    __pyx_t_3 = 0;
+  }
+
+  /* "SLEPc/EPS.pyx":1071
+ *         if args is None: args = ()
+ *         if kargs is None: kargs = {}
+ *         monitorlist.append((monitor, args, kargs))             # <<<<<<<<<<<<<<
+ * 
+ *     def getMonitor(self):
+ */
+  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1071, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_INCREF(__pyx_v_monitor);
+  __Pyx_GIVEREF(__pyx_v_monitor);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_monitor);
+  __Pyx_INCREF(__pyx_v_args);
+  __Pyx_GIVEREF(__pyx_v_args);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_args);
+  __Pyx_INCREF(__pyx_v_kargs);
+  __Pyx_GIVEREF(__pyx_v_kargs);
+  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_kargs);
+  __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_monitorlist, __pyx_t_3); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 1071, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "SLEPc/EPS.pyx":1059
+ *     # --- monitoring ---
+ * 
+ *     def setMonitor(self, monitor, args=None, kargs=None):             # <<<<<<<<<<<<<<
+ *         """
+ *         Appends a monitor function to the list of monitors.
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setMonitor", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_monitorlist);
+  __Pyx_XDECREF(__pyx_v_args);
+  __Pyx_XDECREF(__pyx_v_kargs);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "SLEPc/EPS.pyx":1073
+ *         monitorlist.append((monitor, args, kargs))
+ * 
+ *     def getMonitor(self):             # <<<<<<<<<<<<<<
+ *         """
+ *         Gets the list of monitor functions.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_101getMonitor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_100getMonitor[] = "EPS.getMonitor(self)\n\n        Gets the list of monitor functions.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_101getMonitor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("getMonitor (wrapper)", 0);
+  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
+    __Pyx_RaiseArgtupleInvalid("getMonitor", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
+  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getMonitor", 0))) return NULL;
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_100getMonitor(((struct PySlepcEPSObject *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_100getMonitor(struct PySlepcEPSObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("getMonitor", 0);
+
+  /* "SLEPc/EPS.pyx":1077
+ *         Gets the list of monitor functions.
+ *         """
+ *         return self.get_attr('__monitor__')             # <<<<<<<<<<<<<<
+ * 
+ *     def cancelMonitor(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((struct __pyx_vtabstruct_8slepc4py_5SLEPc_EPS *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.get_attr(((struct PyPetscObjectObject *)__pyx_v_self), ((char *)"__monitor__")); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1077, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "SLEPc/EPS.pyx":1073
+ *         monitorlist.append((monitor, args, kargs))
+ * 
+ *     def getMonitor(self):             # <<<<<<<<<<<<<<
+ *         """
+ *         Gets the list of monitor functions.
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("slepc4py.SLEPc.EPS.getMonitor", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "SLEPc/EPS.pyx":1079
+ *         return self.get_attr('__monitor__')
  * 
  *     def cancelMonitor(self):             # <<<<<<<<<<<<<<
  *         """
@@ -26822,39 +28637,51 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_94setInitialSpace(struct PySlepc
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_97cancelMonitor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_96cancelMonitor[] = "EPS.cancelMonitor(self)\n\n        Clears all monitors for an EPS object.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_97cancelMonitor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_103cancelMonitor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_102cancelMonitor[] = "EPS.cancelMonitor(self)\n\n        Clears all monitors for an EPS object.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_103cancelMonitor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("cancelMonitor (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("cancelMonitor", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "cancelMonitor", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_96cancelMonitor(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_102cancelMonitor(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_96cancelMonitor(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_102cancelMonitor(struct PySlepcEPSObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("cancelMonitor", 0);
 
-  /* "SLEPc/EPS.pyx":1050
+  /* "SLEPc/EPS.pyx":1083
  *         Clears all monitors for an EPS object.
  *         """
  *         CHKERR( EPSMonitorCancel(self.eps) )             # <<<<<<<<<<<<<<
+ *         self.set_attr('__monitor__', None)
  * 
- *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSMonitorCancel(__pyx_v_self->eps)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1050, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSMonitorCancel(__pyx_v_self->eps)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1083, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1046
+  /* "SLEPc/EPS.pyx":1084
+ *         """
+ *         CHKERR( EPSMonitorCancel(self.eps) )
+ *         self.set_attr('__monitor__', None)             # <<<<<<<<<<<<<<
+ * 
  *     #
+ */
+  __pyx_t_2 = ((struct __pyx_vtabstruct_8slepc4py_5SLEPc_EPS *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.set_attr(((struct PyPetscObjectObject *)__pyx_v_self), ((char *)"__monitor__"), Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1084, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "SLEPc/EPS.pyx":1079
+ *         return self.get_attr('__monitor__')
  * 
  *     def cancelMonitor(self):             # <<<<<<<<<<<<<<
  *         """
@@ -26865,6 +28692,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_96cancelMonitor(struct PySlepcEP
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.cancelMonitor", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
@@ -26873,7 +28701,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_96cancelMonitor(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1054
+/* "SLEPc/EPS.pyx":1088
  *     #
  * 
  *     def setUp(self):             # <<<<<<<<<<<<<<
@@ -26882,38 +28710,38 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_96cancelMonitor(struct PySlepcEP
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_99setUp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_98setUp[] = "EPS.setUp(self)\n\n        Sets up all the internal data structures necessary for the\n        execution of the eigensolver.\n\n        Notes\n        -----\n        This function need not be called explicitly in most cases,\n        since `solve()` calls it. It can be useful when one wants to\n        measure the set-up time separately from the solve time.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_99setUp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_105setUp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_104setUp[] = "EPS.setUp(self)\n\n        Sets up all the internal data structures necessary for the\n        execution of the eigensolver.\n\n        Notes\n        -----\n        This function need not be called explicitly in most cases,\n        since `solve()` calls it. It can be useful when one wants to\n        measure the set-up time separately from the solve time.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_105setUp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("setUp (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("setUp", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "setUp", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_98setUp(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_104setUp(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_98setUp(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_104setUp(struct PySlepcEPSObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setUp", 0);
 
-  /* "SLEPc/EPS.pyx":1065
+  /* "SLEPc/EPS.pyx":1099
  *         measure the set-up time separately from the solve time.
  *         """
  *         CHKERR( EPSSetUp(self.eps) )             # <<<<<<<<<<<<<<
  * 
  *     def solve(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetUp(__pyx_v_self->eps)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1065, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSetUp(__pyx_v_self->eps)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1099, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1054
+  /* "SLEPc/EPS.pyx":1088
  *     #
  * 
  *     def setUp(self):             # <<<<<<<<<<<<<<
@@ -26933,7 +28761,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_98setUp(struct PySlepcEPSObject
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1067
+/* "SLEPc/EPS.pyx":1101
  *         CHKERR( EPSSetUp(self.eps) )
  * 
  *     def solve(self):             # <<<<<<<<<<<<<<
@@ -26942,38 +28770,38 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_98setUp(struct PySlepcEPSObject
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_101solve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_100solve[] = "EPS.solve(self)\n\n        Solves the eigensystem.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_101solve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_107solve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_106solve[] = "EPS.solve(self)\n\n        Solves the eigensystem.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_107solve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("solve (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("solve", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "solve", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_100solve(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_106solve(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_100solve(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_106solve(struct PySlepcEPSObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("solve", 0);
 
-  /* "SLEPc/EPS.pyx":1071
+  /* "SLEPc/EPS.pyx":1105
  *         Solves the eigensystem.
  *         """
  *         CHKERR( EPSSolve(self.eps) )             # <<<<<<<<<<<<<<
  * 
  *     def getIterationNumber(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSolve(__pyx_v_self->eps)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1071, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSSolve(__pyx_v_self->eps)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1105, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1067
+  /* "SLEPc/EPS.pyx":1101
  *         CHKERR( EPSSetUp(self.eps) )
  * 
  *     def solve(self):             # <<<<<<<<<<<<<<
@@ -26993,7 +28821,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_100solve(struct PySlepcEPSObject
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1073
+/* "SLEPc/EPS.pyx":1107
  *         CHKERR( EPSSolve(self.eps) )
  * 
  *     def getIterationNumber(self):             # <<<<<<<<<<<<<<
@@ -27002,23 +28830,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_100solve(struct PySlepcEPSObject
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_103getIterationNumber(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_102getIterationNumber[] = "EPS.getIterationNumber(self)\n\n        Gets the current iteration number. If the call to `solve()` is\n        complete, then it returns the number of iterations carried out\n        by the solution method.\n\n        Returns\n        -------\n        its: int\n             Iteration number.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_103getIterationNumber(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_109getIterationNumber(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_108getIterationNumber[] = "EPS.getIterationNumber(self)\n\n        Gets the current iteration number. If the call to `solve()` is\n        complete, then it returns the number of iterations carried out\n        by the solution method.\n\n        Returns\n        -------\n        its: int\n             Iteration number.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_109getIterationNumber(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getIterationNumber (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getIterationNumber", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getIterationNumber", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_102getIterationNumber(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_108getIterationNumber(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_102getIterationNumber(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_108getIterationNumber(struct PySlepcEPSObject *__pyx_v_self) {
   PetscInt __pyx_v_ival;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -27026,7 +28854,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_102getIterationNumber(struct PyS
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getIterationNumber", 0);
 
-  /* "SLEPc/EPS.pyx":1084
+  /* "SLEPc/EPS.pyx":1118
  *              Iteration number.
  *         """
  *         cdef PetscInt ival = 0             # <<<<<<<<<<<<<<
@@ -27035,16 +28863,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_102getIterationNumber(struct PyS
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/EPS.pyx":1085
+  /* "SLEPc/EPS.pyx":1119
  *         """
  *         cdef PetscInt ival = 0
  *         CHKERR( EPSGetIterationNumber(self.eps, &ival) )             # <<<<<<<<<<<<<<
  *         return toInt(ival)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetIterationNumber(__pyx_v_self->eps, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1085, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetIterationNumber(__pyx_v_self->eps, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1119, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1086
+  /* "SLEPc/EPS.pyx":1120
  *         cdef PetscInt ival = 0
  *         CHKERR( EPSGetIterationNumber(self.eps, &ival) )
  *         return toInt(ival)             # <<<<<<<<<<<<<<
@@ -27052,13 +28880,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_102getIterationNumber(struct PyS
  *     def getConvergedReason(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1086, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1120, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1073
+  /* "SLEPc/EPS.pyx":1107
  *         CHKERR( EPSSolve(self.eps) )
  * 
  *     def getIterationNumber(self):             # <<<<<<<<<<<<<<
@@ -27077,7 +28905,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_102getIterationNumber(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1088
+/* "SLEPc/EPS.pyx":1122
  *         return toInt(ival)
  * 
  *     def getConvergedReason(self):             # <<<<<<<<<<<<<<
@@ -27086,23 +28914,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_102getIterationNumber(struct PyS
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_105getConvergedReason(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_104getConvergedReason[] = "EPS.getConvergedReason(self)\n\n        Gets the reason why the `solve()` iteration was stopped.\n\n        Returns\n        -------\n        reason: `EPS.ConvergedReason` enumerate\n                Negative value indicates diverged, positive value\n                converged.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_105getConvergedReason(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_111getConvergedReason(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_110getConvergedReason[] = "EPS.getConvergedReason(self)\n\n        Gets the reason why the `solve()` iteration was stopped.\n\n        Returns\n        -------\n        reason: `EPS.ConvergedReason` enumerate\n                Negative value indicates diverged, positive value\n                converged.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_111getConvergedReason(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getConvergedReason (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getConvergedReason", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getConvergedReason", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_104getConvergedReason(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_110getConvergedReason(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_104getConvergedReason(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_110getConvergedReason(struct PySlepcEPSObject *__pyx_v_self) {
   EPSConvergedReason __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -27110,7 +28938,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_104getConvergedReason(struct PyS
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getConvergedReason", 0);
 
-  /* "SLEPc/EPS.pyx":1098
+  /* "SLEPc/EPS.pyx":1132
  *                 converged.
  *         """
  *         cdef SlepcEPSConvergedReason val = EPS_CONVERGED_ITERATING             # <<<<<<<<<<<<<<
@@ -27119,16 +28947,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_104getConvergedReason(struct PyS
  */
   __pyx_v_val = EPS_CONVERGED_ITERATING;
 
-  /* "SLEPc/EPS.pyx":1099
+  /* "SLEPc/EPS.pyx":1133
  *         """
  *         cdef SlepcEPSConvergedReason val = EPS_CONVERGED_ITERATING
  *         CHKERR( EPSGetConvergedReason(self.eps, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetConvergedReason(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1099, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetConvergedReason(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1133, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1100
+  /* "SLEPc/EPS.pyx":1134
  *         cdef SlepcEPSConvergedReason val = EPS_CONVERGED_ITERATING
  *         CHKERR( EPSGetConvergedReason(self.eps, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -27136,13 +28964,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_104getConvergedReason(struct PyS
  *     def getConverged(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_EPSConvergedReason(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1100, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_EPSConvergedReason(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1134, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1088
+  /* "SLEPc/EPS.pyx":1122
  *         return toInt(ival)
  * 
  *     def getConvergedReason(self):             # <<<<<<<<<<<<<<
@@ -27161,7 +28989,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_104getConvergedReason(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1102
+/* "SLEPc/EPS.pyx":1136
  *         return val
  * 
  *     def getConverged(self):             # <<<<<<<<<<<<<<
@@ -27170,23 +28998,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_104getConvergedReason(struct PyS
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_107getConverged(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_106getConverged[] = "EPS.getConverged(self)\n\n        Gets the number of converged eigenpairs.\n\n        Returns\n        -------\n        nconv: int\n               Number of converged eigenpairs.\n\n        Notes\n        -----\n        This function should be called after `solve()` has finished.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_107getConverged(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_113getConverged(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_112getConverged[] = "EPS.getConverged(self)\n\n        Gets the number of converged eigenpairs.\n\n        Returns\n        -------\n        nconv: int\n               Number of converged eigenpairs.\n\n        Notes\n        -----\n        This function should be called after `solve()` has finished.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_113getConverged(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getConverged (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getConverged", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getConverged", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_106getConverged(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_112getConverged(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_106getConverged(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_112getConverged(struct PySlepcEPSObject *__pyx_v_self) {
   PetscInt __pyx_v_ival;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -27194,7 +29022,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_106getConverged(struct PySlepcEP
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getConverged", 0);
 
-  /* "SLEPc/EPS.pyx":1115
+  /* "SLEPc/EPS.pyx":1149
  *         This function should be called after `solve()` has finished.
  *         """
  *         cdef PetscInt ival = 0             # <<<<<<<<<<<<<<
@@ -27203,16 +29031,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_106getConverged(struct PySlepcEP
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/EPS.pyx":1116
+  /* "SLEPc/EPS.pyx":1150
  *         """
  *         cdef PetscInt ival = 0
  *         CHKERR( EPSGetConverged(self.eps, &ival) )             # <<<<<<<<<<<<<<
  *         return toInt(ival)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetConverged(__pyx_v_self->eps, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1116, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetConverged(__pyx_v_self->eps, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1150, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1117
+  /* "SLEPc/EPS.pyx":1151
  *         cdef PetscInt ival = 0
  *         CHKERR( EPSGetConverged(self.eps, &ival) )
  *         return toInt(ival)             # <<<<<<<<<<<<<<
@@ -27220,13 +29048,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_106getConverged(struct PySlepcEP
  *     def getEigenvalue(self, int i):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1117, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1151, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1102
+  /* "SLEPc/EPS.pyx":1136
  *         return val
  * 
  *     def getConverged(self):             # <<<<<<<<<<<<<<
@@ -27245,7 +29073,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_106getConverged(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1119
+/* "SLEPc/EPS.pyx":1153
  *         return toInt(ival)
  * 
  *     def getEigenvalue(self, int i):             # <<<<<<<<<<<<<<
@@ -27254,9 +29082,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_106getConverged(struct PySlepcEP
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_109getEigenvalue(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_108getEigenvalue[] = "EPS.getEigenvalue(self, int i)\n\n        Gets the i-th eigenvalue as computed by `solve()`.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be obtained.\n\n        Returns\n        -------\n        e: scalar (possibly complex)\n           The computed eigenvalue.\n\n        Notes\n        -----\n        The index ``i`` should be a value between ``0`` and\n        ``nconv-1``  [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_109getEigenvalue(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_115getEigenvalue(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_114getEigenvalue[] = "EPS.getEigenvalue(self, int i)\n\n        Gets the i-th eigenvalue as computed by `solve()`.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be obtained.\n\n        Returns\n        -------\n        e: scalar (possibly complex)\n           The computed eigenvalue.\n\n        Notes\n        -----\n        The index ``i`` should be a value between ``0`` and\n        ``nconv-1``  [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_115getEigenvalue(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int __pyx_v_i;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -27269,6 +29097,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_109getEigenvalue(PyObject *__pyx
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -27279,42 +29108,40 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_109getEigenvalue(PyObject *__pyx
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getEigenvalue") < 0)) __PYX_ERR(13, 1119, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getEigenvalue") < 0)) __PYX_ERR(14, 1153, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
     } else {
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(13, 1119, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(14, 1153, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getEigenvalue", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1119, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getEigenvalue", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1153, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.getEigenvalue", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_108getEigenvalue(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_i);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_114getEigenvalue(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_i);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_108getEigenvalue(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getEigenvalue(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i) {
   PetscScalar __pyx_v_sval1;
   PetscScalar __pyx_v_sval2;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getEigenvalue", 0);
 
-  /* "SLEPc/EPS.pyx":1140
+  /* "SLEPc/EPS.pyx":1174
  *         `setWhichEigenpairs()`.
  *         """
  *         cdef PetscScalar sval1 = 0             # <<<<<<<<<<<<<<
@@ -27323,52 +29150,39 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_108getEigenvalue(struct PySlepcE
  */
   __pyx_v_sval1 = 0.0;
 
-  /* "SLEPc/EPS.pyx":1141
+  /* "SLEPc/EPS.pyx":1175
  *         """
  *         cdef PetscScalar sval1 = 0
  *         cdef PetscScalar sval2 = 0             # <<<<<<<<<<<<<<
  *         CHKERR( EPSGetEigenvalue(self.eps, i, &sval1, &sval2) )
- *         return complex(toScalar(sval1), toScalar(sval2))
+ *         return toComplex(sval1, sval2)
  */
   __pyx_v_sval2 = 0.0;
 
-  /* "SLEPc/EPS.pyx":1142
+  /* "SLEPc/EPS.pyx":1176
  *         cdef PetscScalar sval1 = 0
  *         cdef PetscScalar sval2 = 0
  *         CHKERR( EPSGetEigenvalue(self.eps, i, &sval1, &sval2) )             # <<<<<<<<<<<<<<
- *         return complex(toScalar(sval1), toScalar(sval2))
+ *         return toComplex(sval1, sval2)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetEigenvalue(__pyx_v_self->eps, __pyx_v_i, (&__pyx_v_sval1), (&__pyx_v_sval2))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1142, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetEigenvalue(__pyx_v_self->eps, __pyx_v_i, (&__pyx_v_sval1), (&__pyx_v_sval2))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1176, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1143
+  /* "SLEPc/EPS.pyx":1177
  *         cdef PetscScalar sval2 = 0
  *         CHKERR( EPSGetEigenvalue(self.eps, i, &sval1, &sval2) )
- *         return complex(toScalar(sval1), toScalar(sval2))             # <<<<<<<<<<<<<<
+ *         return toComplex(sval1, sval2)             # <<<<<<<<<<<<<<
  * 
- *     def getEigenvector(self, int i, Vec Vr not None, Vec Vi=None):
+ *     def getEigenvector(self, int i, Vec Vr, Vec Vi=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1143, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toComplex(__pyx_v_sval1, __pyx_v_sval2); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1177, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 1143, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 1143, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_3);
-  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
+  __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
-  __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyComplex_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 1143, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1119
+  /* "SLEPc/EPS.pyx":1153
  *         return toInt(ival)
  * 
  *     def getEigenvalue(self, int i):             # <<<<<<<<<<<<<<
@@ -27379,8 +29193,6 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_108getEigenvalue(struct PySlepcE
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.getEigenvalue", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
@@ -27389,18 +29201,18 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_108getEigenvalue(struct PySlepcE
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1145
- *         return complex(toScalar(sval1), toScalar(sval2))
+/* "SLEPc/EPS.pyx":1179
+ *         return toComplex(sval1, sval2)
  * 
- *     def getEigenvector(self, int i, Vec Vr not None, Vec Vi=None):             # <<<<<<<<<<<<<<
+ *     def getEigenvector(self, int i, Vec Vr, Vec Vi=None):             # <<<<<<<<<<<<<<
  *         """
  *         Gets the i-th eigenvector as computed by `solve()`.
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_111getEigenvector(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_110getEigenvector[] = "EPS.getEigenvector(self, int i, Vec Vr, Vec Vi=None)\n\n        Gets the i-th eigenvector as computed by `solve()`.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be obtained.\n        Vr: Vec\n            Placeholder for the returned eigenvector (real part).\n        Vi: Vec, optional\n            Placeholder for the returned eigenvector (imaginary part).\n\n        Notes\n [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_111getEigenvector(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_117getEigenvector(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_116getEigenvector[] = "EPS.getEigenvector(self, int i, Vec Vr, Vec Vi=None)\n\n        Gets the i-th eigenvector as computed by `solve()`.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be obtained.\n        Vr: Vec\n            Placeholder for the returned eigenvector (real part).\n        Vi: Vec, optional\n            Placeholder for the returned eigenvector (imaginary part).\n\n        Notes\n [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_117getEigenvector(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int __pyx_v_i;
   struct PyPetscVecObject *__pyx_v_Vr = 0;
   struct PyPetscVecObject *__pyx_v_Vi = 0;
@@ -27416,8 +29228,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_111getEigenvector(PyObject *__py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -27426,11 +29241,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_111getEigenvector(PyObject *__py
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Vr)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("getEigenvector", 0, 2, 3, 1); __PYX_ERR(13, 1145, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("getEigenvector", 0, 2, 3, 1); __PYX_ERR(14, 1179, __pyx_L3_error)
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Vi);
@@ -27438,32 +29255,33 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_111getEigenvector(PyObject *__py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getEigenvector") < 0)) __PYX_ERR(13, 1145, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getEigenvector") < 0)) __PYX_ERR(14, 1179, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
         values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(13, 1145, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(14, 1179, __pyx_L3_error)
     __pyx_v_Vr = ((struct PyPetscVecObject *)values[1]);
     __pyx_v_Vi = ((struct PyPetscVecObject *)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getEigenvector", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1145, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getEigenvector", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1179, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.getEigenvector", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vr), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "Vr", 0))) __PYX_ERR(13, 1145, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vi), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vi", 0))) __PYX_ERR(13, 1145, __pyx_L1_error)
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_110getEigenvector(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_i, __pyx_v_Vr, __pyx_v_Vi);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vr), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "Vr", 0))) __PYX_ERR(14, 1179, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vi), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vi", 0))) __PYX_ERR(14, 1179, __pyx_L1_error)
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_116getEigenvector(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_i, __pyx_v_Vr, __pyx_v_Vi);
 
   /* function exit code */
   goto __pyx_L0;
@@ -27474,76 +29292,54 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_111getEigenvector(PyObject *__py
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_110getEigenvector(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_Vr, struct PyPetscVecObject *__pyx_v_Vi) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_116getEigenvector(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_Vr, struct PyPetscVecObject *__pyx_v_Vi) {
   Vec __pyx_v_vecr;
   Vec __pyx_v_veci;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
+  Vec __pyx_t_1;
   int __pyx_t_2;
-  Vec __pyx_t_3;
-  int __pyx_t_4;
+  int __pyx_t_3;
   __Pyx_RefNannySetupContext("getEigenvector", 0);
 
-  /* "SLEPc/EPS.pyx":1165
+  /* "SLEPc/EPS.pyx":1199
  *         `setWhichEigenpairs()`.
  *         """
- *         cdef PetscVec vecr = NULL             # <<<<<<<<<<<<<<
- *         cdef PetscVec veci = NULL
- *         if Vr is not None: vecr = Vr.vec
- */
-  __pyx_v_vecr = NULL;
-
-  /* "SLEPc/EPS.pyx":1166
- *         """
- *         cdef PetscVec vecr = NULL
- *         cdef PetscVec veci = NULL             # <<<<<<<<<<<<<<
- *         if Vr is not None: vecr = Vr.vec
- *         if Vi is not None: veci = Vi.vec
- */
-  __pyx_v_veci = NULL;
-
-  /* "SLEPc/EPS.pyx":1167
- *         cdef PetscVec vecr = NULL
- *         cdef PetscVec veci = NULL
- *         if Vr is not None: vecr = Vr.vec             # <<<<<<<<<<<<<<
- *         if Vi is not None: veci = Vi.vec
+ *         cdef PetscVec vecr = Vr.vec             # <<<<<<<<<<<<<<
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  *         CHKERR( EPSGetEigenvector(self.eps, i, vecr, veci) )
  */
-  __pyx_t_1 = (((PyObject *)__pyx_v_Vr) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_Vr->vec;
-    __pyx_v_vecr = __pyx_t_3;
-  }
+  __pyx_t_1 = __pyx_v_Vr->vec;
+  __pyx_v_vecr = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1168
- *         cdef PetscVec veci = NULL
- *         if Vr is not None: vecr = Vr.vec
- *         if Vi is not None: veci = Vi.vec             # <<<<<<<<<<<<<<
+  /* "SLEPc/EPS.pyx":1200
+ *         """
+ *         cdef PetscVec vecr = Vr.vec
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL             # <<<<<<<<<<<<<<
  *         CHKERR( EPSGetEigenvector(self.eps, i, vecr, veci) )
  * 
  */
   __pyx_t_2 = (((PyObject *)__pyx_v_Vi) != Py_None);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_v_Vi->vec;
-    __pyx_v_veci = __pyx_t_3;
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_Vi->vec;
+  } else {
+    __pyx_t_1 = ((Vec)NULL);
   }
+  __pyx_v_veci = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1169
- *         if Vr is not None: vecr = Vr.vec
- *         if Vi is not None: veci = Vi.vec
+  /* "SLEPc/EPS.pyx":1201
+ *         cdef PetscVec vecr = Vr.vec
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  *         CHKERR( EPSGetEigenvector(self.eps, i, vecr, veci) )             # <<<<<<<<<<<<<<
  * 
  *     def getEigenpair(self, int i, Vec Vr=None, Vec Vi=None):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetEigenvector(__pyx_v_self->eps, __pyx_v_i, __pyx_v_vecr, __pyx_v_veci)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(13, 1169, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetEigenvector(__pyx_v_self->eps, __pyx_v_i, __pyx_v_vecr, __pyx_v_veci)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(14, 1201, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1145
- *         return complex(toScalar(sval1), toScalar(sval2))
+  /* "SLEPc/EPS.pyx":1179
+ *         return toComplex(sval1, sval2)
  * 
- *     def getEigenvector(self, int i, Vec Vr not None, Vec Vi=None):             # <<<<<<<<<<<<<<
+ *     def getEigenvector(self, int i, Vec Vr, Vec Vi=None):             # <<<<<<<<<<<<<<
  *         """
  *         Gets the i-th eigenvector as computed by `solve()`.
  */
@@ -27560,7 +29356,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_110getEigenvector(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1171
+/* "SLEPc/EPS.pyx":1203
  *         CHKERR( EPSGetEigenvector(self.eps, i, vecr, veci) )
  * 
  *     def getEigenpair(self, int i, Vec Vr=None, Vec Vi=None):             # <<<<<<<<<<<<<<
@@ -27569,9 +29365,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_110getEigenvector(struct PySlepc
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_113getEigenpair(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_112getEigenpair[] = "EPS.getEigenpair(self, int i, Vec Vr=None, Vec Vi=None)\n\n        Gets the i-th solution of the eigenproblem as computed by\n        `solve()`.  The solution consists of both the eigenvalue and\n        the eigenvector.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be obtained.\n        Vr: Vec\n            Placeholder for the returned eigenvector (real part).\n        Vi: V [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_113getEigenpair(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_119getEigenpair(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_118getEigenpair[] = "EPS.getEigenpair(self, int i, Vec Vr=None, Vec Vi=None)\n\n        Gets the i-th solution of the eigenproblem as computed by\n        `solve()`.  The solution consists of both the eigenvalue and\n        the eigenvector.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be obtained.\n        Vr: Vec\n            Placeholder for the returned eigenvector (real part).\n        Vi: V [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_119getEigenpair(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int __pyx_v_i;
   struct PyPetscVecObject *__pyx_v_Vr = 0;
   struct PyPetscVecObject *__pyx_v_Vi = 0;
@@ -27588,8 +29384,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_113getEigenpair(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -27598,11 +29397,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_113getEigenpair(PyObject *__pyx_
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Vr);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Vi);
@@ -27610,32 +29411,34 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_113getEigenpair(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getEigenpair") < 0)) __PYX_ERR(13, 1171, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getEigenpair") < 0)) __PYX_ERR(14, 1203, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(13, 1171, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(14, 1203, __pyx_L3_error)
     __pyx_v_Vr = ((struct PyPetscVecObject *)values[1]);
     __pyx_v_Vi = ((struct PyPetscVecObject *)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getEigenpair", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1171, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getEigenpair", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1203, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.getEigenpair", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vr), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vr", 0))) __PYX_ERR(13, 1171, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vi), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vi", 0))) __PYX_ERR(13, 1171, __pyx_L1_error)
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_112getEigenpair(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_i, __pyx_v_Vr, __pyx_v_Vi);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vr), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vr", 0))) __PYX_ERR(14, 1203, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vi), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vi", 0))) __PYX_ERR(14, 1203, __pyx_L1_error)
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_118getEigenpair(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_i, __pyx_v_Vr, __pyx_v_Vi);
 
   /* function exit code */
   goto __pyx_L0;
@@ -27646,123 +29449,91 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_113getEigenpair(PyObject *__pyx_
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_112getEigenpair(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_Vr, struct PyPetscVecObject *__pyx_v_Vi) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_118getEigenpair(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_Vr, struct PyPetscVecObject *__pyx_v_Vi) {
   PetscScalar __pyx_v_sval1;
   PetscScalar __pyx_v_sval2;
   Vec __pyx_v_vecr;
   Vec __pyx_v_veci;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
+  Vec __pyx_t_1;
   int __pyx_t_2;
-  Vec __pyx_t_3;
-  int __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getEigenpair", 0);
 
-  /* "SLEPc/EPS.pyx":1198
+  /* "SLEPc/EPS.pyx":1230
  *         `setWhichEigenpairs()`.
  *         """
  *         cdef PetscScalar sval1 = 0             # <<<<<<<<<<<<<<
  *         cdef PetscScalar sval2 = 0
- *         cdef PetscVec vecr = NULL
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
  */
   __pyx_v_sval1 = 0.0;
 
-  /* "SLEPc/EPS.pyx":1199
+  /* "SLEPc/EPS.pyx":1231
  *         """
  *         cdef PetscScalar sval1 = 0
  *         cdef PetscScalar sval2 = 0             # <<<<<<<<<<<<<<
- *         cdef PetscVec vecr = NULL
- *         cdef PetscVec veci = NULL
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  */
   __pyx_v_sval2 = 0.0;
 
-  /* "SLEPc/EPS.pyx":1200
+  /* "SLEPc/EPS.pyx":1232
  *         cdef PetscScalar sval1 = 0
  *         cdef PetscScalar sval2 = 0
- *         cdef PetscVec vecr = NULL             # <<<<<<<<<<<<<<
- *         cdef PetscVec veci = NULL
- *         if Vr is not None: vecr = Vr.vec
- */
-  __pyx_v_vecr = NULL;
-
-  /* "SLEPc/EPS.pyx":1201
- *         cdef PetscScalar sval2 = 0
- *         cdef PetscVec vecr = NULL
- *         cdef PetscVec veci = NULL             # <<<<<<<<<<<<<<
- *         if Vr is not None: vecr = Vr.vec
- *         if Vi is not None: veci = Vi.vec
- */
-  __pyx_v_veci = NULL;
-
-  /* "SLEPc/EPS.pyx":1202
- *         cdef PetscVec vecr = NULL
- *         cdef PetscVec veci = NULL
- *         if Vr is not None: vecr = Vr.vec             # <<<<<<<<<<<<<<
- *         if Vi is not None: veci = Vi.vec
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL             # <<<<<<<<<<<<<<
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  *         CHKERR( EPSGetEigenpair(self.eps, i, &sval1, &sval2, vecr, veci) )
  */
-  __pyx_t_1 = (((PyObject *)__pyx_v_Vr) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_Vr->vec;
-    __pyx_v_vecr = __pyx_t_3;
+  __pyx_t_2 = (((PyObject *)__pyx_v_Vr) != Py_None);
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_Vr->vec;
+  } else {
+    __pyx_t_1 = ((Vec)NULL);
   }
+  __pyx_v_vecr = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1203
- *         cdef PetscVec veci = NULL
- *         if Vr is not None: vecr = Vr.vec
- *         if Vi is not None: veci = Vi.vec             # <<<<<<<<<<<<<<
+  /* "SLEPc/EPS.pyx":1233
+ *         cdef PetscScalar sval2 = 0
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL             # <<<<<<<<<<<<<<
  *         CHKERR( EPSGetEigenpair(self.eps, i, &sval1, &sval2, vecr, veci) )
- *         return complex(toScalar(sval1), toScalar(sval2))
+ *         return toComplex(sval1, sval2)
  */
   __pyx_t_2 = (((PyObject *)__pyx_v_Vi) != Py_None);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_v_Vi->vec;
-    __pyx_v_veci = __pyx_t_3;
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_Vi->vec;
+  } else {
+    __pyx_t_1 = ((Vec)NULL);
   }
+  __pyx_v_veci = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1204
- *         if Vr is not None: vecr = Vr.vec
- *         if Vi is not None: veci = Vi.vec
+  /* "SLEPc/EPS.pyx":1234
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  *         CHKERR( EPSGetEigenpair(self.eps, i, &sval1, &sval2, vecr, veci) )             # <<<<<<<<<<<<<<
- *         return complex(toScalar(sval1), toScalar(sval2))
+ *         return toComplex(sval1, sval2)
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetEigenpair(__pyx_v_self->eps, __pyx_v_i, (&__pyx_v_sval1), (&__pyx_v_sval2), __pyx_v_vecr, __pyx_v_veci)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(13, 1204, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetEigenpair(__pyx_v_self->eps, __pyx_v_i, (&__pyx_v_sval1), (&__pyx_v_sval2), __pyx_v_vecr, __pyx_v_veci)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(14, 1234, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1205
- *         if Vi is not None: veci = Vi.vec
+  /* "SLEPc/EPS.pyx":1235
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  *         CHKERR( EPSGetEigenpair(self.eps, i, &sval1, &sval2, vecr, veci) )
- *         return complex(toScalar(sval1), toScalar(sval2))             # <<<<<<<<<<<<<<
+ *         return toComplex(sval1, sval2)             # <<<<<<<<<<<<<<
  * 
  *     def getInvariantSubspace(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval1); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 1205, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval2); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 1205, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 1205, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
-  __pyx_t_5 = 0;
-  __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyComplex_Type)), __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 1205, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_r = __pyx_t_6;
-  __pyx_t_6 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toComplex(__pyx_v_sval1, __pyx_v_sval2); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1235, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1171
+  /* "SLEPc/EPS.pyx":1203
  *         CHKERR( EPSGetEigenvector(self.eps, i, vecr, veci) )
  * 
  *     def getEigenpair(self, int i, Vec Vr=None, Vec Vi=None):             # <<<<<<<<<<<<<<
@@ -27772,9 +29543,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_112getEigenpair(struct PySlepcEP
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_4);
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.getEigenpair", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
@@ -27783,8 +29552,8 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_112getEigenpair(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1207
- *         return complex(toScalar(sval1), toScalar(sval2))
+/* "SLEPc/EPS.pyx":1237
+ *         return toComplex(sval1, sval2)
  * 
  *     def getInvariantSubspace(self):             # <<<<<<<<<<<<<<
  *         """
@@ -27792,23 +29561,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_112getEigenpair(struct PySlepcEP
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_115getInvariantSubspace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace[] = "EPS.getInvariantSubspace(self)\n\n        Gets an orthonormal basis of the computed invariant subspace.\n\n        Returns\n        -------\n        subspace: list of Vec\n           Basis of the invariant subspace.\n\n        Notes\n        -----\n        This function should be called after `solve()` has finished.\n\n        The returned vectors span an invariant subspace associated\n        with the computed eige [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_115getInvariantSubspace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_121getInvariantSubspace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_120getInvariantSubspace[] = "EPS.getInvariantSubspace(self)\n\n        Gets an orthonormal basis of the computed invariant subspace.\n\n        Returns\n        -------\n        subspace: list of Vec\n           Basis of the invariant subspace.\n\n        Notes\n        -----\n        This function should be called after `solve()` has finished.\n\n        The returned vectors span an invariant subspace associated\n        with the computed eige [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_121getInvariantSubspace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getInvariantSubspace (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getInvariantSubspace", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getInvariantSubspace", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_120getInvariantSubspace(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_120getInvariantSubspace(struct PySlepcEPSObject *__pyx_v_self) {
   PetscInt __pyx_v_i;
   PetscInt __pyx_v_ncv;
   Vec __pyx_v_v;
@@ -27827,7 +29596,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct P
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("getInvariantSubspace", 0);
 
-  /* "SLEPc/EPS.pyx":1225
+  /* "SLEPc/EPS.pyx":1255
  *         similar definition applies for generalized eigenproblems).
  *         """
  *         cdef PetscInt i = 0, ncv = 0             # <<<<<<<<<<<<<<
@@ -27837,7 +29606,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct P
   __pyx_v_i = 0;
   __pyx_v_ncv = 0;
 
-  /* "SLEPc/EPS.pyx":1226
+  /* "SLEPc/EPS.pyx":1256
  *         """
  *         cdef PetscInt i = 0, ncv = 0
  *         cdef PetscVec v = NULL, *isp = NULL             # <<<<<<<<<<<<<<
@@ -27847,28 +29616,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct P
   __pyx_v_v = NULL;
   __pyx_v_isp = NULL;
 
-  /* "SLEPc/EPS.pyx":1227
+  /* "SLEPc/EPS.pyx":1257
  *         cdef PetscInt i = 0, ncv = 0
  *         cdef PetscVec v = NULL, *isp = NULL
  *         cdef list subspace = []             # <<<<<<<<<<<<<<
  *         CHKERR( EPSGetConverged(self.eps, &ncv) )
  *         if ncv == 0: return subspace
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1227, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_subspace = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":1228
+  /* "SLEPc/EPS.pyx":1258
  *         cdef PetscVec v = NULL, *isp = NULL
  *         cdef list subspace = []
  *         CHKERR( EPSGetConverged(self.eps, &ncv) )             # <<<<<<<<<<<<<<
  *         if ncv == 0: return subspace
  *         cdef PetscMat A = NULL
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetConverged(__pyx_v_self->eps, (&__pyx_v_ncv))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1228, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetConverged(__pyx_v_self->eps, (&__pyx_v_ncv))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1258, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1229
+  /* "SLEPc/EPS.pyx":1259
  *         cdef list subspace = []
  *         CHKERR( EPSGetConverged(self.eps, &ncv) )
  *         if ncv == 0: return subspace             # <<<<<<<<<<<<<<
@@ -27883,7 +29652,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct P
     goto __pyx_L0;
   }
 
-  /* "SLEPc/EPS.pyx":1230
+  /* "SLEPc/EPS.pyx":1260
  *         CHKERR( EPSGetConverged(self.eps, &ncv) )
  *         if ncv == 0: return subspace
  *         cdef PetscMat A = NULL             # <<<<<<<<<<<<<<
@@ -27892,25 +29661,25 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct P
  */
   __pyx_v_A = NULL;
 
-  /* "SLEPc/EPS.pyx":1231
+  /* "SLEPc/EPS.pyx":1261
  *         if ncv == 0: return subspace
  *         cdef PetscMat A = NULL
  *         CHKERR( EPSGetOperators(self.eps, &A, NULL) )             # <<<<<<<<<<<<<<
  *         CHKERR( MatCreateVecs(A, &v, NULL) )
  *         cdef Vec V = None
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetOperators(__pyx_v_self->eps, (&__pyx_v_A), NULL)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1231, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetOperators(__pyx_v_self->eps, (&__pyx_v_A), NULL)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1261, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1232
+  /* "SLEPc/EPS.pyx":1262
  *         cdef PetscMat A = NULL
  *         CHKERR( EPSGetOperators(self.eps, &A, NULL) )
  *         CHKERR( MatCreateVecs(A, &v, NULL) )             # <<<<<<<<<<<<<<
  *         cdef Vec V = None
  *         cdef object tmp = allocate(ncv*sizeof(Vec),<void**>&isp)
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MatCreateVecs(__pyx_v_A, (&__pyx_v_v), NULL)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1232, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MatCreateVecs(__pyx_v_A, (&__pyx_v_v), NULL)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1262, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1233
+  /* "SLEPc/EPS.pyx":1263
  *         CHKERR( EPSGetOperators(self.eps, &A, NULL) )
  *         CHKERR( MatCreateVecs(A, &v, NULL) )
  *         cdef Vec V = None             # <<<<<<<<<<<<<<
@@ -27920,19 +29689,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct P
   __Pyx_INCREF(Py_None);
   __pyx_v_V = ((struct PyPetscVecObject *)Py_None);
 
-  /* "SLEPc/EPS.pyx":1234
+  /* "SLEPc/EPS.pyx":1264
  *         CHKERR( MatCreateVecs(A, &v, NULL) )
  *         cdef Vec V = None
  *         cdef object tmp = allocate(ncv*sizeof(Vec),<void**>&isp)             # <<<<<<<<<<<<<<
  *         for i in range(ncv):
  *             if i == 0: isp[0] = v
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_allocate((__pyx_v_ncv * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_isp))); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1234, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_allocate((__pyx_v_ncv * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_isp))); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1264, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_tmp = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":1235
+  /* "SLEPc/EPS.pyx":1265
  *         cdef Vec V = None
  *         cdef object tmp = allocate(ncv*sizeof(Vec),<void**>&isp)
  *         for i in range(ncv):             # <<<<<<<<<<<<<<
@@ -27943,7 +29712,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct P
   for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
     __pyx_v_i = __pyx_t_5;
 
-    /* "SLEPc/EPS.pyx":1236
+    /* "SLEPc/EPS.pyx":1266
  *         cdef object tmp = allocate(ncv*sizeof(Vec),<void**>&isp)
  *         for i in range(ncv):
  *             if i == 0: isp[0] = v             # <<<<<<<<<<<<<<
@@ -27955,7 +29724,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct P
       (__pyx_v_isp[0]) = __pyx_v_v;
     }
 
-    /* "SLEPc/EPS.pyx":1237
+    /* "SLEPc/EPS.pyx":1267
  *         for i in range(ncv):
  *             if i == 0: isp[0] = v
  *             if i >= 1: CHKERR( VecDuplicate(v, &isp[i]) )             # <<<<<<<<<<<<<<
@@ -27964,34 +29733,34 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct P
  */
     __pyx_t_3 = ((__pyx_v_i >= 1) != 0);
     if (__pyx_t_3) {
-      __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecDuplicate(__pyx_v_v, (&(__pyx_v_isp[__pyx_v_i])))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1237, __pyx_L1_error)
+      __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecDuplicate(__pyx_v_v, (&(__pyx_v_isp[__pyx_v_i])))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1267, __pyx_L1_error)
     }
 
-    /* "SLEPc/EPS.pyx":1238
+    /* "SLEPc/EPS.pyx":1268
  *             if i == 0: isp[0] = v
  *             if i >= 1: CHKERR( VecDuplicate(v, &isp[i]) )
  *             V = Vec(); V.vec = isp[i]; subspace.append(V)             # <<<<<<<<<<<<<<
  *         CHKERR( EPSGetInvariantSubspace(self.eps, isp) )
  *         return subspace
  */
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Vec), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1238, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Vec), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1268, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_V, ((struct PyPetscVecObject *)__pyx_t_1));
     __pyx_t_1 = 0;
     __pyx_v_V->vec = (__pyx_v_isp[__pyx_v_i]);
-    __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_subspace, ((PyObject *)__pyx_v_V)); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(13, 1238, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_subspace, ((PyObject *)__pyx_v_V)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(14, 1268, __pyx_L1_error)
   }
 
-  /* "SLEPc/EPS.pyx":1239
+  /* "SLEPc/EPS.pyx":1269
  *             if i >= 1: CHKERR( VecDuplicate(v, &isp[i]) )
  *             V = Vec(); V.vec = isp[i]; subspace.append(V)
  *         CHKERR( EPSGetInvariantSubspace(self.eps, isp) )             # <<<<<<<<<<<<<<
  *         return subspace
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetInvariantSubspace(__pyx_v_self->eps, __pyx_v_isp)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1239, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetInvariantSubspace(__pyx_v_self->eps, __pyx_v_isp)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1269, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1240
+  /* "SLEPc/EPS.pyx":1270
  *             V = Vec(); V.vec = isp[i]; subspace.append(V)
  *         CHKERR( EPSGetInvariantSubspace(self.eps, isp) )
  *         return subspace             # <<<<<<<<<<<<<<
@@ -28003,8 +29772,8 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct P
   __pyx_r = __pyx_v_subspace;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1207
- *         return complex(toScalar(sval1), toScalar(sval2))
+  /* "SLEPc/EPS.pyx":1237
+ *         return toComplex(sval1, sval2)
  * 
  *     def getInvariantSubspace(self):             # <<<<<<<<<<<<<<
  *         """
@@ -28025,7 +29794,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct P
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1244
+/* "SLEPc/EPS.pyx":1274
  *     #
  * 
  *     def getErrorEstimate(self, int i):             # <<<<<<<<<<<<<<
@@ -28034,9 +29803,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace(struct P
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_117getErrorEstimate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_116getErrorEstimate[] = "EPS.getErrorEstimate(self, int i)\n\n        Returns the error estimate associated to the i-th computed\n        eigenpair.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be considered.\n\n        Returns\n        -------\n        e: real\n           Error estimate.\n\n        Notes\n        -----\n        This is the error estimate used internally by the\n        eigensol [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_117getErrorEstimate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_123getErrorEstimate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_122getErrorEstimate[] = "EPS.getErrorEstimate(self, int i)\n\n        Returns the error estimate associated to the i-th computed\n        eigenpair.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be considered.\n\n        Returns\n        -------\n        e: real\n           Error estimate.\n\n        Notes\n        -----\n        This is the error estimate used internally by the\n        eigensol [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_123getErrorEstimate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int __pyx_v_i;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -28049,6 +29818,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_117getErrorEstimate(PyObject *__
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -28059,31 +29829,31 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_117getErrorEstimate(PyObject *__
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getErrorEstimate") < 0)) __PYX_ERR(13, 1244, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getErrorEstimate") < 0)) __PYX_ERR(14, 1274, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
     } else {
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(13, 1244, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(14, 1274, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getErrorEstimate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1244, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getErrorEstimate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1274, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.getErrorEstimate", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_116getErrorEstimate(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_i);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_122getErrorEstimate(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_i);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_116getErrorEstimate(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_122getErrorEstimate(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i) {
   PetscReal __pyx_v_rval;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -28091,7 +29861,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_116getErrorEstimate(struct PySle
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getErrorEstimate", 0);
 
-  /* "SLEPc/EPS.pyx":1265
+  /* "SLEPc/EPS.pyx":1295
  *         `computeError()`.
  *         """
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -28100,16 +29870,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_116getErrorEstimate(struct PySle
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/EPS.pyx":1266
+  /* "SLEPc/EPS.pyx":1296
  *         """
  *         cdef PetscReal rval = 0
  *         CHKERR( EPSGetErrorEstimate(self.eps, i, &rval) )             # <<<<<<<<<<<<<<
  *         return toReal(rval)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetErrorEstimate(__pyx_v_self->eps, __pyx_v_i, (&__pyx_v_rval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1266, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSGetErrorEstimate(__pyx_v_self->eps, __pyx_v_i, (&__pyx_v_rval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1296, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1267
+  /* "SLEPc/EPS.pyx":1297
  *         cdef PetscReal rval = 0
  *         CHKERR( EPSGetErrorEstimate(self.eps, i, &rval) )
  *         return toReal(rval)             # <<<<<<<<<<<<<<
@@ -28117,13 +29887,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_116getErrorEstimate(struct PySle
  *     def computeError(self, int i, etype=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1267, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1297, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1244
+  /* "SLEPc/EPS.pyx":1274
  *     #
  * 
  *     def getErrorEstimate(self, int i):             # <<<<<<<<<<<<<<
@@ -28142,7 +29912,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_116getErrorEstimate(struct PySle
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1269
+/* "SLEPc/EPS.pyx":1299
  *         return toReal(rval)
  * 
  *     def computeError(self, int i, etype=None):             # <<<<<<<<<<<<<<
@@ -28151,9 +29921,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_116getErrorEstimate(struct PySle
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_119computeError(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_118computeError[] = "EPS.computeError(self, int i, etype=None)\n\n        Computes the error (based on the residual norm) associated with the i-th\n        computed eigenpair.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be considered.\n        etype: `EPS.ErrorType` enumerate\n           The error type to compute.\n\n        Returns\n        -------\n        e: real\n           The error bound, [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_119computeError(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_125computeError(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_124computeError[] = "EPS.computeError(self, int i, etype=None)\n\n        Computes the error (based on the residual norm) associated with the i-th\n        computed eigenpair.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be considered.\n        etype: `EPS.ErrorType` enumerate\n           The error type to compute.\n\n        Returns\n        -------\n        e: real\n           The error bound, [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_125computeError(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int __pyx_v_i;
   PyObject *__pyx_v_etype = 0;
   PyObject *__pyx_r = 0;
@@ -28168,7 +29938,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_119computeError(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -28177,6 +29949,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_119computeError(PyObject *__pyx_
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_etype);
@@ -28184,35 +29957,36 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_119computeError(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "computeError") < 0)) __PYX_ERR(13, 1269, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "computeError") < 0)) __PYX_ERR(14, 1299, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(13, 1269, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(14, 1299, __pyx_L3_error)
     __pyx_v_etype = values[1];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("computeError", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1269, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("computeError", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1299, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.computeError", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_118computeError(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_i, __pyx_v_etype);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_124computeError(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_i, __pyx_v_etype);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_118computeError(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, PyObject *__pyx_v_etype) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_124computeError(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, PyObject *__pyx_v_etype) {
   EPSErrorType __pyx_v_et;
   PetscReal __pyx_v_rval;
   PyObject *__pyx_r = NULL;
@@ -28224,7 +29998,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_118computeError(struct PySlepcEP
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("computeError", 0);
 
-  /* "SLEPc/EPS.pyx":1293
+  /* "SLEPc/EPS.pyx":1323
  *         ``nconv-1`` (see `getConverged()`).
  *         """
  *         cdef SlepcEPSErrorType et = EPS_ERROR_RELATIVE             # <<<<<<<<<<<<<<
@@ -28233,7 +30007,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_118computeError(struct PySlepcEP
  */
   __pyx_v_et = EPS_ERROR_RELATIVE;
 
-  /* "SLEPc/EPS.pyx":1294
+  /* "SLEPc/EPS.pyx":1324
  *         """
  *         cdef SlepcEPSErrorType et = EPS_ERROR_RELATIVE
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -28242,7 +30016,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_118computeError(struct PySlepcEP
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/EPS.pyx":1295
+  /* "SLEPc/EPS.pyx":1325
  *         cdef SlepcEPSErrorType et = EPS_ERROR_RELATIVE
  *         cdef PetscReal rval = 0
  *         if etype is not None: et = etype             # <<<<<<<<<<<<<<
@@ -28252,20 +30026,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_118computeError(struct PySlepcEP
   __pyx_t_1 = (__pyx_v_etype != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = ((EPSErrorType)__Pyx_PyInt_As_EPSErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 1295, __pyx_L1_error)
+    __pyx_t_3 = ((EPSErrorType)__Pyx_PyInt_As_EPSErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 1325, __pyx_L1_error)
     __pyx_v_et = __pyx_t_3;
   }
 
-  /* "SLEPc/EPS.pyx":1296
+  /* "SLEPc/EPS.pyx":1326
  *         cdef PetscReal rval = 0
  *         if etype is not None: et = etype
  *         CHKERR( EPSComputeError(self.eps, i, et, &rval) )             # <<<<<<<<<<<<<<
  *         return toReal(rval)
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSComputeError(__pyx_v_self->eps, __pyx_v_i, __pyx_v_et, (&__pyx_v_rval))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(13, 1296, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSComputeError(__pyx_v_self->eps, __pyx_v_i, __pyx_v_et, (&__pyx_v_rval))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(14, 1326, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1297
+  /* "SLEPc/EPS.pyx":1327
  *         if etype is not None: et = etype
  *         CHKERR( EPSComputeError(self.eps, i, et, &rval) )
  *         return toReal(rval)             # <<<<<<<<<<<<<<
@@ -28273,13 +30047,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_118computeError(struct PySlepcEP
  *     def errorView(self, etype=None, Viewer viewer=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 1297, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 1327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_r = __pyx_t_5;
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1269
+  /* "SLEPc/EPS.pyx":1299
  *         return toReal(rval)
  * 
  *     def computeError(self, int i, etype=None):             # <<<<<<<<<<<<<<
@@ -28298,7 +30072,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_118computeError(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1299
+/* "SLEPc/EPS.pyx":1329
  *         return toReal(rval)
  * 
  *     def errorView(self, etype=None, Viewer viewer=None):             # <<<<<<<<<<<<<<
@@ -28307,9 +30081,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_118computeError(struct PySlepcEP
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_121errorView(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_120errorView[] = "EPS.errorView(self, etype=None, Viewer viewer=None)\n\n        Displays the errors associated with the computed solution\n        (as well as the eigenvalues).\n\n        Parameters\n        ----------\n        etype: `EPS.ErrorType` enumerate, optional\n           The error type to compute.\n        viewer: Viewer, optional.\n                Visualization context; if not provided, the standard\n                output is used. [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_121errorView(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_127errorView(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_126errorView[] = "EPS.errorView(self, etype=None, Viewer viewer=None)\n\n        Displays the errors associated with the computed solution\n        (as well as the eigenvalues).\n\n        Parameters\n        ----------\n        etype: `EPS.ErrorType` enumerate, optional\n           The error type to compute.\n        viewer: Viewer, optional.\n                Visualization context; if not provided, the standard\n                output is used. [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_127errorView(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_etype = 0;
   struct PyPetscViewerObject *__pyx_v_viewer = 0;
   PyObject *__pyx_r = 0;
@@ -28325,7 +30099,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_121errorView(PyObject *__pyx_v_s
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -28336,6 +30112,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_121errorView(PyObject *__pyx_v_s
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_etype);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_viewer);
@@ -28343,12 +30120,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_121errorView(PyObject *__pyx_v_s
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "errorView") < 0)) __PYX_ERR(13, 1299, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "errorView") < 0)) __PYX_ERR(14, 1329, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -28358,14 +30137,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_121errorView(PyObject *__pyx_v_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("errorView", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1299, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("errorView", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1329, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.errorView", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(13, 1299, __pyx_L1_error)
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_120errorView(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_etype, __pyx_v_viewer);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(14, 1329, __pyx_L1_error)
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_126errorView(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_etype, __pyx_v_viewer);
 
   /* function exit code */
   goto __pyx_L0;
@@ -28376,7 +30155,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_121errorView(PyObject *__pyx_v_s
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_120errorView(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_etype, struct PyPetscViewerObject *__pyx_v_viewer) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_126errorView(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_etype, struct PyPetscViewerObject *__pyx_v_viewer) {
   EPSErrorType __pyx_v_et;
   PetscViewer __pyx_v_vwr;
   PyObject *__pyx_r = NULL;
@@ -28384,66 +30163,51 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_120errorView(struct PySlepcEPSOb
   int __pyx_t_1;
   int __pyx_t_2;
   EPSErrorType __pyx_t_3;
-  PetscViewer __pyx_t_4;
-  int __pyx_t_5;
+  int __pyx_t_4;
   __Pyx_RefNannySetupContext("errorView", 0);
 
-  /* "SLEPc/EPS.pyx":1320
+  /* "SLEPc/EPS.pyx":1350
  * 
  *         """
  *         cdef SlepcEPSErrorType et = EPS_ERROR_RELATIVE             # <<<<<<<<<<<<<<
  *         if etype is not None: et = etype
- *         cdef PetscViewer vwr = NULL
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  */
   __pyx_v_et = EPS_ERROR_RELATIVE;
 
-  /* "SLEPc/EPS.pyx":1321
+  /* "SLEPc/EPS.pyx":1351
  *         """
  *         cdef SlepcEPSErrorType et = EPS_ERROR_RELATIVE
  *         if etype is not None: et = etype             # <<<<<<<<<<<<<<
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
+ *         CHKERR( EPSErrorView(self.eps, et, vwr) )
  */
   __pyx_t_1 = (__pyx_v_etype != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = ((EPSErrorType)__Pyx_PyInt_As_EPSErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 1321, __pyx_L1_error)
+    __pyx_t_3 = ((EPSErrorType)__Pyx_PyInt_As_EPSErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 1351, __pyx_L1_error)
     __pyx_v_et = __pyx_t_3;
   }
 
-  /* "SLEPc/EPS.pyx":1322
+  /* "SLEPc/EPS.pyx":1352
  *         cdef SlepcEPSErrorType et = EPS_ERROR_RELATIVE
  *         if etype is not None: et = etype
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
- *         CHKERR( EPSErrorView(self.eps, et, vwr) )
- */
-  __pyx_v_vwr = NULL;
-
-  /* "SLEPc/EPS.pyx":1323
- *         if etype is not None: et = etype
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( EPSErrorView(self.eps, et, vwr) )
  * 
  */
-  __pyx_t_2 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-    __pyx_t_4 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_4;
-  }
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
-  /* "SLEPc/EPS.pyx":1324
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+  /* "SLEPc/EPS.pyx":1353
+ *         if etype is not None: et = etype
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( EPSErrorView(self.eps, et, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSErrorView(__pyx_v_self->eps, __pyx_v_et, __pyx_v_vwr)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(13, 1324, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSErrorView(__pyx_v_self->eps, __pyx_v_et, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(14, 1353, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1299
+  /* "SLEPc/EPS.pyx":1329
  *         return toReal(rval)
  * 
  *     def errorView(self, etype=None, Viewer viewer=None):             # <<<<<<<<<<<<<<
@@ -28463,7 +30227,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_120errorView(struct PySlepcEPSOb
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1328
+/* "SLEPc/EPS.pyx":1357
  *     #
  * 
  *     def setPowerShiftType(self, shift):             # <<<<<<<<<<<<<<
@@ -28472,9 +30236,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_120errorView(struct PySlepcEPSOb
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_123setPowerShiftType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_122setPowerShiftType[] = "EPS.setPowerShiftType(self, shift)\n\n        Sets the type of shifts used during the power iteration. This\n        can be used to emulate the Rayleigh Quotient Iteration (RQI)\n        method.\n\n        Parameters\n        ----------\n        shift: `EPS.PowerShiftType` enumerate\n               The type of shift.\n\n        Notes\n        -----\n        This call is only relevant if the type was set to\n        `EP [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_123setPowerShiftType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_129setPowerShiftType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_128setPowerShiftType[] = "EPS.setPowerShiftType(self, shift)\n\n        Sets the type of shifts used during the power iteration. This\n        can be used to emulate the Rayleigh Quotient Iteration (RQI)\n        method.\n\n        Parameters\n        ----------\n        shift: `EPS.PowerShiftType` enumerate\n               The type of shift.\n\n        Notes\n        -----\n        This call is only relevant if the type was set to\n        `EP [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_129setPowerShiftType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_shift = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -28487,6 +30251,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_123setPowerShiftType(PyObject *_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -28497,7 +30262,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_123setPowerShiftType(PyObject *_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setPowerShiftType") < 0)) __PYX_ERR(13, 1328, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setPowerShiftType") < 0)) __PYX_ERR(14, 1357, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -28508,20 +30273,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_123setPowerShiftType(PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setPowerShiftType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1328, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setPowerShiftType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1357, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setPowerShiftType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_122setPowerShiftType(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_shift);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_128setPowerShiftType(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_shift);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_122setPowerShiftType(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_shift) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_128setPowerShiftType(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_shift) {
   EPSPowerShiftType __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -28529,26 +30294,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_122setPowerShiftType(struct PySl
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setPowerShiftType", 0);
 
-  /* "SLEPc/EPS.pyx":1354
+  /* "SLEPc/EPS.pyx":1383
  *         behaves rather like a cubic converging method as RQI.
  *         """
  *         cdef SlepcEPSPowerShiftType val = shift             # <<<<<<<<<<<<<<
  *         CHKERR( EPSPowerSetShiftType(self.eps, val) )
  * 
  */
-  __pyx_t_1 = ((EPSPowerShiftType)__Pyx_PyInt_As_EPSPowerShiftType(__pyx_v_shift)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 1354, __pyx_L1_error)
+  __pyx_t_1 = ((EPSPowerShiftType)__Pyx_PyInt_As_EPSPowerShiftType(__pyx_v_shift)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 1383, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1355
+  /* "SLEPc/EPS.pyx":1384
  *         """
  *         cdef SlepcEPSPowerShiftType val = shift
  *         CHKERR( EPSPowerSetShiftType(self.eps, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getPowerShiftType(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSPowerSetShiftType(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1355, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSPowerSetShiftType(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1384, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1328
+  /* "SLEPc/EPS.pyx":1357
  *     #
  * 
  *     def setPowerShiftType(self, shift):             # <<<<<<<<<<<<<<
@@ -28568,7 +30333,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_122setPowerShiftType(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1357
+/* "SLEPc/EPS.pyx":1386
  *         CHKERR( EPSPowerSetShiftType(self.eps, val) )
  * 
  *     def getPowerShiftType(self):             # <<<<<<<<<<<<<<
@@ -28577,23 +30342,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_122setPowerShiftType(struct PySl
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_125getPowerShiftType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_124getPowerShiftType[] = "EPS.getPowerShiftType(self)\n\n        Gets the type of shifts used during the power iteration.\n\n        Returns\n        -------\n        shift: `EPS.PowerShiftType` enumerate\n               The type of shift.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_125getPowerShiftType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_131getPowerShiftType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_130getPowerShiftType[] = "EPS.getPowerShiftType(self)\n\n        Gets the type of shifts used during the power iteration.\n\n        Returns\n        -------\n        shift: `EPS.PowerShiftType` enumerate\n               The type of shift.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_131getPowerShiftType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getPowerShiftType (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getPowerShiftType", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getPowerShiftType", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_124getPowerShiftType(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_130getPowerShiftType(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_124getPowerShiftType(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_130getPowerShiftType(struct PySlepcEPSObject *__pyx_v_self) {
   EPSPowerShiftType __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -28601,7 +30366,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_124getPowerShiftType(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getPowerShiftType", 0);
 
-  /* "SLEPc/EPS.pyx":1366
+  /* "SLEPc/EPS.pyx":1395
  *                The type of shift.
  *         """
  *         cdef SlepcEPSPowerShiftType val = EPS_POWER_SHIFT_CONSTANT             # <<<<<<<<<<<<<<
@@ -28610,16 +30375,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_124getPowerShiftType(struct PySl
  */
   __pyx_v_val = EPS_POWER_SHIFT_CONSTANT;
 
-  /* "SLEPc/EPS.pyx":1367
+  /* "SLEPc/EPS.pyx":1396
  *         """
  *         cdef SlepcEPSPowerShiftType val = EPS_POWER_SHIFT_CONSTANT
  *         CHKERR( EPSPowerGetShiftType(self.eps, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSPowerGetShiftType(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1367, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSPowerGetShiftType(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1396, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1368
+  /* "SLEPc/EPS.pyx":1397
  *         cdef SlepcEPSPowerShiftType val = EPS_POWER_SHIFT_CONSTANT
  *         CHKERR( EPSPowerGetShiftType(self.eps, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -28627,13 +30392,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_124getPowerShiftType(struct PySl
  *     def setArnoldiDelayed(self, delayed):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_EPSPowerShiftType(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1368, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_EPSPowerShiftType(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1397, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1357
+  /* "SLEPc/EPS.pyx":1386
  *         CHKERR( EPSPowerSetShiftType(self.eps, val) )
  * 
  *     def getPowerShiftType(self):             # <<<<<<<<<<<<<<
@@ -28652,7 +30417,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_124getPowerShiftType(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1370
+/* "SLEPc/EPS.pyx":1399
  *         return val
  * 
  *     def setArnoldiDelayed(self, delayed):             # <<<<<<<<<<<<<<
@@ -28661,9 +30426,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_124getPowerShiftType(struct PySl
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_127setArnoldiDelayed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_126setArnoldiDelayed[] = "EPS.setArnoldiDelayed(self, delayed)\n\n        Activates or deactivates delayed reorthogonalization in the\n        Arnoldi iteration.\n\n        Parameters\n        ----------\n        delayed: boolean\n                 True if delayed reorthogonalization is to be used.\n\n        Notes\n        -----\n        This call is only relevant if the type was set to\n        `EPS.Type.ARNOLDI` with `setType()`.\n\n        D [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_127setArnoldiDelayed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_133setArnoldiDelayed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_132setArnoldiDelayed[] = "EPS.setArnoldiDelayed(self, delayed)\n\n        Activates or deactivates delayed reorthogonalization in the\n        Arnoldi iteration.\n\n        Parameters\n        ----------\n        delayed: boolean\n                 True if delayed reorthogonalization is to be used.\n\n        Notes\n        -----\n        This call is only relevant if the type was set to\n        `EPS.Type.ARNOLDI` with `setType()`.\n\n        D [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_133setArnoldiDelayed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_delayed = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -28676,6 +30441,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_127setArnoldiDelayed(PyObject *_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -28686,7 +30452,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_127setArnoldiDelayed(PyObject *_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setArnoldiDelayed") < 0)) __PYX_ERR(13, 1370, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setArnoldiDelayed") < 0)) __PYX_ERR(14, 1399, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -28697,20 +30463,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_127setArnoldiDelayed(PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setArnoldiDelayed", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1370, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setArnoldiDelayed", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1399, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setArnoldiDelayed", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_126setArnoldiDelayed(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_delayed);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_132setArnoldiDelayed(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_delayed);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_126setArnoldiDelayed(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_delayed) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_132setArnoldiDelayed(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_delayed) {
   PetscBool __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -28718,7 +30484,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_126setArnoldiDelayed(struct PySl
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setArnoldiDelayed", 0);
 
-  /* "SLEPc/EPS.pyx":1390
+  /* "SLEPc/EPS.pyx":1419
  *         algorithm.
  *         """
  *         cdef PetscBool val = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -28727,28 +30493,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_126setArnoldiDelayed(struct PySl
  */
   __pyx_v_val = PETSC_FALSE;
 
-  /* "SLEPc/EPS.pyx":1391
+  /* "SLEPc/EPS.pyx":1420
  *         """
  *         cdef PetscBool val = PETSC_FALSE
  *         if delayed: val = PETSC_TRUE             # <<<<<<<<<<<<<<
  *         CHKERR( EPSArnoldiSetDelayed(self.eps, val) )
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_delayed); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(13, 1391, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_delayed); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(14, 1420, __pyx_L1_error)
   if (__pyx_t_1) {
     __pyx_v_val = PETSC_TRUE;
   }
 
-  /* "SLEPc/EPS.pyx":1392
+  /* "SLEPc/EPS.pyx":1421
  *         cdef PetscBool val = PETSC_FALSE
  *         if delayed: val = PETSC_TRUE
  *         CHKERR( EPSArnoldiSetDelayed(self.eps, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getArnoldiDelayed(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSArnoldiSetDelayed(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1392, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSArnoldiSetDelayed(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1421, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1370
+  /* "SLEPc/EPS.pyx":1399
  *         return val
  * 
  *     def setArnoldiDelayed(self, delayed):             # <<<<<<<<<<<<<<
@@ -28768,7 +30534,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_126setArnoldiDelayed(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1394
+/* "SLEPc/EPS.pyx":1423
  *         CHKERR( EPSArnoldiSetDelayed(self.eps, val) )
  * 
  *     def getArnoldiDelayed(self):             # <<<<<<<<<<<<<<
@@ -28777,23 +30543,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_126setArnoldiDelayed(struct PySl
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_129getArnoldiDelayed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_128getArnoldiDelayed[] = "EPS.getArnoldiDelayed(self)\n\n        Gets the type of reorthogonalization used during the Arnoldi\n        iteration.\n\n        Returns\n        -------\n        delayed: boolean\n                 True if delayed reorthogonalization is to be used.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_129getArnoldiDelayed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_135getArnoldiDelayed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_134getArnoldiDelayed[] = "EPS.getArnoldiDelayed(self)\n\n        Gets the type of reorthogonalization used during the Arnoldi\n        iteration.\n\n        Returns\n        -------\n        delayed: boolean\n                 True if delayed reorthogonalization is to be used.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_135getArnoldiDelayed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getArnoldiDelayed (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getArnoldiDelayed", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getArnoldiDelayed", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_128getArnoldiDelayed(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_134getArnoldiDelayed(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_128getArnoldiDelayed(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_134getArnoldiDelayed(struct PySlepcEPSObject *__pyx_v_self) {
   PetscBool __pyx_v_tval;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -28801,7 +30567,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_128getArnoldiDelayed(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getArnoldiDelayed", 0);
 
-  /* "SLEPc/EPS.pyx":1404
+  /* "SLEPc/EPS.pyx":1433
  *                  True if delayed reorthogonalization is to be used.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -28810,16 +30576,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_128getArnoldiDelayed(struct PySl
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/EPS.pyx":1405
+  /* "SLEPc/EPS.pyx":1434
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSArnoldiGetDelayed(self.eps, &tval) )             # <<<<<<<<<<<<<<
  *         return <bint> tval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSArnoldiGetDelayed(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1405, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSArnoldiGetDelayed(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1434, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1406
+  /* "SLEPc/EPS.pyx":1435
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSArnoldiGetDelayed(self.eps, &tval) )
  *         return <bint> tval             # <<<<<<<<<<<<<<
@@ -28827,13 +30593,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_128getArnoldiDelayed(struct PySl
  *     def setLanczosReorthogType(self, reorthog):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1406, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1435, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1394
+  /* "SLEPc/EPS.pyx":1423
  *         CHKERR( EPSArnoldiSetDelayed(self.eps, val) )
  * 
  *     def getArnoldiDelayed(self):             # <<<<<<<<<<<<<<
@@ -28852,7 +30618,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_128getArnoldiDelayed(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1408
+/* "SLEPc/EPS.pyx":1437
  *         return <bint> tval
  * 
  *     def setLanczosReorthogType(self, reorthog):             # <<<<<<<<<<<<<<
@@ -28861,9 +30627,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_128getArnoldiDelayed(struct PySl
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_131setLanczosReorthogType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_130setLanczosReorthogType[] = "EPS.setLanczosReorthogType(self, reorthog)\n\n        Sets the type of reorthogonalization used during the Lanczos\n        iteration.\n\n        Parameters\n        ----------\n        reorthog: `EPS.LanczosReorthogType` enumerate\n                  The type of reorthogonalization.\n\n        Notes\n        -----\n        This call is only relevant if the type was set to\n        `EPS.Type.LANCZOS` with `setType( [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_131setLanczosReorthogType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_137setLanczosReorthogType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_136setLanczosReorthogType[] = "EPS.setLanczosReorthogType(self, reorthog)\n\n        Sets the type of reorthogonalization used during the Lanczos\n        iteration.\n\n        Parameters\n        ----------\n        reorthog: `EPS.LanczosReorthogType` enumerate\n                  The type of reorthogonalization.\n\n        Notes\n        -----\n        This call is only relevant if the type was set to\n        `EPS.Type.LANCZOS` with `setType( [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_137setLanczosReorthogType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_reorthog = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -28876,6 +30642,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_131setLanczosReorthogType(PyObje
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -28886,7 +30653,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_131setLanczosReorthogType(PyObje
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setLanczosReorthogType") < 0)) __PYX_ERR(13, 1408, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setLanczosReorthogType") < 0)) __PYX_ERR(14, 1437, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -28897,20 +30664,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_131setLanczosReorthogType(PyObje
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setLanczosReorthogType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1408, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setLanczosReorthogType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1437, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setLanczosReorthogType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_130setLanczosReorthogType(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_reorthog);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_136setLanczosReorthogType(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_reorthog);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_130setLanczosReorthogType(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_reorthog) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_136setLanczosReorthogType(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_reorthog) {
   EPSLanczosReorthogType __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -28918,26 +30685,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_130setLanczosReorthogType(struct
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setLanczosReorthogType", 0);
 
-  /* "SLEPc/EPS.pyx":1423
+  /* "SLEPc/EPS.pyx":1452
  *         `EPS.Type.LANCZOS` with `setType()`.
  *         """
  *         cdef SlepcEPSLanczosReorthogType val = reorthog             # <<<<<<<<<<<<<<
  *         CHKERR( EPSLanczosSetReorthog(self.eps, val) )
  * 
  */
-  __pyx_t_1 = ((EPSLanczosReorthogType)__Pyx_PyInt_As_EPSLanczosReorthogType(__pyx_v_reorthog)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 1423, __pyx_L1_error)
+  __pyx_t_1 = ((EPSLanczosReorthogType)__Pyx_PyInt_As_EPSLanczosReorthogType(__pyx_v_reorthog)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 1452, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1424
+  /* "SLEPc/EPS.pyx":1453
  *         """
  *         cdef SlepcEPSLanczosReorthogType val = reorthog
  *         CHKERR( EPSLanczosSetReorthog(self.eps, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getLanczosReorthogType(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSLanczosSetReorthog(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1424, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSLanczosSetReorthog(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1453, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1408
+  /* "SLEPc/EPS.pyx":1437
  *         return <bint> tval
  * 
  *     def setLanczosReorthogType(self, reorthog):             # <<<<<<<<<<<<<<
@@ -28957,7 +30724,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_130setLanczosReorthogType(struct
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1426
+/* "SLEPc/EPS.pyx":1455
  *         CHKERR( EPSLanczosSetReorthog(self.eps, val) )
  * 
  *     def getLanczosReorthogType(self):             # <<<<<<<<<<<<<<
@@ -28966,23 +30733,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_130setLanczosReorthogType(struct
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_133getLanczosReorthogType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_132getLanczosReorthogType[] = "EPS.getLanczosReorthogType(self)\n\n        Gets the type of reorthogonalization used during the Lanczos\n        iteration.\n\n        Returns\n        -------\n        reorthog: `EPS.LanczosReorthogType` enumerate\n                  The type of reorthogonalization.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_133getLanczosReorthogType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_139getLanczosReorthogType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_138getLanczosReorthogType[] = "EPS.getLanczosReorthogType(self)\n\n        Gets the type of reorthogonalization used during the Lanczos\n        iteration.\n\n        Returns\n        -------\n        reorthog: `EPS.LanczosReorthogType` enumerate\n                  The type of reorthogonalization.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_139getLanczosReorthogType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getLanczosReorthogType (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getLanczosReorthogType", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getLanczosReorthogType", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_132getLanczosReorthogType(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_138getLanczosReorthogType(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_132getLanczosReorthogType(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_138getLanczosReorthogType(struct PySlepcEPSObject *__pyx_v_self) {
   EPSLanczosReorthogType __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -28990,7 +30757,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_132getLanczosReorthogType(struct
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getLanczosReorthogType", 0);
 
-  /* "SLEPc/EPS.pyx":1437
+  /* "SLEPc/EPS.pyx":1466
  *         """
  *         cdef SlepcEPSLanczosReorthogType val = \
  *             EPS_LANCZOS_REORTHOG_LOCAL             # <<<<<<<<<<<<<<
@@ -28999,16 +30766,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_132getLanczosReorthogType(struct
  */
   __pyx_v_val = EPS_LANCZOS_REORTHOG_LOCAL;
 
-  /* "SLEPc/EPS.pyx":1438
+  /* "SLEPc/EPS.pyx":1467
  *         cdef SlepcEPSLanczosReorthogType val = \
  *             EPS_LANCZOS_REORTHOG_LOCAL
  *         CHKERR( EPSLanczosGetReorthog(self.eps, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSLanczosGetReorthog(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1438, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSLanczosGetReorthog(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1467, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1439
+  /* "SLEPc/EPS.pyx":1468
  *             EPS_LANCZOS_REORTHOG_LOCAL
  *         CHKERR( EPSLanczosGetReorthog(self.eps, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -29016,13 +30783,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_132getLanczosReorthogType(struct
  *     #
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_EPSLanczosReorthogType(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1439, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_EPSLanczosReorthogType(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1468, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1426
+  /* "SLEPc/EPS.pyx":1455
  *         CHKERR( EPSLanczosSetReorthog(self.eps, val) )
  * 
  *     def getLanczosReorthogType(self):             # <<<<<<<<<<<<<<
@@ -29041,7 +30808,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_132getLanczosReorthogType(struct
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1443
+/* "SLEPc/EPS.pyx":1472
  *     #
  * 
  *     def setKrylovSchurRestart(self, keep):             # <<<<<<<<<<<<<<
@@ -29050,9 +30817,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_132getLanczosReorthogType(struct
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_135setKrylovSchurRestart(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_134setKrylovSchurRestart[] = "EPS.setKrylovSchurRestart(self, keep)\n\n        Sets the restart parameter for the Krylov-Schur method, in\n        particular the proportion of basis vectors that must be kept\n        after restart.\n\n        Parameters\n        ----------\n        keep: float\n              The number of vectors to be kept at restart.\n\n        Notes\n        -----\n        Allowed values are in the range [0.1,0.9]. The defau [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_135setKrylovSchurRestart(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_141setKrylovSchurRestart(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_140setKrylovSchurRestart[] = "EPS.setKrylovSchurRestart(self, keep)\n\n        Sets the restart parameter for the Krylov-Schur method, in\n        particular the proportion of basis vectors that must be kept\n        after restart.\n\n        Parameters\n        ----------\n        keep: float\n              The number of vectors to be kept at restart.\n\n        Notes\n        -----\n        Allowed values are in the range [0.1,0.9]. The defau [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_141setKrylovSchurRestart(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_keep = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -29065,6 +30832,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_135setKrylovSchurRestart(PyObjec
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -29075,7 +30843,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_135setKrylovSchurRestart(PyObjec
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKrylovSchurRestart") < 0)) __PYX_ERR(13, 1443, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKrylovSchurRestart") < 0)) __PYX_ERR(14, 1472, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -29086,20 +30854,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_135setKrylovSchurRestart(PyObjec
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setKrylovSchurRestart", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1443, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setKrylovSchurRestart", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1472, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setKrylovSchurRestart", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_134setKrylovSchurRestart(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_keep);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_140setKrylovSchurRestart(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_keep);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_134setKrylovSchurRestart(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_keep) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_140setKrylovSchurRestart(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_keep) {
   PetscReal __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -29107,26 +30875,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_134setKrylovSchurRestart(struct
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setKrylovSchurRestart", 0);
 
-  /* "SLEPc/EPS.pyx":1458
+  /* "SLEPc/EPS.pyx":1487
  *         Allowed values are in the range [0.1,0.9]. The default is 0.5.
  *         """
  *         cdef PetscReal val = keep             # <<<<<<<<<<<<<<
  *         CHKERR( EPSKrylovSchurSetRestart(self.eps, val) )
  * 
  */
-  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_keep); if (unlikely((__pyx_t_1 == (PetscReal)-1) && PyErr_Occurred())) __PYX_ERR(13, 1458, __pyx_L1_error)
+  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_keep); if (unlikely((__pyx_t_1 == ((PetscReal)-1)) && PyErr_Occurred())) __PYX_ERR(14, 1487, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1459
+  /* "SLEPc/EPS.pyx":1488
  *         """
  *         cdef PetscReal val = keep
  *         CHKERR( EPSKrylovSchurSetRestart(self.eps, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getKrylovSchurRestart(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurSetRestart(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1459, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurSetRestart(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1488, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1443
+  /* "SLEPc/EPS.pyx":1472
  *     #
  * 
  *     def setKrylovSchurRestart(self, keep):             # <<<<<<<<<<<<<<
@@ -29146,7 +30914,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_134setKrylovSchurRestart(struct
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1461
+/* "SLEPc/EPS.pyx":1490
  *         CHKERR( EPSKrylovSchurSetRestart(self.eps, val) )
  * 
  *     def getKrylovSchurRestart(self):             # <<<<<<<<<<<<<<
@@ -29155,23 +30923,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_134setKrylovSchurRestart(struct
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_137getKrylovSchurRestart(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_136getKrylovSchurRestart[] = "EPS.getKrylovSchurRestart(self)\n\n        Gets the restart parameter used in the Krylov-Schur method.\n\n        Returns\n        -------\n        keep: float\n              The number of vectors to be kept at restart.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_137getKrylovSchurRestart(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_143getKrylovSchurRestart(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_142getKrylovSchurRestart[] = "EPS.getKrylovSchurRestart(self)\n\n        Gets the restart parameter used in the Krylov-Schur method.\n\n        Returns\n        -------\n        keep: float\n              The number of vectors to be kept at restart.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_143getKrylovSchurRestart(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getKrylovSchurRestart (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getKrylovSchurRestart", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getKrylovSchurRestart", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_136getKrylovSchurRestart(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_142getKrylovSchurRestart(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_136getKrylovSchurRestart(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_142getKrylovSchurRestart(struct PySlepcEPSObject *__pyx_v_self) {
   PetscReal __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -29179,7 +30947,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_136getKrylovSchurRestart(struct
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getKrylovSchurRestart", 0);
 
-  /* "SLEPc/EPS.pyx":1470
+  /* "SLEPc/EPS.pyx":1499
  *               The number of vectors to be kept at restart.
  *         """
  *         cdef PetscReal val = 0             # <<<<<<<<<<<<<<
@@ -29188,16 +30956,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_136getKrylovSchurRestart(struct
  */
   __pyx_v_val = 0.0;
 
-  /* "SLEPc/EPS.pyx":1471
+  /* "SLEPc/EPS.pyx":1500
  *         """
  *         cdef PetscReal val = 0
  *         CHKERR( EPSKrylovSchurGetRestart(self.eps, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetRestart(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1471, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetRestart(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1500, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1472
+  /* "SLEPc/EPS.pyx":1501
  *         cdef PetscReal val = 0
  *         CHKERR( EPSKrylovSchurGetRestart(self.eps, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -29205,13 +30973,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_136getKrylovSchurRestart(struct
  *     def setKrylovSchurLocking(self, lock):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1472, __pyx_L1_error)
+  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1501, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1461
+  /* "SLEPc/EPS.pyx":1490
  *         CHKERR( EPSKrylovSchurSetRestart(self.eps, val) )
  * 
  *     def getKrylovSchurRestart(self):             # <<<<<<<<<<<<<<
@@ -29230,7 +30998,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_136getKrylovSchurRestart(struct
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1474
+/* "SLEPc/EPS.pyx":1503
  *         return val
  * 
  *     def setKrylovSchurLocking(self, lock):             # <<<<<<<<<<<<<<
@@ -29239,9 +31007,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_136getKrylovSchurRestart(struct
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_139setKrylovSchurLocking(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_138setKrylovSchurLocking[] = "EPS.setKrylovSchurLocking(self, lock)\n\n        Choose between locking and non-locking variants of the\n        Krylov-Schur method.\n\n        Parameters\n        ----------\n        lock: bool\n              True if the locking variant must be selected.\n\n        Notes\n        -----\n        The default is to lock converged eigenpairs when the method restarts.\n        This behaviour can be changed so that all [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_139setKrylovSchurLocking(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_145setKrylovSchurLocking(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_144setKrylovSchurLocking[] = "EPS.setKrylovSchurLocking(self, lock)\n\n        Choose between locking and non-locking variants of the\n        Krylov-Schur method.\n\n        Parameters\n        ----------\n        lock: bool\n              True if the locking variant must be selected.\n\n        Notes\n        -----\n        The default is to lock converged eigenpairs when the method restarts.\n        This behaviour can be changed so that all [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_145setKrylovSchurLocking(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_lock = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -29254,6 +31022,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_139setKrylovSchurLocking(PyObjec
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -29264,7 +31033,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_139setKrylovSchurLocking(PyObjec
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKrylovSchurLocking") < 0)) __PYX_ERR(13, 1474, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKrylovSchurLocking") < 0)) __PYX_ERR(14, 1503, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -29275,20 +31044,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_139setKrylovSchurLocking(PyObjec
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setKrylovSchurLocking", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1474, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setKrylovSchurLocking", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1503, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setKrylovSchurLocking", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_138setKrylovSchurLocking(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_lock);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_144setKrylovSchurLocking(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_lock);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_138setKrylovSchurLocking(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_lock) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_144setKrylovSchurLocking(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_lock) {
   PetscBool __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -29296,26 +31065,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_138setKrylovSchurLocking(struct
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setKrylovSchurLocking", 0);
 
-  /* "SLEPc/EPS.pyx":1491
+  /* "SLEPc/EPS.pyx":1520
  *         non-locking variant).
  *         """
  *         cdef PetscBool val = lock             # <<<<<<<<<<<<<<
  *         CHKERR( EPSKrylovSchurSetLocking(self.eps, val) )
  * 
  */
-  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_lock)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 1491, __pyx_L1_error)
+  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_lock)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 1520, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1492
+  /* "SLEPc/EPS.pyx":1521
  *         """
  *         cdef PetscBool val = lock
  *         CHKERR( EPSKrylovSchurSetLocking(self.eps, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getKrylovSchurLocking(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurSetLocking(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1492, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurSetLocking(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1521, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1474
+  /* "SLEPc/EPS.pyx":1503
  *         return val
  * 
  *     def setKrylovSchurLocking(self, lock):             # <<<<<<<<<<<<<<
@@ -29335,7 +31104,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_138setKrylovSchurLocking(struct
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1494
+/* "SLEPc/EPS.pyx":1523
  *         CHKERR( EPSKrylovSchurSetLocking(self.eps, val) )
  * 
  *     def getKrylovSchurLocking(self):             # <<<<<<<<<<<<<<
@@ -29344,23 +31113,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_138setKrylovSchurLocking(struct
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_141getKrylovSchurLocking(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_140getKrylovSchurLocking[] = "EPS.getKrylovSchurLocking(self)\n\n        Gets the locking flag used in the Krylov-Schur method.\n\n        Returns\n        -------\n        lock: bool\n              The locking flag.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_141getKrylovSchurLocking(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_147getKrylovSchurLocking(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_146getKrylovSchurLocking[] = "EPS.getKrylovSchurLocking(self)\n\n        Gets the locking flag used in the Krylov-Schur method.\n\n        Returns\n        -------\n        lock: bool\n              The locking flag.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_147getKrylovSchurLocking(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getKrylovSchurLocking (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getKrylovSchurLocking", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getKrylovSchurLocking", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_140getKrylovSchurLocking(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_146getKrylovSchurLocking(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_140getKrylovSchurLocking(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_146getKrylovSchurLocking(struct PySlepcEPSObject *__pyx_v_self) {
   PetscBool __pyx_v_tval;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -29368,7 +31137,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_140getKrylovSchurLocking(struct
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getKrylovSchurLocking", 0);
 
-  /* "SLEPc/EPS.pyx":1503
+  /* "SLEPc/EPS.pyx":1532
  *               The locking flag.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -29377,16 +31146,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_140getKrylovSchurLocking(struct
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/EPS.pyx":1504
+  /* "SLEPc/EPS.pyx":1533
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSKrylovSchurGetLocking(self.eps, &tval) )             # <<<<<<<<<<<<<<
  *         return <bint> tval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetLocking(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1504, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetLocking(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1533, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1505
+  /* "SLEPc/EPS.pyx":1534
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSKrylovSchurGetLocking(self.eps, &tval) )
  *         return <bint> tval             # <<<<<<<<<<<<<<
@@ -29394,13 +31163,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_140getKrylovSchurLocking(struct
  *     def setKrylovSchurPartitions(self, npart):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1505, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1534, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1494
+  /* "SLEPc/EPS.pyx":1523
  *         CHKERR( EPSKrylovSchurSetLocking(self.eps, val) )
  * 
  *     def getKrylovSchurLocking(self):             # <<<<<<<<<<<<<<
@@ -29419,7 +31188,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_140getKrylovSchurLocking(struct
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1507
+/* "SLEPc/EPS.pyx":1536
  *         return <bint> tval
  * 
  *     def setKrylovSchurPartitions(self, npart):             # <<<<<<<<<<<<<<
@@ -29428,9 +31197,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_140getKrylovSchurLocking(struct
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_143setKrylovSchurPartitions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_142setKrylovSchurPartitions[] = "EPS.setKrylovSchurPartitions(self, npart)\n\n        Sets the number of partitions for the case of doing spectrum\n        slicing for a computational interval with the communicator split\n        in several sub-communicators.\n\n        Parameters\n        ----------\n        npart: int\n              The number of partitions.\n\n        Notes\n        -----\n        By default, npart=1 so all processes in the  [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_143setKrylovSchurPartitions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_149setKrylovSchurPartitions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_148setKrylovSchurPartitions[] = "EPS.setKrylovSchurPartitions(self, npart)\n\n        Sets the number of partitions for the case of doing spectrum\n        slicing for a computational interval with the communicator split\n        in several sub-communicators.\n\n        Parameters\n        ----------\n        npart: int\n              The number of partitions.\n\n        Notes\n        -----\n        By default, npart=1 so all processes in the  [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_149setKrylovSchurPartitions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_npart = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -29443,6 +31212,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_143setKrylovSchurPartitions(PyOb
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -29453,7 +31223,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_143setKrylovSchurPartitions(PyOb
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKrylovSchurPartitions") < 0)) __PYX_ERR(13, 1507, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKrylovSchurPartitions") < 0)) __PYX_ERR(14, 1536, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -29464,20 +31234,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_143setKrylovSchurPartitions(PyOb
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setKrylovSchurPartitions", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1507, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setKrylovSchurPartitions", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1536, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setKrylovSchurPartitions", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_142setKrylovSchurPartitions(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_npart);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_148setKrylovSchurPartitions(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_npart);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_142setKrylovSchurPartitions(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_npart) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_148setKrylovSchurPartitions(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_npart) {
   PetscInt __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -29485,26 +31255,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_142setKrylovSchurPartitions(stru
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setKrylovSchurPartitions", 0);
 
-  /* "SLEPc/EPS.pyx":1525
+  /* "SLEPc/EPS.pyx":1554
  *         subset of processes.
  *         """
  *         cdef PetscInt val = npart             # <<<<<<<<<<<<<<
  *         CHKERR( EPSKrylovSchurSetPartitions(self.eps, val) )
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_npart); if (unlikely((__pyx_t_1 == (PetscInt)-1) && PyErr_Occurred())) __PYX_ERR(13, 1525, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_npart); if (unlikely((__pyx_t_1 == ((PetscInt)-1)) && PyErr_Occurred())) __PYX_ERR(14, 1554, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1526
+  /* "SLEPc/EPS.pyx":1555
  *         """
  *         cdef PetscInt val = npart
  *         CHKERR( EPSKrylovSchurSetPartitions(self.eps, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getKrylovSchurPartitions(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurSetPartitions(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1526, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurSetPartitions(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1555, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1507
+  /* "SLEPc/EPS.pyx":1536
  *         return <bint> tval
  * 
  *     def setKrylovSchurPartitions(self, npart):             # <<<<<<<<<<<<<<
@@ -29524,7 +31294,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_142setKrylovSchurPartitions(stru
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1528
+/* "SLEPc/EPS.pyx":1557
  *         CHKERR( EPSKrylovSchurSetPartitions(self.eps, val) )
  * 
  *     def getKrylovSchurPartitions(self):             # <<<<<<<<<<<<<<
@@ -29533,23 +31303,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_142setKrylovSchurPartitions(stru
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_145getKrylovSchurPartitions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_144getKrylovSchurPartitions[] = "EPS.getKrylovSchurPartitions(self)\n\n        Gets the number of partitions of the communicator in case of\n        spectrum slicing.\n\n        Returns\n        -------\n        npart: int\n              The number of partitions.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_145getKrylovSchurPartitions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_151getKrylovSchurPartitions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_150getKrylovSchurPartitions[] = "EPS.getKrylovSchurPartitions(self)\n\n        Gets the number of partitions of the communicator in case of\n        spectrum slicing.\n\n        Returns\n        -------\n        npart: int\n              The number of partitions.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_151getKrylovSchurPartitions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getKrylovSchurPartitions (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getKrylovSchurPartitions", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getKrylovSchurPartitions", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_144getKrylovSchurPartitions(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_150getKrylovSchurPartitions(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_144getKrylovSchurPartitions(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_150getKrylovSchurPartitions(struct PySlepcEPSObject *__pyx_v_self) {
   PetscInt __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -29557,7 +31327,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_144getKrylovSchurPartitions(stru
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getKrylovSchurPartitions", 0);
 
-  /* "SLEPc/EPS.pyx":1538
+  /* "SLEPc/EPS.pyx":1567
  *               The number of partitions.
  *         """
  *         cdef PetscInt val = 0             # <<<<<<<<<<<<<<
@@ -29566,16 +31336,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_144getKrylovSchurPartitions(stru
  */
   __pyx_v_val = 0;
 
-  /* "SLEPc/EPS.pyx":1539
+  /* "SLEPc/EPS.pyx":1568
  *         """
  *         cdef PetscInt val = 0
  *         CHKERR( EPSKrylovSchurGetPartitions(self.eps, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetPartitions(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1539, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetPartitions(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1568, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1540
+  /* "SLEPc/EPS.pyx":1569
  *         cdef PetscInt val = 0
  *         CHKERR( EPSKrylovSchurGetPartitions(self.eps, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -29583,13 +31353,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_144getKrylovSchurPartitions(stru
  *     def setKrylovSchurDetectZeros(self, detect):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscInt(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1540, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscInt(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1569, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1528
+  /* "SLEPc/EPS.pyx":1557
  *         CHKERR( EPSKrylovSchurSetPartitions(self.eps, val) )
  * 
  *     def getKrylovSchurPartitions(self):             # <<<<<<<<<<<<<<
@@ -29608,7 +31378,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_144getKrylovSchurPartitions(stru
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1542
+/* "SLEPc/EPS.pyx":1571
  *         return val
  * 
  *     def setKrylovSchurDetectZeros(self, detect):             # <<<<<<<<<<<<<<
@@ -29617,9 +31387,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_144getKrylovSchurPartitions(stru
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_147setKrylovSchurDetectZeros(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_146setKrylovSchurDetectZeros[] = "EPS.setKrylovSchurDetectZeros(self, detect)\n\n        Sets a flag to enforce detection of zeros during the factorizations\n        throughout the spectrum slicing computation.\n\n        Parameters\n        ----------\n        detect: bool\n              True if zeros must checked for.\n\n        Notes\n        -----\n        A zero in the factorization indicates that a shift coincides with\n        an eigenva [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_147setKrylovSchurDetectZeros(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_153setKrylovSchurDetectZeros(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_152setKrylovSchurDetectZeros[] = "EPS.setKrylovSchurDetectZeros(self, detect)\n\n        Sets a flag to enforce detection of zeros during the factorizations\n        throughout the spectrum slicing computation.\n\n        Parameters\n        ----------\n        detect: bool\n              True if zeros must checked for.\n\n        Notes\n        -----\n        A zero in the factorization indicates that a shift coincides with\n        an eigenva [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_153setKrylovSchurDetectZeros(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_detect = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -29632,6 +31402,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_147setKrylovSchurDetectZeros(PyO
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -29642,7 +31413,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_147setKrylovSchurDetectZeros(PyO
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKrylovSchurDetectZeros") < 0)) __PYX_ERR(13, 1542, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKrylovSchurDetectZeros") < 0)) __PYX_ERR(14, 1571, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -29653,20 +31424,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_147setKrylovSchurDetectZeros(PyO
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setKrylovSchurDetectZeros", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1542, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setKrylovSchurDetectZeros", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1571, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setKrylovSchurDetectZeros", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_146setKrylovSchurDetectZeros(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_detect);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_152setKrylovSchurDetectZeros(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_detect);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_146setKrylovSchurDetectZeros(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_detect) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_152setKrylovSchurDetectZeros(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_detect) {
   PetscBool __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -29674,26 +31445,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_146setKrylovSchurDetectZeros(str
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setKrylovSchurDetectZeros", 0);
 
-  /* "SLEPc/EPS.pyx":1562
+  /* "SLEPc/EPS.pyx":1591
  *         detection, e.g. MUMPS.
  *         """
  *         cdef PetscBool val = detect             # <<<<<<<<<<<<<<
  *         CHKERR( EPSKrylovSchurSetDetectZeros(self.eps, val) )
  * 
  */
-  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_detect)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 1562, __pyx_L1_error)
+  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_detect)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 1591, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1563
+  /* "SLEPc/EPS.pyx":1592
  *         """
  *         cdef PetscBool val = detect
  *         CHKERR( EPSKrylovSchurSetDetectZeros(self.eps, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getKrylovSchurDetectZeros(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurSetDetectZeros(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1563, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurSetDetectZeros(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1592, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1542
+  /* "SLEPc/EPS.pyx":1571
  *         return val
  * 
  *     def setKrylovSchurDetectZeros(self, detect):             # <<<<<<<<<<<<<<
@@ -29713,7 +31484,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_146setKrylovSchurDetectZeros(str
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1565
+/* "SLEPc/EPS.pyx":1594
  *         CHKERR( EPSKrylovSchurSetDetectZeros(self.eps, val) )
  * 
  *     def getKrylovSchurDetectZeros(self):             # <<<<<<<<<<<<<<
@@ -29722,23 +31493,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_146setKrylovSchurDetectZeros(str
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_149getKrylovSchurDetectZeros(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_148getKrylovSchurDetectZeros[] = "EPS.getKrylovSchurDetectZeros(self)\n\n        Gets the flag that enforces zero detection in spectrum slicing.\n\n        Returns\n        -------\n        detect: bool\n              The zero detection flag.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_149getKrylovSchurDetectZeros(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_155getKrylovSchurDetectZeros(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_154getKrylovSchurDetectZeros[] = "EPS.getKrylovSchurDetectZeros(self)\n\n        Gets the flag that enforces zero detection in spectrum slicing.\n\n        Returns\n        -------\n        detect: bool\n              The zero detection flag.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_155getKrylovSchurDetectZeros(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getKrylovSchurDetectZeros (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getKrylovSchurDetectZeros", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getKrylovSchurDetectZeros", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_148getKrylovSchurDetectZeros(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_154getKrylovSchurDetectZeros(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_148getKrylovSchurDetectZeros(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_154getKrylovSchurDetectZeros(struct PySlepcEPSObject *__pyx_v_self) {
   PetscBool __pyx_v_tval;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -29746,7 +31517,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_148getKrylovSchurDetectZeros(str
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getKrylovSchurDetectZeros", 0);
 
-  /* "SLEPc/EPS.pyx":1574
+  /* "SLEPc/EPS.pyx":1603
  *               The zero detection flag.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -29755,16 +31526,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_148getKrylovSchurDetectZeros(str
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/EPS.pyx":1575
+  /* "SLEPc/EPS.pyx":1604
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSKrylovSchurGetDetectZeros(self.eps, &tval) )             # <<<<<<<<<<<<<<
  *         return <bint> tval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetDetectZeros(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1575, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetDetectZeros(__pyx_v_self->eps, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1604, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1576
+  /* "SLEPc/EPS.pyx":1605
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( EPSKrylovSchurGetDetectZeros(self.eps, &tval) )
  *         return <bint> tval             # <<<<<<<<<<<<<<
@@ -29772,13 +31543,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_148getKrylovSchurDetectZeros(str
  *     def setKrylovSchurDimensions(self, nev=None, ncv=None, mpd=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1576, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1605, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1565
+  /* "SLEPc/EPS.pyx":1594
  *         CHKERR( EPSKrylovSchurSetDetectZeros(self.eps, val) )
  * 
  *     def getKrylovSchurDetectZeros(self):             # <<<<<<<<<<<<<<
@@ -29797,7 +31568,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_148getKrylovSchurDetectZeros(str
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1578
+/* "SLEPc/EPS.pyx":1607
  *         return <bint> tval
  * 
  *     def setKrylovSchurDimensions(self, nev=None, ncv=None, mpd=None):             # <<<<<<<<<<<<<<
@@ -29806,9 +31577,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_148getKrylovSchurDetectZeros(str
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_151setKrylovSchurDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions[] = "EPS.setKrylovSchurDimensions(self, nev=None, ncv=None, mpd=None)\n\n        Sets the dimensions used for each subsolve step in case of doing\n        spectrum slicing for a computational interval. The meaning of the\n        parameters is the same as in `setDimensions()`.\n\n        Parameters\n        ----------\n        nev: int, optional\n             Number of eigenvalues to compute.\n        ncv: int, optio [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_151setKrylovSchurDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_157setKrylovSchurDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_156setKrylovSchurDimensions[] = "EPS.setKrylovSchurDimensions(self, nev=None, ncv=None, mpd=None)\n\n        Sets the dimensions used for each subsolve step in case of doing\n        spectrum slicing for a computational interval. The meaning of the\n        parameters is the same as in `setDimensions()`.\n\n        Parameters\n        ----------\n        nev: int, optional\n             Number of eigenvalues to compute.\n        ncv: int, optio [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_157setKrylovSchurDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_nev = 0;
   PyObject *__pyx_v_ncv = 0;
   PyObject *__pyx_v_mpd = 0;
@@ -29826,8 +31597,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_151setKrylovSchurDimensions(PyOb
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -29838,11 +31612,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_151setKrylovSchurDimensions(PyOb
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nev);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ncv);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mpd);
@@ -29850,13 +31626,16 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_151setKrylovSchurDimensions(PyOb
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKrylovSchurDimensions") < 0)) __PYX_ERR(13, 1578, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKrylovSchurDimensions") < 0)) __PYX_ERR(14, 1607, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -29867,20 +31646,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_151setKrylovSchurDimensions(PyOb
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setKrylovSchurDimensions", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1578, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setKrylovSchurDimensions", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1607, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setKrylovSchurDimensions", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_nev, __pyx_v_ncv, __pyx_v_mpd);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_156setKrylovSchurDimensions(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_nev, __pyx_v_ncv, __pyx_v_mpd);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_nev, PyObject *__pyx_v_ncv, PyObject *__pyx_v_mpd) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_156setKrylovSchurDimensions(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_nev, PyObject *__pyx_v_ncv, PyObject *__pyx_v_mpd) {
   PetscInt __pyx_v_ival1;
   PetscInt __pyx_v_ival2;
   PetscInt __pyx_v_ival3;
@@ -29892,7 +31671,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions(stru
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("setKrylovSchurDimensions", 0);
 
-  /* "SLEPc/EPS.pyx":1593
+  /* "SLEPc/EPS.pyx":1622
  *              Maximum dimension allowed for the projected problem.
  *         """
  *         cdef PetscInt ival1 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -29901,7 +31680,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions(stru
  */
   __pyx_v_ival1 = PETSC_DEFAULT;
 
-  /* "SLEPc/EPS.pyx":1594
+  /* "SLEPc/EPS.pyx":1623
  *         """
  *         cdef PetscInt ival1 = PETSC_DEFAULT
  *         cdef PetscInt ival2 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -29910,7 +31689,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions(stru
  */
   __pyx_v_ival2 = PETSC_DEFAULT;
 
-  /* "SLEPc/EPS.pyx":1595
+  /* "SLEPc/EPS.pyx":1624
  *         cdef PetscInt ival1 = PETSC_DEFAULT
  *         cdef PetscInt ival2 = PETSC_DEFAULT
  *         cdef PetscInt ival3 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -29919,7 +31698,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions(stru
  */
   __pyx_v_ival3 = PETSC_DEFAULT;
 
-  /* "SLEPc/EPS.pyx":1596
+  /* "SLEPc/EPS.pyx":1625
  *         cdef PetscInt ival2 = PETSC_DEFAULT
  *         cdef PetscInt ival3 = PETSC_DEFAULT
  *         if nev is not None: ival1 = asInt(nev)             # <<<<<<<<<<<<<<
@@ -29929,11 +31708,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions(stru
   __pyx_t_1 = (__pyx_v_nev != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_nev); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(13, 1596, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_nev); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(14, 1625, __pyx_L1_error)
     __pyx_v_ival1 = __pyx_t_3;
   }
 
-  /* "SLEPc/EPS.pyx":1597
+  /* "SLEPc/EPS.pyx":1626
  *         cdef PetscInt ival3 = PETSC_DEFAULT
  *         if nev is not None: ival1 = asInt(nev)
  *         if ncv is not None: ival2 = asInt(ncv)             # <<<<<<<<<<<<<<
@@ -29943,11 +31722,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions(stru
   __pyx_t_2 = (__pyx_v_ncv != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_ncv); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(13, 1597, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_ncv); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(14, 1626, __pyx_L1_error)
     __pyx_v_ival2 = __pyx_t_3;
   }
 
-  /* "SLEPc/EPS.pyx":1598
+  /* "SLEPc/EPS.pyx":1627
  *         if nev is not None: ival1 = asInt(nev)
  *         if ncv is not None: ival2 = asInt(ncv)
  *         if mpd is not None: ival3 = asInt(mpd)             # <<<<<<<<<<<<<<
@@ -29957,20 +31736,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions(stru
   __pyx_t_1 = (__pyx_v_mpd != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_mpd); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(13, 1598, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_mpd); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(14, 1627, __pyx_L1_error)
     __pyx_v_ival3 = __pyx_t_3;
   }
 
-  /* "SLEPc/EPS.pyx":1599
+  /* "SLEPc/EPS.pyx":1628
  *         if ncv is not None: ival2 = asInt(ncv)
  *         if mpd is not None: ival3 = asInt(mpd)
  *         CHKERR( EPSKrylovSchurSetDimensions(self.eps, ival1, ival2, ival3) )             # <<<<<<<<<<<<<<
  * 
  *     def getKrylovSchurDimensions(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurSetDimensions(__pyx_v_self->eps, __pyx_v_ival1, __pyx_v_ival2, __pyx_v_ival3)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(13, 1599, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurSetDimensions(__pyx_v_self->eps, __pyx_v_ival1, __pyx_v_ival2, __pyx_v_ival3)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(14, 1628, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1578
+  /* "SLEPc/EPS.pyx":1607
  *         return <bint> tval
  * 
  *     def setKrylovSchurDimensions(self, nev=None, ncv=None, mpd=None):             # <<<<<<<<<<<<<<
@@ -29990,7 +31769,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions(stru
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1601
+/* "SLEPc/EPS.pyx":1630
  *         CHKERR( EPSKrylovSchurSetDimensions(self.eps, ival1, ival2, ival3) )
  * 
  *     def getKrylovSchurDimensions(self):             # <<<<<<<<<<<<<<
@@ -29999,23 +31778,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions(stru
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_153getKrylovSchurDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_152getKrylovSchurDimensions[] = "EPS.getKrylovSchurDimensions(self)\n\n        Gets the dimensions used for each subsolve step in case of doing\n        spectrum slicing for a computational interval.\n\n        Returns\n        -------\n        nev: int\n             Number of eigenvalues to compute.\n        ncv: int\n             Maximum dimension of the subspace to be used by the solver.\n        mpd: int\n             Maximum dimension allo [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_153getKrylovSchurDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_159getKrylovSchurDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_158getKrylovSchurDimensions[] = "EPS.getKrylovSchurDimensions(self)\n\n        Gets the dimensions used for each subsolve step in case of doing\n        spectrum slicing for a computational interval.\n\n        Returns\n        -------\n        nev: int\n             Number of eigenvalues to compute.\n        ncv: int\n             Maximum dimension of the subspace to be used by the solver.\n        mpd: int\n             Maximum dimension allo [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_159getKrylovSchurDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getKrylovSchurDimensions (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getKrylovSchurDimensions", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getKrylovSchurDimensions", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_152getKrylovSchurDimensions(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_158getKrylovSchurDimensions(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_152getKrylovSchurDimensions(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_158getKrylovSchurDimensions(struct PySlepcEPSObject *__pyx_v_self) {
   PetscInt __pyx_v_ival1;
   PetscInt __pyx_v_ival2;
   PetscInt __pyx_v_ival3;
@@ -30028,7 +31807,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_152getKrylovSchurDimensions(stru
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("getKrylovSchurDimensions", 0);
 
-  /* "SLEPc/EPS.pyx":1615
+  /* "SLEPc/EPS.pyx":1644
  *              Maximum dimension allowed for the projected problem.
  *         """
  *         cdef PetscInt ival1 = 0             # <<<<<<<<<<<<<<
@@ -30037,7 +31816,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_152getKrylovSchurDimensions(stru
  */
   __pyx_v_ival1 = 0;
 
-  /* "SLEPc/EPS.pyx":1616
+  /* "SLEPc/EPS.pyx":1645
  *         """
  *         cdef PetscInt ival1 = 0
  *         cdef PetscInt ival2 = 0             # <<<<<<<<<<<<<<
@@ -30046,7 +31825,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_152getKrylovSchurDimensions(stru
  */
   __pyx_v_ival2 = 0;
 
-  /* "SLEPc/EPS.pyx":1617
+  /* "SLEPc/EPS.pyx":1646
  *         cdef PetscInt ival1 = 0
  *         cdef PetscInt ival2 = 0
  *         cdef PetscInt ival3 = 0             # <<<<<<<<<<<<<<
@@ -30055,16 +31834,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_152getKrylovSchurDimensions(stru
  */
   __pyx_v_ival3 = 0;
 
-  /* "SLEPc/EPS.pyx":1618
+  /* "SLEPc/EPS.pyx":1647
  *         cdef PetscInt ival2 = 0
  *         cdef PetscInt ival3 = 0
  *         CHKERR( EPSKrylovSchurGetDimensions(self.eps, &ival1, &ival2, &ival3) )             # <<<<<<<<<<<<<<
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetDimensions(__pyx_v_self->eps, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_ival3))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1618, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetDimensions(__pyx_v_self->eps, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_ival3))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1647, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1619
+  /* "SLEPc/EPS.pyx":1648
  *         cdef PetscInt ival3 = 0
  *         CHKERR( EPSKrylovSchurGetDimensions(self.eps, &ival1, &ival2, &ival3) )
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))             # <<<<<<<<<<<<<<
@@ -30072,13 +31851,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_152getKrylovSchurDimensions(stru
  *     def getKrylovSchurSubcommInfo(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1619, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1648, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 1619, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1648, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 1619, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival3); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1648, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 1619, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 1648, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
@@ -30093,7 +31872,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_152getKrylovSchurDimensions(stru
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1601
+  /* "SLEPc/EPS.pyx":1630
  *         CHKERR( EPSKrylovSchurSetDimensions(self.eps, ival1, ival2, ival3) )
  * 
  *     def getKrylovSchurDimensions(self):             # <<<<<<<<<<<<<<
@@ -30115,7 +31894,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_152getKrylovSchurDimensions(stru
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1621
+/* "SLEPc/EPS.pyx":1650
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  *     def getKrylovSchurSubcommInfo(self):             # <<<<<<<<<<<<<<
@@ -30124,23 +31903,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_152getKrylovSchurDimensions(stru
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_155getKrylovSchurSubcommInfo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_154getKrylovSchurSubcommInfo[] = "EPS.getKrylovSchurSubcommInfo(self)\n\n        Gets information related to the case of doing spectrum slicing\n        for a computational interval with multiple communicators.\n\n        Returns\n        -------\n        k: int\n             Number of the subinterval for the calling process.\n        n: int\n             Number of eigenvalues found in the k-th subinterval.\n        v: Vec\n             A vecto [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_155getKrylovSchurSubcommInfo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_161getKrylovSchurSubcommInfo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_160getKrylovSchurSubcommInfo[] = "EPS.getKrylovSchurSubcommInfo(self)\n\n        Gets information related to the case of doing spectrum slicing\n        for a computational interval with multiple communicators.\n\n        Returns\n        -------\n        k: int\n             Number of the subinterval for the calling process.\n        n: int\n             Number of eigenvalues found in the k-th subinterval.\n        v: Vec\n             A vecto [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_161getKrylovSchurSubcommInfo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getKrylovSchurSubcommInfo (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getKrylovSchurSubcommInfo", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getKrylovSchurSubcommInfo", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_154getKrylovSchurSubcommInfo(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_160getKrylovSchurSubcommInfo(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_154getKrylovSchurSubcommInfo(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_160getKrylovSchurSubcommInfo(struct PySlepcEPSObject *__pyx_v_self) {
   PetscInt __pyx_v_ival1;
   PetscInt __pyx_v_ival2;
   struct PyPetscVecObject *__pyx_v_vec = 0;
@@ -30152,7 +31931,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_154getKrylovSchurSubcommInfo(str
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getKrylovSchurSubcommInfo", 0);
 
-  /* "SLEPc/EPS.pyx":1642
+  /* "SLEPc/EPS.pyx":1671
  *         The returned Vec should be destroyed by the user.
  *         """
  *         cdef PetscInt ival1 = 0             # <<<<<<<<<<<<<<
@@ -30161,7 +31940,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_154getKrylovSchurSubcommInfo(str
  */
   __pyx_v_ival1 = 0;
 
-  /* "SLEPc/EPS.pyx":1643
+  /* "SLEPc/EPS.pyx":1672
  *         """
  *         cdef PetscInt ival1 = 0
  *         cdef PetscInt ival2 = 0             # <<<<<<<<<<<<<<
@@ -30170,28 +31949,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_154getKrylovSchurSubcommInfo(str
  */
   __pyx_v_ival2 = 0;
 
-  /* "SLEPc/EPS.pyx":1645
+  /* "SLEPc/EPS.pyx":1674
  *         cdef PetscInt ival2 = 0
  *         cdef Vec vec
  *         vec = Vec()             # <<<<<<<<<<<<<<
  *         CHKERR( EPSKrylovSchurGetSubcommInfo(self.eps, &ival1, &ival2, &vec.vec) )
  *         return (toInt(ival1), toInt(ival2), vec)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Vec), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1645, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Vec), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1674, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_vec = ((struct PyPetscVecObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":1646
+  /* "SLEPc/EPS.pyx":1675
  *         cdef Vec vec
  *         vec = Vec()
  *         CHKERR( EPSKrylovSchurGetSubcommInfo(self.eps, &ival1, &ival2, &vec.vec) )             # <<<<<<<<<<<<<<
  *         return (toInt(ival1), toInt(ival2), vec)
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetSubcommInfo(__pyx_v_self->eps, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_vec->vec))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1646, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetSubcommInfo(__pyx_v_self->eps, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_vec->vec))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1675, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1647
+  /* "SLEPc/EPS.pyx":1676
  *         vec = Vec()
  *         CHKERR( EPSKrylovSchurGetSubcommInfo(self.eps, &ival1, &ival2, &vec.vec) )
  *         return (toInt(ival1), toInt(ival2), vec)             # <<<<<<<<<<<<<<
@@ -30199,11 +31978,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_154getKrylovSchurSubcommInfo(str
  *     def getKrylovSchurSubcommPairs(self, int i, Vec V):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1647, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1676, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 1647, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1676, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 1647, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1676, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
@@ -30218,7 +31997,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_154getKrylovSchurSubcommInfo(str
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1621
+  /* "SLEPc/EPS.pyx":1650
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  *     def getKrylovSchurSubcommInfo(self):             # <<<<<<<<<<<<<<
@@ -30240,7 +32019,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_154getKrylovSchurSubcommInfo(str
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1649
+/* "SLEPc/EPS.pyx":1678
  *         return (toInt(ival1), toInt(ival2), vec)
  * 
  *     def getKrylovSchurSubcommPairs(self, int i, Vec V):             # <<<<<<<<<<<<<<
@@ -30249,9 +32028,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_154getKrylovSchurSubcommInfo(str
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_157getKrylovSchurSubcommPairs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_156getKrylovSchurSubcommPairs[] = "EPS.getKrylovSchurSubcommPairs(self, int i, Vec V)\n\n        Gets the i-th eigenpair stored internally in the multi-communicator\n        to which the calling process belongs.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be obtained.\n        V: Vec\n           Placeholder for the returned eigenvector.\n\n        Returns\n        -------\n        e: scalar\n   [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_157getKrylovSchurSubcommPairs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_163getKrylovSchurSubcommPairs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_162getKrylovSchurSubcommPairs[] = "EPS.getKrylovSchurSubcommPairs(self, int i, Vec V)\n\n        Gets the i-th eigenpair stored internally in the multi-communicator\n        to which the calling process belongs.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be obtained.\n        V: Vec\n           Placeholder for the returned eigenvector.\n\n        Returns\n        -------\n        e: scalar\n   [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_163getKrylovSchurSubcommPairs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int __pyx_v_i;
   struct PyPetscVecObject *__pyx_v_V = 0;
   PyObject *__pyx_r = 0;
@@ -30265,7 +32044,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_157getKrylovSchurSubcommPairs(Py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -30274,14 +32055,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_157getKrylovSchurSubcommPairs(Py
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("getKrylovSchurSubcommPairs", 1, 2, 2, 1); __PYX_ERR(13, 1649, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("getKrylovSchurSubcommPairs", 1, 2, 2, 1); __PYX_ERR(14, 1678, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getKrylovSchurSubcommPairs") < 0)) __PYX_ERR(13, 1649, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getKrylovSchurSubcommPairs") < 0)) __PYX_ERR(14, 1678, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -30289,19 +32071,19 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_157getKrylovSchurSubcommPairs(Py
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(13, 1649, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(14, 1678, __pyx_L3_error)
     __pyx_v_V = ((struct PyPetscVecObject *)values[1]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getKrylovSchurSubcommPairs", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1649, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getKrylovSchurSubcommPairs", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1678, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.getKrylovSchurSubcommPairs", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_V), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "V", 0))) __PYX_ERR(13, 1649, __pyx_L1_error)
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_156getKrylovSchurSubcommPairs(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_i, __pyx_v_V);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_V), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "V", 0))) __PYX_ERR(14, 1678, __pyx_L1_error)
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_162getKrylovSchurSubcommPairs(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_i, __pyx_v_V);
 
   /* function exit code */
   goto __pyx_L0;
@@ -30312,74 +32094,65 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_157getKrylovSchurSubcommPairs(Py
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_156getKrylovSchurSubcommPairs(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_V) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162getKrylovSchurSubcommPairs(struct PySlepcEPSObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_V) {
   PetscScalar __pyx_v_sval;
   Vec __pyx_v_vec;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
+  Vec __pyx_t_1;
   int __pyx_t_2;
-  Vec __pyx_t_3;
-  int __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getKrylovSchurSubcommPairs", 0);
 
-  /* "SLEPc/EPS.pyx":1672
+  /* "SLEPc/EPS.pyx":1701
  *         see `getKrylovSchurSubcommInfo()`.
  *         """
  *         cdef PetscScalar sval = 0             # <<<<<<<<<<<<<<
- *         cdef PetscVec vec = NULL
- *         if V is not None: vec = V.vec
+ *         cdef PetscVec vec = V.vec if V is not None else <PetscVec>NULL
+ *         CHKERR( EPSKrylovSchurGetSubcommPairs(self.eps, i, &sval, vec) )
  */
   __pyx_v_sval = 0.0;
 
-  /* "SLEPc/EPS.pyx":1673
+  /* "SLEPc/EPS.pyx":1702
  *         """
  *         cdef PetscScalar sval = 0
- *         cdef PetscVec vec = NULL             # <<<<<<<<<<<<<<
- *         if V is not None: vec = V.vec
- *         CHKERR( EPSKrylovSchurGetSubcommPairs(self.eps, i, &sval, vec) )
- */
-  __pyx_v_vec = NULL;
-
-  /* "SLEPc/EPS.pyx":1674
- *         cdef PetscScalar sval = 0
- *         cdef PetscVec vec = NULL
- *         if V is not None: vec = V.vec             # <<<<<<<<<<<<<<
+ *         cdef PetscVec vec = V.vec if V is not None else <PetscVec>NULL             # <<<<<<<<<<<<<<
  *         CHKERR( EPSKrylovSchurGetSubcommPairs(self.eps, i, &sval, vec) )
  *         return toScalar(sval)
  */
-  __pyx_t_1 = (((PyObject *)__pyx_v_V) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_V->vec;
-    __pyx_v_vec = __pyx_t_3;
+  __pyx_t_2 = (((PyObject *)__pyx_v_V) != Py_None);
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_V->vec;
+  } else {
+    __pyx_t_1 = ((Vec)NULL);
   }
+  __pyx_v_vec = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1675
- *         cdef PetscVec vec = NULL
- *         if V is not None: vec = V.vec
+  /* "SLEPc/EPS.pyx":1703
+ *         cdef PetscScalar sval = 0
+ *         cdef PetscVec vec = V.vec if V is not None else <PetscVec>NULL
  *         CHKERR( EPSKrylovSchurGetSubcommPairs(self.eps, i, &sval, vec) )             # <<<<<<<<<<<<<<
  *         return toScalar(sval)
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetSubcommPairs(__pyx_v_self->eps, __pyx_v_i, (&__pyx_v_sval), __pyx_v_vec)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(13, 1675, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetSubcommPairs(__pyx_v_self->eps, __pyx_v_i, (&__pyx_v_sval), __pyx_v_vec)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(14, 1703, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1676
- *         if V is not None: vec = V.vec
+  /* "SLEPc/EPS.pyx":1704
+ *         cdef PetscVec vec = V.vec if V is not None else <PetscVec>NULL
  *         CHKERR( EPSKrylovSchurGetSubcommPairs(self.eps, i, &sval, vec) )
  *         return toScalar(sval)             # <<<<<<<<<<<<<<
  * 
  *     def getKrylovSchurSubcommMats(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 1676, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_r = __pyx_t_5;
-  __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1704, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1649
+  /* "SLEPc/EPS.pyx":1678
  *         return (toInt(ival1), toInt(ival2), vec)
  * 
  *     def getKrylovSchurSubcommPairs(self, int i, Vec V):             # <<<<<<<<<<<<<<
@@ -30389,7 +32162,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_156getKrylovSchurSubcommPairs(st
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_4);
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.getKrylovSchurSubcommPairs", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
@@ -30398,7 +32171,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_156getKrylovSchurSubcommPairs(st
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1678
+/* "SLEPc/EPS.pyx":1706
  *         return toScalar(sval)
  * 
  *     def getKrylovSchurSubcommMats(self):             # <<<<<<<<<<<<<<
@@ -30407,23 +32180,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_156getKrylovSchurSubcommPairs(st
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_159getKrylovSchurSubcommMats(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_158getKrylovSchurSubcommMats[] = "EPS.getKrylovSchurSubcommMats(self)\n\n        Gets the eigenproblem matrices stored internally in the subcommunicator\n        to which the calling process belongs.\n\n        Returns\n        -------\n        A: Mat\n           The matrix associated with the eigensystem.\n        B: Mat\n           The second matrix in the case of generalized eigenproblems.\n\n        Notes\n        -----\n        This is the [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_159getKrylovSchurSubcommMats(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_165getKrylovSchurSubcommMats(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_164getKrylovSchurSubcommMats[] = "EPS.getKrylovSchurSubcommMats(self)\n\n        Gets the eigenproblem matrices stored internally in the subcommunicator\n        to which the calling process belongs.\n\n        Returns\n        -------\n        A: Mat\n           The matrix associated with the eigensystem.\n        B: Mat\n           The second matrix in the case of generalized eigenproblems.\n\n        Notes\n        -----\n        This is the [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_165getKrylovSchurSubcommMats(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getKrylovSchurSubcommMats (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getKrylovSchurSubcommMats", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getKrylovSchurSubcommMats", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_158getKrylovSchurSubcommMats(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_164getKrylovSchurSubcommMats(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_158getKrylovSchurSubcommMats(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_164getKrylovSchurSubcommMats(struct PySlepcEPSObject *__pyx_v_self) {
   struct PyPetscMatObject *__pyx_v_A = 0;
   struct PyPetscMatObject *__pyx_v_B = 0;
   PyObject *__pyx_r = NULL;
@@ -30432,40 +32205,40 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_158getKrylovSchurSubcommMats(str
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getKrylovSchurSubcommMats", 0);
 
-  /* "SLEPc/EPS.pyx":1697
+  /* "SLEPc/EPS.pyx":1725
  *         These matrices should not be modified by the user.
  *         """
  *         cdef Mat A = Mat()             # <<<<<<<<<<<<<<
  *         cdef Mat B = Mat()
  *         CHKERR( EPSKrylovSchurGetSubcommMats(self.eps, &A.mat, &B.mat) )
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1697, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1725, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_A = ((struct PyPetscMatObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":1698
+  /* "SLEPc/EPS.pyx":1726
  *         """
  *         cdef Mat A = Mat()
  *         cdef Mat B = Mat()             # <<<<<<<<<<<<<<
  *         CHKERR( EPSKrylovSchurGetSubcommMats(self.eps, &A.mat, &B.mat) )
  *         PetscINCREF(A.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1698, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1726, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_B = ((struct PyPetscMatObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":1699
+  /* "SLEPc/EPS.pyx":1727
  *         cdef Mat A = Mat()
  *         cdef Mat B = Mat()
  *         CHKERR( EPSKrylovSchurGetSubcommMats(self.eps, &A.mat, &B.mat) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(A.obj)
  *         PetscINCREF(B.obj)
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetSubcommMats(__pyx_v_self->eps, (&__pyx_v_A->mat), (&__pyx_v_B->mat))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1699, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetSubcommMats(__pyx_v_self->eps, (&__pyx_v_A->mat), (&__pyx_v_B->mat))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1727, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1700
+  /* "SLEPc/EPS.pyx":1728
  *         cdef Mat B = Mat()
  *         CHKERR( EPSKrylovSchurGetSubcommMats(self.eps, &A.mat, &B.mat) )
  *         PetscINCREF(A.obj)             # <<<<<<<<<<<<<<
@@ -30474,7 +32247,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_158getKrylovSchurSubcommMats(str
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_A->__pyx_base.obj);
 
-  /* "SLEPc/EPS.pyx":1701
+  /* "SLEPc/EPS.pyx":1729
  *         CHKERR( EPSKrylovSchurGetSubcommMats(self.eps, &A.mat, &B.mat) )
  *         PetscINCREF(A.obj)
  *         PetscINCREF(B.obj)             # <<<<<<<<<<<<<<
@@ -30483,7 +32256,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_158getKrylovSchurSubcommMats(str
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_B->__pyx_base.obj);
 
-  /* "SLEPc/EPS.pyx":1702
+  /* "SLEPc/EPS.pyx":1730
  *         PetscINCREF(A.obj)
  *         PetscINCREF(B.obj)
  *         return (A, B)             # <<<<<<<<<<<<<<
@@ -30491,7 +32264,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_158getKrylovSchurSubcommMats(str
  *     def updateKrylovSchurSubcommMats(self, s=1.0, a=1.0, Mat Au=None, t=1.0, b=1.0, Mat Bu=None, structure=None, globalup=False):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1702, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1730, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_v_A));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_A));
@@ -30503,7 +32276,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_158getKrylovSchurSubcommMats(str
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1678
+  /* "SLEPc/EPS.pyx":1706
  *         return toScalar(sval)
  * 
  *     def getKrylovSchurSubcommMats(self):             # <<<<<<<<<<<<<<
@@ -30524,7 +32297,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_158getKrylovSchurSubcommMats(str
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1704
+/* "SLEPc/EPS.pyx":1732
  *         return (A, B)
  * 
  *     def updateKrylovSchurSubcommMats(self, s=1.0, a=1.0, Mat Au=None, t=1.0, b=1.0, Mat Bu=None, structure=None, globalup=False):             # <<<<<<<<<<<<<<
@@ -30533,9 +32306,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_158getKrylovSchurSubcommMats(str
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_161updateKrylovSchurSubcommMats(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_160updateKrylovSchurSubcommMats[] = "EPS.updateKrylovSchurSubcommMats(self, s=1.0, a=1.0, Mat Au=None, t=1.0, b=1.0, Mat Bu=None, structure=None, globalup=False)\n\n        Update the eigenproblem matrices stored internally in the subcommunicator\n        to which the calling process belongs.\n\n        Parameters\n        ----------\n        s: float (real or complex)\n           Scalar that multiplies the existing A matrix.\n        a: float  [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_161updateKrylovSchurSubcommMats(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_167updateKrylovSchurSubcommMats(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_166updateKrylovSchurSubcommMats[] = "EPS.updateKrylovSchurSubcommMats(self, s=1.0, a=1.0, Mat Au=None, t=1.0, b=1.0, Mat Bu=None, structure=None, globalup=False)\n\n        Update the eigenproblem matrices stored internally in the subcommunicator\n        to which the calling process belongs.\n\n        Parameters\n        ----------\n        s: float (real or complex)\n           Scalar that multiplies the existing A matrix.\n        a: float  [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_167updateKrylovSchurSubcommMats(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_s = 0;
   PyObject *__pyx_v_a = 0;
   struct PyPetscMatObject *__pyx_v_Au = 0;
@@ -30563,13 +32336,21 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_161updateKrylovSchurSubcommMats(
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
+        CYTHON_FALLTHROUGH;
         case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
+        CYTHON_FALLTHROUGH;
         case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -30580,36 +32361,43 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_161updateKrylovSchurSubcommMats(
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_s);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Au);
           if (value) { values[2] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  3:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t);
           if (value) { values[3] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  4:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_b);
           if (value) { values[4] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  5:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Bu);
           if (value) { values[5] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  6:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_structure);
           if (value) { values[6] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  7:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_globalup);
@@ -30617,18 +32405,26 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_161updateKrylovSchurSubcommMats(
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "updateKrylovSchurSubcommMats") < 0)) __PYX_ERR(13, 1704, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "updateKrylovSchurSubcommMats") < 0)) __PYX_ERR(14, 1732, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
+        CYTHON_FALLTHROUGH;
         case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
+        CYTHON_FALLTHROUGH;
         case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -30644,15 +32440,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_161updateKrylovSchurSubcommMats(
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("updateKrylovSchurSubcommMats", 0, 0, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1704, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("updateKrylovSchurSubcommMats", 0, 0, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1732, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.updateKrylovSchurSubcommMats", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Au), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "Au", 0))) __PYX_ERR(13, 1704, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Bu), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "Bu", 0))) __PYX_ERR(13, 1704, __pyx_L1_error)
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_160updateKrylovSchurSubcommMats(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_s, __pyx_v_a, __pyx_v_Au, __pyx_v_t, __pyx_v_b, __pyx_v_Bu, __pyx_v_structure, __pyx_v_globalup);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Au), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "Au", 0))) __PYX_ERR(14, 1732, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Bu), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "Bu", 0))) __PYX_ERR(14, 1732, __pyx_L1_error)
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_166updateKrylovSchurSubcommMats(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_s, __pyx_v_a, __pyx_v_Au, __pyx_v_t, __pyx_v_b, __pyx_v_Bu, __pyx_v_structure, __pyx_v_globalup);
 
   /* function exit code */
   goto __pyx_L0;
@@ -30663,105 +32459,88 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_161updateKrylovSchurSubcommMats(
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_160updateKrylovSchurSubcommMats(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_s, PyObject *__pyx_v_a, struct PyPetscMatObject *__pyx_v_Au, PyObject *__pyx_v_t, PyObject *__pyx_v_b, struct PyPetscMatObject *__pyx_v_Bu, PyObject *__pyx_v_structure, PyObject *__pyx_v_globalup) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_166updateKrylovSchurSubcommMats(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_s, PyObject *__pyx_v_a, struct PyPetscMatObject *__pyx_v_Au, PyObject *__pyx_v_t, PyObject *__pyx_v_b, struct PyPetscMatObject *__pyx_v_Bu, PyObject *__pyx_v_structure, PyObject *__pyx_v_globalup) {
   Mat __pyx_v_Amat;
   Mat __pyx_v_Bmat;
   MatStructure __pyx_v_vstr;
   PetscBool __pyx_v_tval;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
+  Mat __pyx_t_1;
   int __pyx_t_2;
-  Mat __pyx_t_3;
-  MatStructure __pyx_t_4;
-  PetscBool __pyx_t_5;
+  MatStructure __pyx_t_3;
+  PetscBool __pyx_t_4;
+  PetscScalar __pyx_t_5;
   PetscScalar __pyx_t_6;
   PetscScalar __pyx_t_7;
   PetscScalar __pyx_t_8;
-  PetscScalar __pyx_t_9;
-  int __pyx_t_10;
+  int __pyx_t_9;
   __Pyx_RefNannySetupContext("updateKrylovSchurSubcommMats", 0);
 
-  /* "SLEPc/EPS.pyx":1743
+  /* "SLEPc/EPS.pyx":1771
  *         matrices in the parent communicator.
  *         """
- *         cdef PetscMat Amat = NULL             # <<<<<<<<<<<<<<
- *         if Au is not None: Amat = Au.mat
- *         cdef PetscMat Bmat = NULL
- */
-  __pyx_v_Amat = NULL;
-
-  /* "SLEPc/EPS.pyx":1744
- *         """
- *         cdef PetscMat Amat = NULL
- *         if Au is not None: Amat = Au.mat             # <<<<<<<<<<<<<<
- *         cdef PetscMat Bmat = NULL
- *         if Bu is not None: Bmat = Bu.mat
- */
-  __pyx_t_1 = (((PyObject *)__pyx_v_Au) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_Au->mat;
-    __pyx_v_Amat = __pyx_t_3;
-  }
-
-  /* "SLEPc/EPS.pyx":1745
- *         cdef PetscMat Amat = NULL
- *         if Au is not None: Amat = Au.mat
- *         cdef PetscMat Bmat = NULL             # <<<<<<<<<<<<<<
- *         if Bu is not None: Bmat = Bu.mat
+ *         cdef PetscMat Amat = Au.mat if Au is not None else <PetscMat>NULL             # <<<<<<<<<<<<<<
+ *         cdef PetscMat Bmat = Bu.mat if Bu is not None else <PetscMat>NULL
  *         cdef PetscMatStructure vstr = matstructure(structure)
  */
-  __pyx_v_Bmat = NULL;
+  __pyx_t_2 = (((PyObject *)__pyx_v_Au) != Py_None);
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_Au->mat;
+  } else {
+    __pyx_t_1 = ((Mat)NULL);
+  }
+  __pyx_v_Amat = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1746
- *         if Au is not None: Amat = Au.mat
- *         cdef PetscMat Bmat = NULL
- *         if Bu is not None: Bmat = Bu.mat             # <<<<<<<<<<<<<<
+  /* "SLEPc/EPS.pyx":1772
+ *         """
+ *         cdef PetscMat Amat = Au.mat if Au is not None else <PetscMat>NULL
+ *         cdef PetscMat Bmat = Bu.mat if Bu is not None else <PetscMat>NULL             # <<<<<<<<<<<<<<
  *         cdef PetscMatStructure vstr = matstructure(structure)
  *         cdef PetscBool tval = globalup
  */
   __pyx_t_2 = (((PyObject *)__pyx_v_Bu) != Py_None);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_v_Bu->mat;
-    __pyx_v_Bmat = __pyx_t_3;
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_Bu->mat;
+  } else {
+    __pyx_t_1 = ((Mat)NULL);
   }
+  __pyx_v_Bmat = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1747
- *         cdef PetscMat Bmat = NULL
- *         if Bu is not None: Bmat = Bu.mat
+  /* "SLEPc/EPS.pyx":1773
+ *         cdef PetscMat Amat = Au.mat if Au is not None else <PetscMat>NULL
+ *         cdef PetscMat Bmat = Bu.mat if Bu is not None else <PetscMat>NULL
  *         cdef PetscMatStructure vstr = matstructure(structure)             # <<<<<<<<<<<<<<
  *         cdef PetscBool tval = globalup
  *         CHKERR( EPSKrylovSchurUpdateSubcommMats(self.eps, s, a, Amat, t, b, Bmat, vstr, tval) )
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_matstructure(__pyx_v_structure); if (unlikely(__pyx_t_4 == ((MatStructure)-1L))) __PYX_ERR(13, 1747, __pyx_L1_error)
-  __pyx_v_vstr = __pyx_t_4;
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_matstructure(__pyx_v_structure); if (unlikely(__pyx_t_3 == ((MatStructure)((MatStructure)-1L)))) __PYX_ERR(14, 1773, __pyx_L1_error)
+  __pyx_v_vstr = __pyx_t_3;
 
-  /* "SLEPc/EPS.pyx":1748
- *         if Bu is not None: Bmat = Bu.mat
+  /* "SLEPc/EPS.pyx":1774
+ *         cdef PetscMat Bmat = Bu.mat if Bu is not None else <PetscMat>NULL
  *         cdef PetscMatStructure vstr = matstructure(structure)
  *         cdef PetscBool tval = globalup             # <<<<<<<<<<<<<<
  *         CHKERR( EPSKrylovSchurUpdateSubcommMats(self.eps, s, a, Amat, t, b, Bmat, vstr, tval) )
  * 
  */
-  __pyx_t_5 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_globalup)); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 1748, __pyx_L1_error)
-  __pyx_v_tval = __pyx_t_5;
+  __pyx_t_4 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_globalup)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 1774, __pyx_L1_error)
+  __pyx_v_tval = __pyx_t_4;
 
-  /* "SLEPc/EPS.pyx":1749
+  /* "SLEPc/EPS.pyx":1775
  *         cdef PetscMatStructure vstr = matstructure(structure)
  *         cdef PetscBool tval = globalup
  *         CHKERR( EPSKrylovSchurUpdateSubcommMats(self.eps, s, a, Amat, t, b, Bmat, vstr, tval) )             # <<<<<<<<<<<<<<
  * 
  *     def setKrylovSchurSubintervals(self, subint):
  */
-  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_s); if (unlikely((__pyx_t_6 == (PetscScalar)-1) && PyErr_Occurred())) __PYX_ERR(13, 1749, __pyx_L1_error)
-  __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_7 == (PetscScalar)-1) && PyErr_Occurred())) __PYX_ERR(13, 1749, __pyx_L1_error)
-  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_8 == (PetscScalar)-1) && PyErr_Occurred())) __PYX_ERR(13, 1749, __pyx_L1_error)
-  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_v_b); if (unlikely((__pyx_t_9 == (PetscScalar)-1) && PyErr_Occurred())) __PYX_ERR(13, 1749, __pyx_L1_error)
-  __pyx_t_10 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurUpdateSubcommMats(__pyx_v_self->eps, __pyx_t_6, __pyx_t_7, __pyx_v_Amat, __pyx_t_8, __pyx_t_9, __pyx_v_Bmat, __pyx_v_vstr, __pyx_v_tval)); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(13, 1749, __pyx_L1_error)
+  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_s); if (unlikely((__pyx_t_5 == ((PetscScalar)-1)) && PyErr_Occurred())) __PYX_ERR(14, 1775, __pyx_L1_error)
+  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_6 == ((PetscScalar)-1)) && PyErr_Occurred())) __PYX_ERR(14, 1775, __pyx_L1_error)
+  __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_7 == ((PetscScalar)-1)) && PyErr_Occurred())) __PYX_ERR(14, 1775, __pyx_L1_error)
+  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_v_b); if (unlikely((__pyx_t_8 == ((PetscScalar)-1)) && PyErr_Occurred())) __PYX_ERR(14, 1775, __pyx_L1_error)
+  __pyx_t_9 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurUpdateSubcommMats(__pyx_v_self->eps, __pyx_t_5, __pyx_t_6, __pyx_v_Amat, __pyx_t_7, __pyx_t_8, __pyx_v_Bmat, __pyx_v_vstr, __pyx_v_tval)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(14, 1775, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1704
+  /* "SLEPc/EPS.pyx":1732
  *         return (A, B)
  * 
  *     def updateKrylovSchurSubcommMats(self, s=1.0, a=1.0, Mat Au=None, t=1.0, b=1.0, Mat Bu=None, structure=None, globalup=False):             # <<<<<<<<<<<<<<
@@ -30781,7 +32560,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_160updateKrylovSchurSubcommMats(
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1751
+/* "SLEPc/EPS.pyx":1777
  *         CHKERR( EPSKrylovSchurUpdateSubcommMats(self.eps, s, a, Amat, t, b, Bmat, vstr, tval) )
  * 
  *     def setKrylovSchurSubintervals(self, subint):             # <<<<<<<<<<<<<<
@@ -30790,9 +32569,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_160updateKrylovSchurSubcommMats(
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_163setKrylovSchurSubintervals(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals[] = "EPS.setKrylovSchurSubintervals(self, subint)\n\n        Sets the subinterval boundaries for spectrum slicing with a computational interval.\n        \n        Parameters\n        ----------\n        subint: list of real values specifying subintervals\n\n        Notes\n        -----\n        Logically Collective on EPS\n        This function must be called after setKrylovSchurPartitions(). \n        For npart p [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_163setKrylovSchurSubintervals(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_169setKrylovSchurSubintervals(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_168setKrylovSchurSubintervals[] = "EPS.setKrylovSchurSubintervals(self, subint)\n\n        Sets the subinterval boundaries for spectrum slicing with a computational interval.\n        \n        Parameters\n        ----------\n        subint: list of real values specifying subintervals\n\n        Notes\n        -----\n        Logically Collective on EPS\n        This function must be called after setKrylovSchurPartitions(). \n        For npart p [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_169setKrylovSchurSubintervals(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_subint = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -30805,6 +32584,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_163setKrylovSchurSubintervals(Py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -30815,7 +32595,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_163setKrylovSchurSubintervals(Py
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKrylovSchurSubintervals") < 0)) __PYX_ERR(13, 1751, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setKrylovSchurSubintervals") < 0)) __PYX_ERR(14, 1777, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -30826,20 +32606,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_163setKrylovSchurSubintervals(Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setKrylovSchurSubintervals", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1751, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setKrylovSchurSubintervals", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1777, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setKrylovSchurSubintervals", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_subint);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_168setKrylovSchurSubintervals(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_subint);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_subint) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_168setKrylovSchurSubintervals(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_subint) {
   PetscBool __pyx_v_match;
   PetscReal *__pyx_v_subintarray;
   Py_ssize_t __pyx_v_i;
@@ -30856,7 +32636,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals(st
   PetscReal __pyx_t_6;
   __Pyx_RefNannySetupContext("setKrylovSchurSubintervals", 0);
 
-  /* "SLEPc/EPS.pyx":1771
+  /* "SLEPc/EPS.pyx":1797
  *         [subint_0,subint_1], [subint_1,subint_2], and so on.
  *         """
  *         cdef PetscBool match = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -30865,16 +32645,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals(st
  */
   __pyx_v_match = PETSC_FALSE;
 
-  /* "SLEPc/EPS.pyx":1772
+  /* "SLEPc/EPS.pyx":1798
  *         """
  *         cdef PetscBool match = PETSC_FALSE
  *         CHKERR( PetscObjectTypeCompare(<PetscObject>self.eps, EPSKRYLOVSCHUR, &match) )             # <<<<<<<<<<<<<<
  *         if match == PETSC_FALSE: return
  *         cdef PetscReal *subintarray = NULL
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PetscObjectTypeCompare(((PetscObject)__pyx_v_self->eps), EPSKRYLOVSCHUR, (&__pyx_v_match))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1772, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PetscObjectTypeCompare(((PetscObject)__pyx_v_self->eps), EPSKRYLOVSCHUR, (&__pyx_v_match))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1798, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1773
+  /* "SLEPc/EPS.pyx":1799
  *         cdef PetscBool match = PETSC_FALSE
  *         CHKERR( PetscObjectTypeCompare(<PetscObject>self.eps, EPSKRYLOVSCHUR, &match) )
  *         if match == PETSC_FALSE: return             # <<<<<<<<<<<<<<
@@ -30888,7 +32668,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals(st
     goto __pyx_L0;
   }
 
-  /* "SLEPc/EPS.pyx":1774
+  /* "SLEPc/EPS.pyx":1800
  *         CHKERR( PetscObjectTypeCompare(<PetscObject>self.eps, EPSKRYLOVSCHUR, &match) )
  *         if match == PETSC_FALSE: return
  *         cdef PetscReal *subintarray = NULL             # <<<<<<<<<<<<<<
@@ -30897,7 +32677,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals(st
  */
   __pyx_v_subintarray = NULL;
 
-  /* "SLEPc/EPS.pyx":1775
+  /* "SLEPc/EPS.pyx":1801
  *         if match == PETSC_FALSE: return
  *         cdef PetscReal *subintarray = NULL
  *         cdef Py_ssize_t i = 0, n = len(subint)             # <<<<<<<<<<<<<<
@@ -30905,10 +32685,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals(st
  *         CHKERR( EPSKrylovSchurGetPartitions(self.eps, &nparts) )
  */
   __pyx_v_i = 0;
-  __pyx_t_3 = PyObject_Length(__pyx_v_subint); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(13, 1775, __pyx_L1_error)
+  __pyx_t_3 = PyObject_Length(__pyx_v_subint); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(14, 1801, __pyx_L1_error)
   __pyx_v_n = __pyx_t_3;
 
-  /* "SLEPc/EPS.pyx":1776
+  /* "SLEPc/EPS.pyx":1802
  *         cdef PetscReal *subintarray = NULL
  *         cdef Py_ssize_t i = 0, n = len(subint)
  *         cdef PetscInt nparts = 0             # <<<<<<<<<<<<<<
@@ -30917,16 +32697,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals(st
  */
   __pyx_v_nparts = 0;
 
-  /* "SLEPc/EPS.pyx":1777
+  /* "SLEPc/EPS.pyx":1803
  *         cdef Py_ssize_t i = 0, n = len(subint)
  *         cdef PetscInt nparts = 0
  *         CHKERR( EPSKrylovSchurGetPartitions(self.eps, &nparts) )             # <<<<<<<<<<<<<<
  *         assert n >= nparts
  *         cdef tmp = allocate(n*sizeof(PetscReal),<void**>&subintarray)
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetPartitions(__pyx_v_self->eps, (&__pyx_v_nparts))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1777, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurGetPartitions(__pyx_v_self->eps, (&__pyx_v_nparts))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1803, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1778
+  /* "SLEPc/EPS.pyx":1804
  *         cdef PetscInt nparts = 0
  *         CHKERR( EPSKrylovSchurGetPartitions(self.eps, &nparts) )
  *         assert n >= nparts             # <<<<<<<<<<<<<<
@@ -30937,24 +32717,24 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals(st
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_n >= __pyx_v_nparts) != 0))) {
       PyErr_SetNone(PyExc_AssertionError);
-      __PYX_ERR(13, 1778, __pyx_L1_error)
+      __PYX_ERR(14, 1804, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "SLEPc/EPS.pyx":1779
+  /* "SLEPc/EPS.pyx":1805
  *         CHKERR( EPSKrylovSchurGetPartitions(self.eps, &nparts) )
  *         assert n >= nparts
  *         cdef tmp = allocate(n*sizeof(PetscReal),<void**>&subintarray)             # <<<<<<<<<<<<<<
  *         for i in range(n): subintarray[i] = asReal(subint[i])
  *         CHKERR(EPSKrylovSchurSetSubintervals(self.eps, subintarray))
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_allocate((__pyx_v_n * (sizeof(PetscReal))), ((void **)(&__pyx_v_subintarray))); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 1779, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_allocate((__pyx_v_n * (sizeof(PetscReal))), ((void **)(&__pyx_v_subintarray))); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1805, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_tmp = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "SLEPc/EPS.pyx":1780
+  /* "SLEPc/EPS.pyx":1806
  *         assert n >= nparts
  *         cdef tmp = allocate(n*sizeof(PetscReal),<void**>&subintarray)
  *         for i in range(n): subintarray[i] = asReal(subint[i])             # <<<<<<<<<<<<<<
@@ -30964,23 +32744,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals(st
   __pyx_t_3 = __pyx_v_n;
   for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_3; __pyx_t_5+=1) {
     __pyx_v_i = __pyx_t_5;
-    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_subint, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 1780, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_subint, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1806, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_t_4); if (unlikely(__pyx_t_6 == -1.0 && PyErr_Occurred())) __PYX_ERR(13, 1780, __pyx_L1_error)
+    __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_t_4); if (unlikely(__pyx_t_6 == ((PetscReal)-1.0) && PyErr_Occurred())) __PYX_ERR(14, 1806, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     (__pyx_v_subintarray[__pyx_v_i]) = __pyx_t_6;
   }
 
-  /* "SLEPc/EPS.pyx":1781
+  /* "SLEPc/EPS.pyx":1807
  *         cdef tmp = allocate(n*sizeof(PetscReal),<void**>&subintarray)
  *         for i in range(n): subintarray[i] = asReal(subint[i])
  *         CHKERR(EPSKrylovSchurSetSubintervals(self.eps, subintarray))             # <<<<<<<<<<<<<<
  * 
  *     def setRQCGReset(self, nrest):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurSetSubintervals(__pyx_v_self->eps, __pyx_v_subintarray)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1781, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSKrylovSchurSetSubintervals(__pyx_v_self->eps, __pyx_v_subintarray)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1807, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1751
+  /* "SLEPc/EPS.pyx":1777
  *         CHKERR( EPSKrylovSchurUpdateSubcommMats(self.eps, s, a, Amat, t, b, Bmat, vstr, tval) )
  * 
  *     def setKrylovSchurSubintervals(self, subint):             # <<<<<<<<<<<<<<
@@ -31002,7 +32782,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals(st
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1783
+/* "SLEPc/EPS.pyx":1809
  *         CHKERR(EPSKrylovSchurSetSubintervals(self.eps, subintarray))
  * 
  *     def setRQCGReset(self, nrest):             # <<<<<<<<<<<<<<
@@ -31011,9 +32791,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals(st
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_165setRQCGReset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_164setRQCGReset[] = "EPS.setRQCGReset(self, nrest)\n\n        Sets the reset parameter of the RQCG iteration. Every nrest iterations,\n        the solver performs a Rayleigh-Ritz projection step.\n\n        Parameters\n        ----------\n        nrest: integer\n               The number of iterations between resets.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_165setRQCGReset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_171setRQCGReset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_170setRQCGReset[] = "EPS.setRQCGReset(self, nrest)\n\n        Sets the reset parameter of the RQCG iteration. Every nrest iterations,\n        the solver performs a Rayleigh-Ritz projection step.\n\n        Parameters\n        ----------\n        nrest: integer\n               The number of iterations between resets.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_171setRQCGReset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_nrest = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -31026,6 +32806,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_165setRQCGReset(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -31036,7 +32817,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_165setRQCGReset(PyObject *__pyx_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRQCGReset") < 0)) __PYX_ERR(13, 1783, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRQCGReset") < 0)) __PYX_ERR(14, 1809, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -31047,20 +32828,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_165setRQCGReset(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setRQCGReset", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 1783, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setRQCGReset", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 1809, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.EPS.setRQCGReset", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_164setRQCGReset(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_nrest);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_170setRQCGReset(((struct PySlepcEPSObject *)__pyx_v_self), __pyx_v_nrest);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_164setRQCGReset(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_nrest) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_170setRQCGReset(struct PySlepcEPSObject *__pyx_v_self, PyObject *__pyx_v_nrest) {
   PetscInt __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -31068,26 +32849,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_164setRQCGReset(struct PySlepcEP
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setRQCGReset", 0);
 
-  /* "SLEPc/EPS.pyx":1793
+  /* "SLEPc/EPS.pyx":1819
  *                The number of iterations between resets.
  *         """
  *         cdef PetscInt val = nrest             # <<<<<<<<<<<<<<
  *         CHKERR( EPSRQCGSetReset(self.eps, val) )
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_nrest); if (unlikely((__pyx_t_1 == (PetscInt)-1) && PyErr_Occurred())) __PYX_ERR(13, 1793, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_nrest); if (unlikely((__pyx_t_1 == ((PetscInt)-1)) && PyErr_Occurred())) __PYX_ERR(14, 1819, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/EPS.pyx":1794
+  /* "SLEPc/EPS.pyx":1820
  *         """
  *         cdef PetscInt val = nrest
  *         CHKERR( EPSRQCGSetReset(self.eps, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getRQCGReset(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSRQCGSetReset(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(13, 1794, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSRQCGSetReset(__pyx_v_self->eps, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 1820, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1783
+  /* "SLEPc/EPS.pyx":1809
  *         CHKERR(EPSKrylovSchurSetSubintervals(self.eps, subintarray))
  * 
  *     def setRQCGReset(self, nrest):             # <<<<<<<<<<<<<<
@@ -31107,7 +32888,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_164setRQCGReset(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1796
+/* "SLEPc/EPS.pyx":1822
  *         CHKERR( EPSRQCGSetReset(self.eps, val) )
  * 
  *     def getRQCGReset(self):             # <<<<<<<<<<<<<<
@@ -31116,23 +32897,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_164setRQCGReset(struct PySlepcEP
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_167getRQCGReset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3EPS_166getRQCGReset[] = "EPS.getRQCGReset(self)\n\n        Gets the reset parameter used in the RQCG method.\n\n        Returns\n        -------\n        nrest: integer\n               The number of iterations between resets.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_167getRQCGReset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_173getRQCGReset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3EPS_172getRQCGReset[] = "EPS.getRQCGReset(self)\n\n        Gets the reset parameter used in the RQCG method.\n\n        Returns\n        -------\n        nrest: integer\n               The number of iterations between resets.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3EPS_173getRQCGReset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getRQCGReset (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getRQCGReset", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getRQCGReset", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_166getRQCGReset(((struct PySlepcEPSObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3EPS_172getRQCGReset(((struct PySlepcEPSObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_166getRQCGReset(struct PySlepcEPSObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_172getRQCGReset(struct PySlepcEPSObject *__pyx_v_self) {
   PetscInt __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -31140,7 +32921,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_166getRQCGReset(struct PySlepcEP
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getRQCGReset", 0);
 
-  /* "SLEPc/EPS.pyx":1805
+  /* "SLEPc/EPS.pyx":1831
  *                The number of iterations between resets.
  *         """
  *         cdef PetscInt val = 0             # <<<<<<<<<<<<<<
@@ -31149,16 +32930,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_166getRQCGReset(struct PySlepcEP
  */
   __pyx_v_val = 0;
 
-  /* "SLEPc/EPS.pyx":1806
+  /* "SLEPc/EPS.pyx":1832
  *         """
  *         cdef PetscInt val = 0
  *         CHKERR( EPSRQCGGetReset(self.eps, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSRQCGGetReset(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(13, 1806, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(EPSRQCGGetReset(__pyx_v_self->eps, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 1832, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1807
+  /* "SLEPc/EPS.pyx":1833
  *         cdef PetscInt val = 0
  *         CHKERR( EPSRQCGGetReset(self.eps, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -31166,13 +32947,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_166getRQCGReset(struct PySlepcEP
  *     #
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscInt(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1807, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscInt(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1833, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1796
+  /* "SLEPc/EPS.pyx":1822
  *         CHKERR( EPSRQCGSetReset(self.eps, val) )
  * 
  *     def getRQCGReset(self):             # <<<<<<<<<<<<<<
@@ -31191,7 +32972,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_166getRQCGReset(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1811
+/* "SLEPc/EPS.pyx":1837
  *     #
  *     property problem_type:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -31220,7 +33001,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_12problem_type___get__(struct Py
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/EPS.pyx":1812
+  /* "SLEPc/EPS.pyx":1838
  *     property problem_type:
  *         def __get__(self):
  *             return self.getProblemType()             # <<<<<<<<<<<<<<
@@ -31228,10 +33009,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_12problem_type___get__(struct Py
  *             self.setProblemType(value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getProblemType); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1812, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getProblemType); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1838, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -31241,10 +33022,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_12problem_type___get__(struct Py
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1812, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1838, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1812, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1838, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -31252,7 +33033,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_12problem_type___get__(struct Py
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1811
+  /* "SLEPc/EPS.pyx":1837
  *     #
  *     property problem_type:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -31273,7 +33054,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_12problem_type___get__(struct Py
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1813
+/* "SLEPc/EPS.pyx":1839
  *         def __get__(self):
  *             return self.getProblemType()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -31303,17 +33084,17 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_12problem_type_2__set__(struct PySlepc
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/EPS.pyx":1814
+  /* "SLEPc/EPS.pyx":1840
  *             return self.getProblemType()
  *         def __set__(self, value):
  *             self.setProblemType(value)             # <<<<<<<<<<<<<<
  * 
  *     property extraction:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setProblemType); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1814, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setProblemType); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1840, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -31323,23 +33104,41 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_12problem_type_2__set__(struct PySlepc
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1814, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1840, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 1814, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_INCREF(__pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1814, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1840, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1840, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1840, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_value);
+      __Pyx_GIVEREF(__pyx_v_value);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1840, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":1813
+  /* "SLEPc/EPS.pyx":1839
  *         def __get__(self):
  *             return self.getProblemType()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -31362,7 +33161,7 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_12problem_type_2__set__(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1817
+/* "SLEPc/EPS.pyx":1843
  * 
  *     property extraction:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -31391,7 +33190,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_10extraction___get__(struct PySl
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/EPS.pyx":1818
+  /* "SLEPc/EPS.pyx":1844
  *     property extraction:
  *         def __get__(self):
  *             return self.getExtraction()             # <<<<<<<<<<<<<<
@@ -31399,10 +33198,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_10extraction___get__(struct PySl
  *             self.setExtraction(value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getExtraction); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1818, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getExtraction); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1844, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -31412,10 +33211,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_10extraction___get__(struct PySl
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1818, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1844, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1818, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1844, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -31423,7 +33222,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_10extraction___get__(struct PySl
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1817
+  /* "SLEPc/EPS.pyx":1843
  * 
  *     property extraction:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -31444,7 +33243,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_10extraction___get__(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1819
+/* "SLEPc/EPS.pyx":1845
  *         def __get__(self):
  *             return self.getExtraction()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -31474,17 +33273,17 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_10extraction_2__set__(struct PySlepcEP
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/EPS.pyx":1820
+  /* "SLEPc/EPS.pyx":1846
  *             return self.getExtraction()
  *         def __set__(self, value):
  *             self.setExtraction(value)             # <<<<<<<<<<<<<<
  * 
  *     property which:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setExtraction); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1820, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setExtraction); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1846, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -31494,23 +33293,41 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_10extraction_2__set__(struct PySlepcEP
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1820, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1846, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 1820, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_INCREF(__pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1820, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1846, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1846, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1846, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_value);
+      __Pyx_GIVEREF(__pyx_v_value);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1846, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":1819
+  /* "SLEPc/EPS.pyx":1845
  *         def __get__(self):
  *             return self.getExtraction()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -31533,7 +33350,7 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_10extraction_2__set__(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1823
+/* "SLEPc/EPS.pyx":1849
  * 
  *     property which:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -31562,7 +33379,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_5which___get__(struct PySlepcEPS
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/EPS.pyx":1824
+  /* "SLEPc/EPS.pyx":1850
  *     property which:
  *         def __get__(self):
  *             return self.getWhichEigenpairs()             # <<<<<<<<<<<<<<
@@ -31570,10 +33387,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_5which___get__(struct PySlepcEPS
  *             self.setWhichEigenpairs(value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getWhichEigenpairs); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1824, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getWhichEigenpairs); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1850, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -31583,10 +33400,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_5which___get__(struct PySlepcEPS
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1824, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1850, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1824, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1850, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -31594,7 +33411,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_5which___get__(struct PySlepcEPS
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1823
+  /* "SLEPc/EPS.pyx":1849
  * 
  *     property which:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -31615,7 +33432,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_5which___get__(struct PySlepcEPS
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1825
+/* "SLEPc/EPS.pyx":1851
  *         def __get__(self):
  *             return self.getWhichEigenpairs()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -31645,17 +33462,17 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_5which_2__set__(struct PySlepcEPSObjec
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/EPS.pyx":1826
+  /* "SLEPc/EPS.pyx":1852
  *             return self.getWhichEigenpairs()
  *         def __set__(self, value):
  *             self.setWhichEigenpairs(value)             # <<<<<<<<<<<<<<
  * 
  *     property target:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setWhichEigenpairs); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1826, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setWhichEigenpairs); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1852, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -31665,23 +33482,41 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_5which_2__set__(struct PySlepcEPSObjec
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1826, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1852, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 1826, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_INCREF(__pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1826, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1852, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1852, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1852, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_value);
+      __Pyx_GIVEREF(__pyx_v_value);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1852, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":1825
+  /* "SLEPc/EPS.pyx":1851
  *         def __get__(self):
  *             return self.getWhichEigenpairs()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -31704,7 +33539,7 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_5which_2__set__(struct PySlepcEPSObjec
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1829
+/* "SLEPc/EPS.pyx":1855
  * 
  *     property target:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -31733,7 +33568,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_6target___get__(struct PySlepcEP
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/EPS.pyx":1830
+  /* "SLEPc/EPS.pyx":1856
  *     property target:
  *         def __get__(self):
  *             return self.getTarget()             # <<<<<<<<<<<<<<
@@ -31741,10 +33576,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_6target___get__(struct PySlepcEP
  *             self.setTarget(value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getTarget); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1830, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getTarget); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1856, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -31754,10 +33589,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_6target___get__(struct PySlepcEP
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1830, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1856, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1830, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1856, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -31765,7 +33600,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_6target___get__(struct PySlepcEP
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1829
+  /* "SLEPc/EPS.pyx":1855
  * 
  *     property target:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -31786,7 +33621,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_6target___get__(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1831
+/* "SLEPc/EPS.pyx":1857
  *         def __get__(self):
  *             return self.getTarget()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -31816,17 +33651,17 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_6target_2__set__(struct PySlepcEPSObje
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/EPS.pyx":1832
+  /* "SLEPc/EPS.pyx":1858
  *             return self.getTarget()
  *         def __set__(self, value):
  *             self.setTarget(value)             # <<<<<<<<<<<<<<
  * 
  *     property tol:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setTarget); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1832, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setTarget); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1858, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -31836,23 +33671,41 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_6target_2__set__(struct PySlepcEPSObje
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1832, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1858, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 1832, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_INCREF(__pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1832, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1858, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1858, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1858, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_value);
+      __Pyx_GIVEREF(__pyx_v_value);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1858, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":1831
+  /* "SLEPc/EPS.pyx":1857
  *         def __get__(self):
  *             return self.getTarget()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -31875,7 +33728,7 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_6target_2__set__(struct PySlepcEPSObje
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1835
+/* "SLEPc/EPS.pyx":1861
  * 
  *     property tol:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -31904,7 +33757,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_3tol___get__(struct PySlepcEPSOb
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/EPS.pyx":1836
+  /* "SLEPc/EPS.pyx":1862
  *     property tol:
  *         def __get__(self):
  *             return self.getTolerances()[0]             # <<<<<<<<<<<<<<
@@ -31912,10 +33765,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_3tol___get__(struct PySlepcEPSOb
  *             self.setTolerances(tol=value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getTolerances); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1836, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getTolerances); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1862, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -31925,21 +33778,21 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_3tol___get__(struct PySlepcEPSOb
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1836, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1862, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1836, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1862, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1836, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1862, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1835
+  /* "SLEPc/EPS.pyx":1861
  * 
  *     property tol:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -31960,7 +33813,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_3tol___get__(struct PySlepcEPSOb
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1837
+/* "SLEPc/EPS.pyx":1863
  *         def __get__(self):
  *             return self.getTolerances()[0]
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -31989,25 +33842,25 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_3tol_2__set__(struct PySlepcEPSObject
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/EPS.pyx":1838
+  /* "SLEPc/EPS.pyx":1864
  *             return self.getTolerances()[0]
  *         def __set__(self, value):
  *             self.setTolerances(tol=value)             # <<<<<<<<<<<<<<
  * 
  *     property max_it:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setTolerances); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1838, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setTolerances); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1864, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1838, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1864, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_tol, __pyx_v_value) < 0) __PYX_ERR(13, 1838, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 1838, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_tol, __pyx_v_value) < 0) __PYX_ERR(14, 1864, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1864, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "SLEPc/EPS.pyx":1837
+  /* "SLEPc/EPS.pyx":1863
  *         def __get__(self):
  *             return self.getTolerances()[0]
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -32029,7 +33882,7 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_3tol_2__set__(struct PySlepcEPSObject
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1841
+/* "SLEPc/EPS.pyx":1867
  * 
  *     property max_it:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -32058,7 +33911,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_6max_it___get__(struct PySlepcEP
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/EPS.pyx":1842
+  /* "SLEPc/EPS.pyx":1868
  *     property max_it:
  *         def __get__(self):
  *             return self.getTolerances()[1]             # <<<<<<<<<<<<<<
@@ -32066,10 +33919,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_6max_it___get__(struct PySlepcEP
  *             self.setTolerances(max_it=value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getTolerances); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1842, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getTolerances); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1868, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -32079,21 +33932,21 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_6max_it___get__(struct PySlepcEP
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1842, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1868, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1842, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1868, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1842, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1868, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1841
+  /* "SLEPc/EPS.pyx":1867
  * 
  *     property max_it:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -32114,7 +33967,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_6max_it___get__(struct PySlepcEP
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1843
+/* "SLEPc/EPS.pyx":1869
  *         def __get__(self):
  *             return self.getTolerances()[1]
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -32143,25 +33996,25 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_6max_it_2__set__(struct PySlepcEPSObje
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/EPS.pyx":1844
+  /* "SLEPc/EPS.pyx":1870
  *             return self.getTolerances()[1]
  *         def __set__(self, value):
  *             self.setTolerances(max_it=value)             # <<<<<<<<<<<<<<
  * 
  *     property st:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setTolerances); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1844, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setTolerances); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1870, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1844, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1870, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_max_it, __pyx_v_value) < 0) __PYX_ERR(13, 1844, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 1844, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_max_it, __pyx_v_value) < 0) __PYX_ERR(14, 1870, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 1870, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "SLEPc/EPS.pyx":1843
+  /* "SLEPc/EPS.pyx":1869
  *         def __get__(self):
  *             return self.getTolerances()[1]
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -32183,7 +34036,7 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_6max_it_2__set__(struct PySlepcEPSObje
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1847
+/* "SLEPc/EPS.pyx":1873
  * 
  *     property st:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -32212,7 +34065,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_2st___get__(struct PySlepcEPSObj
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/EPS.pyx":1848
+  /* "SLEPc/EPS.pyx":1874
  *     property st:
  *         def __get__(self):
  *             return self.getST()             # <<<<<<<<<<<<<<
@@ -32220,10 +34073,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_2st___get__(struct PySlepcEPSObj
  *             self.setST(value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getST); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1848, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getST); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1874, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -32233,10 +34086,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_2st___get__(struct PySlepcEPSObj
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1848, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1874, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1848, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1874, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -32244,7 +34097,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_2st___get__(struct PySlepcEPSObj
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1847
+  /* "SLEPc/EPS.pyx":1873
  * 
  *     property st:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -32265,7 +34118,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_2st___get__(struct PySlepcEPSObj
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1849
+/* "SLEPc/EPS.pyx":1875
  *         def __get__(self):
  *             return self.getST()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -32295,17 +34148,17 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_2st_2__set__(struct PySlepcEPSObject *
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/EPS.pyx":1850
+  /* "SLEPc/EPS.pyx":1876
  *             return self.getST()
  *         def __set__(self, value):
  *             self.setST(value)             # <<<<<<<<<<<<<<
  * 
  *     property bv:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setST); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1850, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setST); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1876, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -32315,23 +34168,41 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_2st_2__set__(struct PySlepcEPSObject *
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1850, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1876, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 1850, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_INCREF(__pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1850, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1876, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1876, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1876, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_value);
+      __Pyx_GIVEREF(__pyx_v_value);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1876, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":1849
+  /* "SLEPc/EPS.pyx":1875
  *         def __get__(self):
  *             return self.getST()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -32354,7 +34225,7 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_2st_2__set__(struct PySlepcEPSObject *
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1853
+/* "SLEPc/EPS.pyx":1879
  * 
  *     property bv:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -32383,7 +34254,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_2bv___get__(struct PySlepcEPSObj
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/EPS.pyx":1854
+  /* "SLEPc/EPS.pyx":1880
  *     property bv:
  *         def __get__(self):
  *             return self.getBV()             # <<<<<<<<<<<<<<
@@ -32391,10 +34262,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_2bv___get__(struct PySlepcEPSObj
  *             self.setBV(value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getBV); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1854, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getBV); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1880, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -32404,10 +34275,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_2bv___get__(struct PySlepcEPSObj
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1854, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1880, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1854, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1880, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -32415,7 +34286,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_2bv___get__(struct PySlepcEPSObj
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/EPS.pyx":1853
+  /* "SLEPc/EPS.pyx":1879
  * 
  *     property bv:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -32436,7 +34307,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3EPS_2bv___get__(struct PySlepcEPSObj
   return __pyx_r;
 }
 
-/* "SLEPc/EPS.pyx":1855
+/* "SLEPc/EPS.pyx":1881
  *         def __get__(self):
  *             return self.getBV()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -32466,17 +34337,17 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_2bv_2__set__(struct PySlepcEPSObject *
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/EPS.pyx":1856
+  /* "SLEPc/EPS.pyx":1882
  *             return self.getBV()
  *         def __set__(self, value):
  *             self.setBV(value)             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setBV); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1856, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setBV); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 1882, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -32486,23 +34357,41 @@ static int __pyx_pf_8slepc4py_5SLEPc_3EPS_2bv_2__set__(struct PySlepcEPSObject *
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1856, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1882, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 1856, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_INCREF(__pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 1856, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1882, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1882, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 1882, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_value);
+      __Pyx_GIVEREF(__pyx_v_value);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 1882, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "SLEPc/EPS.pyx":1855
+  /* "SLEPc/EPS.pyx":1881
  *         def __get__(self):
  *             return self.getBV()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -32611,6 +34500,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_3view(PyObject *__pyx_v_self, Py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -32623,11 +34513,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_3view(PyObject *__pyx_v_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(14, 73, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(15, 73, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -32636,13 +34527,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_3view(PyObject *__pyx_v_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 73, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 73, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.view", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(14, 73, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(15, 73, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3SVD_2view(((struct PySlepcSVDObject *)__pyx_v_self), __pyx_v_viewer);
 
   /* function exit code */
@@ -32659,42 +34550,25 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_2view(struct PySlepcSVDObject *_
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
-  PetscViewer __pyx_t_3;
-  int __pyx_t_4;
   __Pyx_RefNannySetupContext("view", 0);
 
   /* "SLEPc/SVD.pyx":83
  *                 output is used.
  *         """
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( SVDView(self.svd, vwr) )
+ * 
  */
-  __pyx_v_vwr = NULL;
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
   /* "SLEPc/SVD.pyx":84
  *         """
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
- *         CHKERR( SVDView(self.svd, vwr) )
- * 
- */
-  __pyx_t_1 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_3;
-  }
-
-  /* "SLEPc/SVD.pyx":85
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( SVDView(self.svd, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     def destroy(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDView(__pyx_v_self->svd, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(14, 85, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDView(__pyx_v_self->svd, __pyx_v_vwr)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 84, __pyx_L1_error)
 
   /* "SLEPc/SVD.pyx":73
  *         self.svd = NULL
@@ -32716,7 +34590,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_2view(struct PySlepcSVDObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":87
+/* "SLEPc/SVD.pyx":86
  *         CHKERR( SVDView(self.svd, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -32747,16 +34621,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_4destroy(struct PySlepcSVDObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("destroy", 0);
 
-  /* "SLEPc/SVD.pyx":91
+  /* "SLEPc/SVD.pyx":90
  *         Destroys the SVD object.
  *         """
  *         CHKERR( SVDDestroy(&self.svd) )             # <<<<<<<<<<<<<<
  *         self.svd = NULL
  *         return self
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDDestroy((&__pyx_v_self->svd))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 91, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDDestroy((&__pyx_v_self->svd))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 90, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":92
+  /* "SLEPc/SVD.pyx":91
  *         """
  *         CHKERR( SVDDestroy(&self.svd) )
  *         self.svd = NULL             # <<<<<<<<<<<<<<
@@ -32765,7 +34639,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_4destroy(struct PySlepcSVDObject
  */
   __pyx_v_self->svd = NULL;
 
-  /* "SLEPc/SVD.pyx":93
+  /* "SLEPc/SVD.pyx":92
  *         CHKERR( SVDDestroy(&self.svd) )
  *         self.svd = NULL
  *         return self             # <<<<<<<<<<<<<<
@@ -32777,7 +34651,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_4destroy(struct PySlepcSVDObject
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":87
+  /* "SLEPc/SVD.pyx":86
  *         CHKERR( SVDView(self.svd, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -32795,7 +34669,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_4destroy(struct PySlepcSVDObject
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":95
+/* "SLEPc/SVD.pyx":94
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -32826,16 +34700,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_6reset(struct PySlepcSVDObject *
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("reset", 0);
 
-  /* "SLEPc/SVD.pyx":99
+  /* "SLEPc/SVD.pyx":98
  *         Resets the SVD object.
  *         """
  *         CHKERR( SVDReset(self.svd) )             # <<<<<<<<<<<<<<
  * 
  *     def create(self, comm=None):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDReset(__pyx_v_self->svd)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 99, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDReset(__pyx_v_self->svd)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 98, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":95
+  /* "SLEPc/SVD.pyx":94
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -32855,7 +34729,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_6reset(struct PySlepcSVDObject *
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":101
+/* "SLEPc/SVD.pyx":100
  *         CHKERR( SVDReset(self.svd) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -32880,6 +34754,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_9create(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -32892,11 +34767,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_9create(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(14, 101, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(15, 100, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -32905,7 +34781,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_9create(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 101, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 100, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -32927,17 +34803,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_8create(struct PySlepcSVDObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("create", 0);
 
-  /* "SLEPc/SVD.pyx":111
+  /* "SLEPc/SVD.pyx":110
  *               processes.
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())             # <<<<<<<<<<<<<<
  *         cdef SlepcSVD newsvd = NULL
  *         CHKERR( SVDCreate(ccomm, &newsvd) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 111, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 110, __pyx_L1_error)
   __pyx_v_ccomm = __pyx_t_1;
 
-  /* "SLEPc/SVD.pyx":112
+  /* "SLEPc/SVD.pyx":111
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcSVD newsvd = NULL             # <<<<<<<<<<<<<<
@@ -32946,16 +34822,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_8create(struct PySlepcSVDObject
  */
   __pyx_v_newsvd = NULL;
 
-  /* "SLEPc/SVD.pyx":113
+  /* "SLEPc/SVD.pyx":112
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcSVD newsvd = NULL
  *         CHKERR( SVDCreate(ccomm, &newsvd) )             # <<<<<<<<<<<<<<
  *         SlepcCLEAR(self.obj); self.svd = newsvd
  *         return self
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCreate(__pyx_v_ccomm, (&__pyx_v_newsvd))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(14, 113, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCreate(__pyx_v_ccomm, (&__pyx_v_newsvd))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 112, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":114
+  /* "SLEPc/SVD.pyx":113
  *         cdef SlepcSVD newsvd = NULL
  *         CHKERR( SVDCreate(ccomm, &newsvd) )
  *         SlepcCLEAR(self.obj); self.svd = newsvd             # <<<<<<<<<<<<<<
@@ -32965,7 +34841,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_8create(struct PySlepcSVDObject
   __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(__pyx_v_self->__pyx_base.obj);
   __pyx_v_self->svd = __pyx_v_newsvd;
 
-  /* "SLEPc/SVD.pyx":115
+  /* "SLEPc/SVD.pyx":114
  *         CHKERR( SVDCreate(ccomm, &newsvd) )
  *         SlepcCLEAR(self.obj); self.svd = newsvd
  *         return self             # <<<<<<<<<<<<<<
@@ -32977,7 +34853,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_8create(struct PySlepcSVDObject
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":101
+  /* "SLEPc/SVD.pyx":100
  *         CHKERR( SVDReset(self.svd) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -32995,7 +34871,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_8create(struct PySlepcSVDObject
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":117
+/* "SLEPc/SVD.pyx":116
  *         return self
  * 
  *     def setType(self, svd_type):             # <<<<<<<<<<<<<<
@@ -33019,6 +34895,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_11setType(PyObject *__pyx_v_self
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -33029,7 +34906,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_11setType(PyObject *__pyx_v_self
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(14, 117, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(15, 116, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -33040,7 +34917,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_11setType(PyObject *__pyx_v_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 117, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 116, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -33062,7 +34939,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_10setType(struct PySlepcSVDObjec
   __Pyx_RefNannySetupContext("setType", 0);
   __Pyx_INCREF(__pyx_v_svd_type);
 
-  /* "SLEPc/SVD.pyx":135
+  /* "SLEPc/SVD.pyx":134
  *         methods.
  *         """
  *         cdef SlepcSVDType cval = NULL             # <<<<<<<<<<<<<<
@@ -33071,28 +34948,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_10setType(struct PySlepcSVDObjec
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/SVD.pyx":136
+  /* "SLEPc/SVD.pyx":135
  *         """
  *         cdef SlepcSVDType cval = NULL
  *         svd_type = str2bytes(svd_type, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( SVDSetType(self.svd, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_svd_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 136, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_svd_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 135, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_svd_type, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/SVD.pyx":137
+  /* "SLEPc/SVD.pyx":136
  *         cdef SlepcSVDType cval = NULL
  *         svd_type = str2bytes(svd_type, &cval)
  *         CHKERR( SVDSetType(self.svd, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getType(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetType(__pyx_v_self->svd, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(14, 137, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetType(__pyx_v_self->svd, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 136, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":117
+  /* "SLEPc/SVD.pyx":116
  *         return self
  * 
  *     def setType(self, svd_type):             # <<<<<<<<<<<<<<
@@ -33114,7 +34991,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_10setType(struct PySlepcSVDObjec
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":139
+/* "SLEPc/SVD.pyx":138
  *         CHKERR( SVDSetType(self.svd, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -33147,7 +35024,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_12getType(struct PySlepcSVDObjec
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getType", 0);
 
-  /* "SLEPc/SVD.pyx":148
+  /* "SLEPc/SVD.pyx":147
  *               The solver currently being used.
  *         """
  *         cdef SlepcSVDType svd_type = NULL             # <<<<<<<<<<<<<<
@@ -33156,16 +35033,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_12getType(struct PySlepcSVDObjec
  */
   __pyx_v_svd_type = NULL;
 
-  /* "SLEPc/SVD.pyx":149
+  /* "SLEPc/SVD.pyx":148
  *         """
  *         cdef SlepcSVDType svd_type = NULL
  *         CHKERR( SVDGetType(self.svd, &svd_type) )             # <<<<<<<<<<<<<<
  *         return bytes2str(svd_type)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetType(__pyx_v_self->svd, (&__pyx_v_svd_type))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 149, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetType(__pyx_v_self->svd, (&__pyx_v_svd_type))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 148, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":150
+  /* "SLEPc/SVD.pyx":149
  *         cdef SlepcSVDType svd_type = NULL
  *         CHKERR( SVDGetType(self.svd, &svd_type) )
  *         return bytes2str(svd_type)             # <<<<<<<<<<<<<<
@@ -33173,13 +35050,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_12getType(struct PySlepcSVDObjec
  *     def getOptionsPrefix(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_svd_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 150, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_svd_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 149, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":139
+  /* "SLEPc/SVD.pyx":138
  *         CHKERR( SVDSetType(self.svd, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -33198,7 +35075,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_12getType(struct PySlepcSVDObjec
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":152
+/* "SLEPc/SVD.pyx":151
  *         return bytes2str(svd_type)
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -33231,7 +35108,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_14getOptionsPrefix(struct PySlep
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getOptionsPrefix", 0);
 
-  /* "SLEPc/SVD.pyx":162
+  /* "SLEPc/SVD.pyx":161
  *                 The prefix string set for this SVD object.
  *         """
  *         cdef const_char *prefix = NULL             # <<<<<<<<<<<<<<
@@ -33240,16 +35117,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_14getOptionsPrefix(struct PySlep
  */
   __pyx_v_prefix = NULL;
 
-  /* "SLEPc/SVD.pyx":163
+  /* "SLEPc/SVD.pyx":162
  *         """
  *         cdef const_char *prefix = NULL
  *         CHKERR( SVDGetOptionsPrefix(self.svd, &prefix) )             # <<<<<<<<<<<<<<
  *         return bytes2str(prefix)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetOptionsPrefix(__pyx_v_self->svd, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 163, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetOptionsPrefix(__pyx_v_self->svd, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 162, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":164
+  /* "SLEPc/SVD.pyx":163
  *         cdef const_char *prefix = NULL
  *         CHKERR( SVDGetOptionsPrefix(self.svd, &prefix) )
  *         return bytes2str(prefix)             # <<<<<<<<<<<<<<
@@ -33257,13 +35134,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_14getOptionsPrefix(struct PySlep
  *     def setOptionsPrefix(self, prefix):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 164, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 163, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":152
+  /* "SLEPc/SVD.pyx":151
  *         return bytes2str(svd_type)
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -33282,7 +35159,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_14getOptionsPrefix(struct PySlep
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":166
+/* "SLEPc/SVD.pyx":165
  *         return bytes2str(prefix)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -33306,6 +35183,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_17setOptionsPrefix(PyObject *__p
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -33316,7 +35194,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_17setOptionsPrefix(PyObject *__p
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(14, 166, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(15, 165, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -33327,7 +35205,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_17setOptionsPrefix(PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 166, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 165, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -33349,7 +35227,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_16setOptionsPrefix(struct PySlep
   __Pyx_RefNannySetupContext("setOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/SVD.pyx":189
+  /* "SLEPc/SVD.pyx":188
  *             S2.setOptionsPrefix("svd2_")
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -33358,28 +35236,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_16setOptionsPrefix(struct PySlep
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/SVD.pyx":190
+  /* "SLEPc/SVD.pyx":189
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( SVDSetOptionsPrefix(self.svd, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 190, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 189, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/SVD.pyx":191
+  /* "SLEPc/SVD.pyx":190
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( SVDSetOptionsPrefix(self.svd, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def appendOptionsPrefix(self, prefix):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetOptionsPrefix(__pyx_v_self->svd, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(14, 191, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetOptionsPrefix(__pyx_v_self->svd, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 190, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":166
+  /* "SLEPc/SVD.pyx":165
  *         return bytes2str(prefix)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -33401,7 +35279,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_16setOptionsPrefix(struct PySlep
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":193
+/* "SLEPc/SVD.pyx":192
  *         CHKERR( SVDSetOptionsPrefix(self.svd, cval) )
  * 
  *     def appendOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -33425,6 +35303,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_19appendOptionsPrefix(PyObject *
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -33435,7 +35314,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_19appendOptionsPrefix(PyObject *
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "appendOptionsPrefix") < 0)) __PYX_ERR(14, 193, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "appendOptionsPrefix") < 0)) __PYX_ERR(15, 192, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -33446,7 +35325,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_19appendOptionsPrefix(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("appendOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 193, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("appendOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 192, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.appendOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -33468,7 +35347,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_18appendOptionsPrefix(struct PyS
   __Pyx_RefNannySetupContext("appendOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/SVD.pyx":203
+  /* "SLEPc/SVD.pyx":202
  *                 The prefix string to prepend to all SVD option requests.
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -33477,28 +35356,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_18appendOptionsPrefix(struct PyS
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/SVD.pyx":204
+  /* "SLEPc/SVD.pyx":203
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( SVDAppendOptionsPrefix(self.svd, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 204, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 203, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/SVD.pyx":205
+  /* "SLEPc/SVD.pyx":204
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( SVDAppendOptionsPrefix(self.svd, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def setFromOptions(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDAppendOptionsPrefix(__pyx_v_self->svd, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(14, 205, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDAppendOptionsPrefix(__pyx_v_self->svd, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 204, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":193
+  /* "SLEPc/SVD.pyx":192
  *         CHKERR( SVDSetOptionsPrefix(self.svd, cval) )
  * 
  *     def appendOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -33520,7 +35399,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_18appendOptionsPrefix(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":207
+/* "SLEPc/SVD.pyx":206
  *         CHKERR( SVDAppendOptionsPrefix(self.svd, cval) )
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -33551,16 +35430,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_20setFromOptions(struct PySlepcS
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setFromOptions", 0);
 
-  /* "SLEPc/SVD.pyx":218
+  /* "SLEPc/SVD.pyx":217
  *         option.
  *         """
  *         CHKERR( SVDSetFromOptions(self.svd) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetFromOptions(__pyx_v_self->svd)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 218, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetFromOptions(__pyx_v_self->svd)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 217, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":207
+  /* "SLEPc/SVD.pyx":206
  *         CHKERR( SVDAppendOptionsPrefix(self.svd, cval) )
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -33580,7 +35459,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_20setFromOptions(struct PySlepcS
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":222
+/* "SLEPc/SVD.pyx":221
  *     #
  * 
  *     def getImplicitTranspose(self):             # <<<<<<<<<<<<<<
@@ -33613,7 +35492,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_22getImplicitTranspose(struct Py
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getImplicitTranspose", 0);
 
-  /* "SLEPc/SVD.pyx":232
+  /* "SLEPc/SVD.pyx":231
  *               How to handle the transpose (implicitly or not).
  *         """
  *         cdef PetscBool val = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -33622,16 +35501,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_22getImplicitTranspose(struct Py
  */
   __pyx_v_val = PETSC_FALSE;
 
-  /* "SLEPc/SVD.pyx":233
+  /* "SLEPc/SVD.pyx":232
  *         """
  *         cdef PetscBool val = PETSC_FALSE
  *         CHKERR( SVDGetImplicitTranspose(self.svd, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetImplicitTranspose(__pyx_v_self->svd, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 233, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetImplicitTranspose(__pyx_v_self->svd, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 232, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":234
+  /* "SLEPc/SVD.pyx":233
  *         cdef PetscBool val = PETSC_FALSE
  *         CHKERR( SVDGetImplicitTranspose(self.svd, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -33639,13 +35518,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_22getImplicitTranspose(struct Py
  *     def setImplicitTranspose(self, mode):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 234, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 233, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":222
+  /* "SLEPc/SVD.pyx":221
  *     #
  * 
  *     def getImplicitTranspose(self):             # <<<<<<<<<<<<<<
@@ -33664,7 +35543,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_22getImplicitTranspose(struct Py
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":236
+/* "SLEPc/SVD.pyx":235
  *         return val
  * 
  *     def setImplicitTranspose(self, mode):             # <<<<<<<<<<<<<<
@@ -33688,6 +35567,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_25setImplicitTranspose(PyObject
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -33698,7 +35578,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_25setImplicitTranspose(PyObject
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setImplicitTranspose") < 0)) __PYX_ERR(14, 236, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setImplicitTranspose") < 0)) __PYX_ERR(15, 235, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -33709,7 +35589,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_25setImplicitTranspose(PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setImplicitTranspose", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 236, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setImplicitTranspose", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 235, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setImplicitTranspose", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -33730,26 +35610,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_24setImplicitTranspose(struct Py
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setImplicitTranspose", 0);
 
-  /* "SLEPc/SVD.pyx":254
+  /* "SLEPc/SVD.pyx":253
  *         transpose, but handles it implicitly via MatMultTranspose().
  *         """
  *         cdef PetscBool val = mode             # <<<<<<<<<<<<<<
  *         CHKERR( SVDSetImplicitTranspose(self.svd, val) )
  * 
  */
-  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_mode)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 254, __pyx_L1_error)
+  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_mode)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 253, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/SVD.pyx":255
+  /* "SLEPc/SVD.pyx":254
  *         """
  *         cdef PetscBool val = mode
  *         CHKERR( SVDSetImplicitTranspose(self.svd, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getWhichSingularTriplets(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetImplicitTranspose(__pyx_v_self->svd, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(14, 255, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetImplicitTranspose(__pyx_v_self->svd, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 254, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":236
+  /* "SLEPc/SVD.pyx":235
  *         return val
  * 
  *     def setImplicitTranspose(self, mode):             # <<<<<<<<<<<<<<
@@ -33769,7 +35649,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_24setImplicitTranspose(struct Py
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":257
+/* "SLEPc/SVD.pyx":256
  *         CHKERR( SVDSetImplicitTranspose(self.svd, val) )
  * 
  *     def getWhichSingularTriplets(self):             # <<<<<<<<<<<<<<
@@ -33802,7 +35682,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_26getWhichSingularTriplets(struc
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getWhichSingularTriplets", 0);
 
-  /* "SLEPc/SVD.pyx":267
+  /* "SLEPc/SVD.pyx":266
  *                smallest).
  *         """
  *         cdef SlepcSVDWhich val = SVD_LARGEST             # <<<<<<<<<<<<<<
@@ -33811,16 +35691,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_26getWhichSingularTriplets(struc
  */
   __pyx_v_val = SVD_LARGEST;
 
-  /* "SLEPc/SVD.pyx":268
+  /* "SLEPc/SVD.pyx":267
  *         """
  *         cdef SlepcSVDWhich val = SVD_LARGEST
  *         CHKERR( SVDGetWhichSingularTriplets(self.svd, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetWhichSingularTriplets(__pyx_v_self->svd, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 268, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetWhichSingularTriplets(__pyx_v_self->svd, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 267, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":269
+  /* "SLEPc/SVD.pyx":268
  *         cdef SlepcSVDWhich val = SVD_LARGEST
  *         CHKERR( SVDGetWhichSingularTriplets(self.svd, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -33828,13 +35708,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_26getWhichSingularTriplets(struc
  *     def setWhichSingularTriplets(self, which):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_SVDWhich(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 269, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_SVDWhich(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 268, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":257
+  /* "SLEPc/SVD.pyx":256
  *         CHKERR( SVDSetImplicitTranspose(self.svd, val) )
  * 
  *     def getWhichSingularTriplets(self):             # <<<<<<<<<<<<<<
@@ -33853,7 +35733,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_26getWhichSingularTriplets(struc
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":271
+/* "SLEPc/SVD.pyx":270
  *         return val
  * 
  *     def setWhichSingularTriplets(self, which):             # <<<<<<<<<<<<<<
@@ -33877,6 +35757,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_29setWhichSingularTriplets(PyObj
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -33887,7 +35768,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_29setWhichSingularTriplets(PyObj
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setWhichSingularTriplets") < 0)) __PYX_ERR(14, 271, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setWhichSingularTriplets") < 0)) __PYX_ERR(15, 270, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -33898,7 +35779,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_29setWhichSingularTriplets(PyObj
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setWhichSingularTriplets", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 271, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setWhichSingularTriplets", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 270, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setWhichSingularTriplets", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -33919,26 +35800,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_28setWhichSingularTriplets(struc
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setWhichSingularTriplets", 0);
 
-  /* "SLEPc/SVD.pyx":281
+  /* "SLEPc/SVD.pyx":280
  *                smallest).
  *         """
  *         cdef SlepcSVDWhich val = which             # <<<<<<<<<<<<<<
  *         CHKERR( SVDSetWhichSingularTriplets(self.svd, val) )
  *     #
  */
-  __pyx_t_1 = ((SVDWhich)__Pyx_PyInt_As_SVDWhich(__pyx_v_which)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 281, __pyx_L1_error)
+  __pyx_t_1 = ((SVDWhich)__Pyx_PyInt_As_SVDWhich(__pyx_v_which)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 280, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/SVD.pyx":282
+  /* "SLEPc/SVD.pyx":281
  *         """
  *         cdef SlepcSVDWhich val = which
  *         CHKERR( SVDSetWhichSingularTriplets(self.svd, val) )             # <<<<<<<<<<<<<<
  *     #
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetWhichSingularTriplets(__pyx_v_self->svd, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(14, 282, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetWhichSingularTriplets(__pyx_v_self->svd, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 281, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":271
+  /* "SLEPc/SVD.pyx":270
  *         return val
  * 
  *     def setWhichSingularTriplets(self, which):             # <<<<<<<<<<<<<<
@@ -33958,7 +35839,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_28setWhichSingularTriplets(struc
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":285
+/* "SLEPc/SVD.pyx":284
  *     #
  * 
  *     def getTolerances(self):             # <<<<<<<<<<<<<<
@@ -33994,7 +35875,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_30getTolerances(struct PySlepcSV
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getTolerances", 0);
 
-  /* "SLEPc/SVD.pyx":297
+  /* "SLEPc/SVD.pyx":296
  *              The maximum number of iterations
  *         """
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -34003,7 +35884,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_30getTolerances(struct PySlepcSV
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/SVD.pyx":298
+  /* "SLEPc/SVD.pyx":297
  *         """
  *         cdef PetscReal rval = 0
  *         cdef PetscInt  ival = 0             # <<<<<<<<<<<<<<
@@ -34012,16 +35893,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_30getTolerances(struct PySlepcSV
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/SVD.pyx":299
+  /* "SLEPc/SVD.pyx":298
  *         cdef PetscReal rval = 0
  *         cdef PetscInt  ival = 0
  *         CHKERR( SVDGetTolerances(self.svd, &rval, &ival) )             # <<<<<<<<<<<<<<
  *         return (toReal(rval), toInt(ival))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetTolerances(__pyx_v_self->svd, (&__pyx_v_rval), (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 299, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetTolerances(__pyx_v_self->svd, (&__pyx_v_rval), (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 298, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":300
+  /* "SLEPc/SVD.pyx":299
  *         cdef PetscInt  ival = 0
  *         CHKERR( SVDGetTolerances(self.svd, &rval, &ival) )
  *         return (toReal(rval), toInt(ival))             # <<<<<<<<<<<<<<
@@ -34029,11 +35910,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_30getTolerances(struct PySlepcSV
  *     def setTolerances(self, tol=None, max_it=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 300, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 299, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 300, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 299, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 300, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 299, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
@@ -34045,7 +35926,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_30getTolerances(struct PySlepcSV
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":285
+  /* "SLEPc/SVD.pyx":284
  *     #
  * 
  *     def getTolerances(self):             # <<<<<<<<<<<<<<
@@ -34066,7 +35947,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_30getTolerances(struct PySlepcSV
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":302
+/* "SLEPc/SVD.pyx":301
  *         return (toReal(rval), toInt(ival))
  * 
  *     def setTolerances(self, tol=None, max_it=None):             # <<<<<<<<<<<<<<
@@ -34093,7 +35974,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_33setTolerances(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -34104,6 +35987,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_33setTolerances(PyObject *__pyx_
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_tol);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_max_it);
@@ -34111,12 +35995,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_33setTolerances(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTolerances") < 0)) __PYX_ERR(14, 302, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTolerances") < 0)) __PYX_ERR(15, 301, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -34126,7 +36012,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_33setTolerances(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setTolerances", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 302, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setTolerances", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 301, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setTolerances", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -34151,7 +36037,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_32setTolerances(struct PySlepcSV
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("setTolerances", 0);
 
-  /* "SLEPc/SVD.pyx":319
+  /* "SLEPc/SVD.pyx":318
  *         which is dependent on the solution method.
  *         """
  *         cdef PetscReal rval = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -34160,7 +36046,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_32setTolerances(struct PySlepcSV
  */
   __pyx_v_rval = PETSC_DEFAULT;
 
-  /* "SLEPc/SVD.pyx":320
+  /* "SLEPc/SVD.pyx":319
  *         """
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         cdef PetscInt  ival = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -34169,7 +36055,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_32setTolerances(struct PySlepcSV
  */
   __pyx_v_ival = PETSC_DEFAULT;
 
-  /* "SLEPc/SVD.pyx":321
+  /* "SLEPc/SVD.pyx":320
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         cdef PetscInt  ival = PETSC_DEFAULT
  *         if tol    is not None: rval = asReal(tol)             # <<<<<<<<<<<<<<
@@ -34179,11 +36065,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_32setTolerances(struct PySlepcSV
   __pyx_t_1 = (__pyx_v_tol != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_tol); if (unlikely(__pyx_t_3 == -1.0 && PyErr_Occurred())) __PYX_ERR(14, 321, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_tol); if (unlikely(__pyx_t_3 == ((PetscReal)-1.0) && PyErr_Occurred())) __PYX_ERR(15, 320, __pyx_L1_error)
     __pyx_v_rval = __pyx_t_3;
   }
 
-  /* "SLEPc/SVD.pyx":322
+  /* "SLEPc/SVD.pyx":321
  *         cdef PetscInt  ival = PETSC_DEFAULT
  *         if tol    is not None: rval = asReal(tol)
  *         if max_it is not None: ival = asInt(max_it)             # <<<<<<<<<<<<<<
@@ -34193,20 +36079,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_32setTolerances(struct PySlepcSV
   __pyx_t_2 = (__pyx_v_max_it != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_max_it); if (unlikely(__pyx_t_4 == -1L && PyErr_Occurred())) __PYX_ERR(14, 322, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_max_it); if (unlikely(__pyx_t_4 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(15, 321, __pyx_L1_error)
     __pyx_v_ival = __pyx_t_4;
   }
 
-  /* "SLEPc/SVD.pyx":323
+  /* "SLEPc/SVD.pyx":322
  *         if tol    is not None: rval = asReal(tol)
  *         if max_it is not None: ival = asInt(max_it)
  *         CHKERR( SVDSetTolerances(self.svd, rval, ival) )             # <<<<<<<<<<<<<<
  * 
  *     def getDimensions(self):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetTolerances(__pyx_v_self->svd, __pyx_v_rval, __pyx_v_ival)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(14, 323, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetTolerances(__pyx_v_self->svd, __pyx_v_rval, __pyx_v_ival)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(15, 322, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":302
+  /* "SLEPc/SVD.pyx":301
  *         return (toReal(rval), toInt(ival))
  * 
  *     def setTolerances(self, tol=None, max_it=None):             # <<<<<<<<<<<<<<
@@ -34226,7 +36112,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_32setTolerances(struct PySlepcSV
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":325
+/* "SLEPc/SVD.pyx":324
  *         CHKERR( SVDSetTolerances(self.svd, rval, ival) )
  * 
  *     def getDimensions(self):             # <<<<<<<<<<<<<<
@@ -34264,7 +36150,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_34getDimensions(struct PySlepcSV
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("getDimensions", 0);
 
-  /* "SLEPc/SVD.pyx":340
+  /* "SLEPc/SVD.pyx":339
  *              Maximum dimension allowed for the projected problem.
  *         """
  *         cdef PetscInt ival1 = 0             # <<<<<<<<<<<<<<
@@ -34273,7 +36159,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_34getDimensions(struct PySlepcSV
  */
   __pyx_v_ival1 = 0;
 
-  /* "SLEPc/SVD.pyx":341
+  /* "SLEPc/SVD.pyx":340
  *         """
  *         cdef PetscInt ival1 = 0
  *         cdef PetscInt ival2 = 0             # <<<<<<<<<<<<<<
@@ -34282,7 +36168,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_34getDimensions(struct PySlepcSV
  */
   __pyx_v_ival2 = 0;
 
-  /* "SLEPc/SVD.pyx":342
+  /* "SLEPc/SVD.pyx":341
  *         cdef PetscInt ival1 = 0
  *         cdef PetscInt ival2 = 0
  *         cdef PetscInt ival3 = 0             # <<<<<<<<<<<<<<
@@ -34291,16 +36177,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_34getDimensions(struct PySlepcSV
  */
   __pyx_v_ival3 = 0;
 
-  /* "SLEPc/SVD.pyx":343
+  /* "SLEPc/SVD.pyx":342
  *         cdef PetscInt ival2 = 0
  *         cdef PetscInt ival3 = 0
  *         CHKERR( SVDGetDimensions(self.svd, &ival1, &ival2, &ival3) )             # <<<<<<<<<<<<<<
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetDimensions(__pyx_v_self->svd, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_ival3))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 343, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetDimensions(__pyx_v_self->svd, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_ival3))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 342, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":344
+  /* "SLEPc/SVD.pyx":343
  *         cdef PetscInt ival3 = 0
  *         CHKERR( SVDGetDimensions(self.svd, &ival1, &ival2, &ival3) )
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))             # <<<<<<<<<<<<<<
@@ -34308,13 +36194,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_34getDimensions(struct PySlepcSV
  *     def setDimensions(self, nsv=None, ncv=None, mpd=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 344, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 343, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 344, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 343, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival3); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 344, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival3); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 343, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 344, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 343, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
@@ -34329,7 +36215,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_34getDimensions(struct PySlepcSV
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":325
+  /* "SLEPc/SVD.pyx":324
  *         CHKERR( SVDSetTolerances(self.svd, rval, ival) )
  * 
  *     def getDimensions(self):             # <<<<<<<<<<<<<<
@@ -34351,7 +36237,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_34getDimensions(struct PySlepcSV
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":346
+/* "SLEPc/SVD.pyx":345
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  *     def setDimensions(self, nsv=None, ncv=None, mpd=None):             # <<<<<<<<<<<<<<
@@ -34380,8 +36266,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_37setDimensions(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -34392,11 +36281,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_37setDimensions(PyObject *__pyx_
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nsv);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ncv);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mpd);
@@ -34404,13 +36295,16 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_37setDimensions(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDimensions") < 0)) __PYX_ERR(14, 346, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDimensions") < 0)) __PYX_ERR(15, 345, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -34421,7 +36315,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_37setDimensions(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setDimensions", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 346, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setDimensions", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 345, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setDimensions", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -34446,7 +36340,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_36setDimensions(struct PySlepcSV
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("setDimensions", 0);
 
-  /* "SLEPc/SVD.pyx":379
+  /* "SLEPc/SVD.pyx":378
  *         smaller value should be used.
  *         """
  *         cdef PetscInt ival1 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -34455,7 +36349,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_36setDimensions(struct PySlepcSV
  */
   __pyx_v_ival1 = PETSC_DEFAULT;
 
-  /* "SLEPc/SVD.pyx":380
+  /* "SLEPc/SVD.pyx":379
  *         """
  *         cdef PetscInt ival1 = PETSC_DEFAULT
  *         cdef PetscInt ival2 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -34464,7 +36358,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_36setDimensions(struct PySlepcSV
  */
   __pyx_v_ival2 = PETSC_DEFAULT;
 
-  /* "SLEPc/SVD.pyx":381
+  /* "SLEPc/SVD.pyx":380
  *         cdef PetscInt ival1 = PETSC_DEFAULT
  *         cdef PetscInt ival2 = PETSC_DEFAULT
  *         cdef PetscInt ival3 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -34473,7 +36367,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_36setDimensions(struct PySlepcSV
  */
   __pyx_v_ival3 = PETSC_DEFAULT;
 
-  /* "SLEPc/SVD.pyx":382
+  /* "SLEPc/SVD.pyx":381
  *         cdef PetscInt ival2 = PETSC_DEFAULT
  *         cdef PetscInt ival3 = PETSC_DEFAULT
  *         if nsv is not None: ival1 = asInt(nsv)             # <<<<<<<<<<<<<<
@@ -34483,11 +36377,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_36setDimensions(struct PySlepcSV
   __pyx_t_1 = (__pyx_v_nsv != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_nsv); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(14, 382, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_nsv); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(15, 381, __pyx_L1_error)
     __pyx_v_ival1 = __pyx_t_3;
   }
 
-  /* "SLEPc/SVD.pyx":383
+  /* "SLEPc/SVD.pyx":382
  *         cdef PetscInt ival3 = PETSC_DEFAULT
  *         if nsv is not None: ival1 = asInt(nsv)
  *         if ncv is not None: ival2 = asInt(ncv)             # <<<<<<<<<<<<<<
@@ -34497,11 +36391,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_36setDimensions(struct PySlepcSV
   __pyx_t_2 = (__pyx_v_ncv != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_ncv); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(14, 383, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_ncv); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(15, 382, __pyx_L1_error)
     __pyx_v_ival2 = __pyx_t_3;
   }
 
-  /* "SLEPc/SVD.pyx":384
+  /* "SLEPc/SVD.pyx":383
  *         if nsv is not None: ival1 = asInt(nsv)
  *         if ncv is not None: ival2 = asInt(ncv)
  *         if mpd is not None: ival3 = asInt(mpd)             # <<<<<<<<<<<<<<
@@ -34511,20 +36405,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_36setDimensions(struct PySlepcSV
   __pyx_t_1 = (__pyx_v_mpd != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_mpd); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(14, 384, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_mpd); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(15, 383, __pyx_L1_error)
     __pyx_v_ival3 = __pyx_t_3;
   }
 
-  /* "SLEPc/SVD.pyx":385
+  /* "SLEPc/SVD.pyx":384
  *         if ncv is not None: ival2 = asInt(ncv)
  *         if mpd is not None: ival3 = asInt(mpd)
  *         CHKERR( SVDSetDimensions(self.svd, ival1, ival2, ival3) )             # <<<<<<<<<<<<<<
  * 
  *     def getBV(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetDimensions(__pyx_v_self->svd, __pyx_v_ival1, __pyx_v_ival2, __pyx_v_ival3)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(14, 385, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetDimensions(__pyx_v_self->svd, __pyx_v_ival1, __pyx_v_ival2, __pyx_v_ival3)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(15, 384, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":346
+  /* "SLEPc/SVD.pyx":345
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  *     def setDimensions(self, nsv=None, ncv=None, mpd=None):             # <<<<<<<<<<<<<<
@@ -34544,7 +36438,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_36setDimensions(struct PySlepcSV
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":387
+/* "SLEPc/SVD.pyx":386
  *         CHKERR( SVDSetDimensions(self.svd, ival1, ival2, ival3) )
  * 
  *     def getBV(self):             # <<<<<<<<<<<<<<
@@ -34578,40 +36472,40 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_38getBV(struct PySlepcSVDObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getBV", 0);
 
-  /* "SLEPc/SVD.pyx":398
+  /* "SLEPc/SVD.pyx":397
  *             The basis vectors context for left singular vectors.
  *         """
  *         cdef BV V = BV()             # <<<<<<<<<<<<<<
  *         cdef BV U = BV()
  *         CHKERR( SVDGetBV(self.svd, &V.bv, &U.bv) )
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 398, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 397, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_V = ((struct PySlepcBVObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/SVD.pyx":399
+  /* "SLEPc/SVD.pyx":398
  *         """
  *         cdef BV V = BV()
  *         cdef BV U = BV()             # <<<<<<<<<<<<<<
  *         CHKERR( SVDGetBV(self.svd, &V.bv, &U.bv) )
  *         PetscINCREF(V.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 399, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 398, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_U = ((struct PySlepcBVObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/SVD.pyx":400
+  /* "SLEPc/SVD.pyx":399
  *         cdef BV V = BV()
  *         cdef BV U = BV()
  *         CHKERR( SVDGetBV(self.svd, &V.bv, &U.bv) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(V.obj)
  *         PetscINCREF(U.obj)
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetBV(__pyx_v_self->svd, (&__pyx_v_V->bv), (&__pyx_v_U->bv))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(14, 400, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetBV(__pyx_v_self->svd, (&__pyx_v_V->bv), (&__pyx_v_U->bv))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 399, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":401
+  /* "SLEPc/SVD.pyx":400
  *         cdef BV U = BV()
  *         CHKERR( SVDGetBV(self.svd, &V.bv, &U.bv) )
  *         PetscINCREF(V.obj)             # <<<<<<<<<<<<<<
@@ -34620,7 +36514,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_38getBV(struct PySlepcSVDObject
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_V->__pyx_base.obj);
 
-  /* "SLEPc/SVD.pyx":402
+  /* "SLEPc/SVD.pyx":401
  *         CHKERR( SVDGetBV(self.svd, &V.bv, &U.bv) )
  *         PetscINCREF(V.obj)
  *         PetscINCREF(U.obj)             # <<<<<<<<<<<<<<
@@ -34629,15 +36523,15 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_38getBV(struct PySlepcSVDObject
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_U->__pyx_base.obj);
 
-  /* "SLEPc/SVD.pyx":403
+  /* "SLEPc/SVD.pyx":402
  *         PetscINCREF(V.obj)
  *         PetscINCREF(U.obj)
  *         return (V,U)             # <<<<<<<<<<<<<<
  * 
- *     def setBV(self, BV V not None,BV U=None):
+ *     def setBV(self, BV V,BV U=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 403, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 402, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_v_V));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_V));
@@ -34649,7 +36543,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_38getBV(struct PySlepcSVDObject
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":387
+  /* "SLEPc/SVD.pyx":386
  *         CHKERR( SVDSetDimensions(self.svd, ival1, ival2, ival3) )
  * 
  *     def getBV(self):             # <<<<<<<<<<<<<<
@@ -34670,10 +36564,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_38getBV(struct PySlepcSVDObject
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":405
+/* "SLEPc/SVD.pyx":404
  *         return (V,U)
  * 
- *     def setBV(self, BV V not None,BV U=None):             # <<<<<<<<<<<<<<
+ *     def setBV(self, BV V,BV U=None):             # <<<<<<<<<<<<<<
  *         """
  *         Associates basis vectors objects to the SVD solver.
  */
@@ -34696,7 +36590,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_41setBV(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -34705,6 +36601,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_41setBV(PyObject *__pyx_v_self,
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_U);
@@ -34712,11 +36609,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_41setBV(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBV") < 0)) __PYX_ERR(14, 405, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBV") < 0)) __PYX_ERR(15, 404, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
@@ -34727,14 +36625,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_41setBV(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setBV", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 405, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setBV", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 404, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setBV", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_V), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "V", 0))) __PYX_ERR(14, 405, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_U), __pyx_ptype_8slepc4py_5SLEPc_BV, 1, "U", 0))) __PYX_ERR(14, 405, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_V), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "V", 0))) __PYX_ERR(15, 404, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_U), __pyx_ptype_8slepc4py_5SLEPc_BV, 1, "U", 0))) __PYX_ERR(15, 404, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3SVD_40setBV(((struct PySlepcSVDObject *)__pyx_v_self), __pyx_v_V, __pyx_v_U);
 
   /* function exit code */
@@ -34754,55 +36652,46 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_40setBV(struct PySlepcSVDObject
   BV __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
-  int __pyx_t_4;
   __Pyx_RefNannySetupContext("setBV", 0);
 
-  /* "SLEPc/SVD.pyx":416
+  /* "SLEPc/SVD.pyx":415
  *             The basis vectors context for left singular vectors.
  *         """
  *         cdef SlepcBV VBV = V.bv             # <<<<<<<<<<<<<<
- *         cdef SlepcBV UBV = NULL
- *         if U is not None: UBV = U.bv
+ *         cdef SlepcBV UBV = U.bv if U is not None else <SlepcBV>NULL
+ *         CHKERR( SVDSetBV(self.svd, VBV, UBV) )
  */
   __pyx_t_1 = __pyx_v_V->bv;
   __pyx_v_VBV = __pyx_t_1;
 
-  /* "SLEPc/SVD.pyx":417
+  /* "SLEPc/SVD.pyx":416
  *         """
  *         cdef SlepcBV VBV = V.bv
- *         cdef SlepcBV UBV = NULL             # <<<<<<<<<<<<<<
- *         if U is not None: UBV = U.bv
- *         CHKERR( SVDSetBV(self.svd, VBV, UBV) )
- */
-  __pyx_v_UBV = NULL;
-
-  /* "SLEPc/SVD.pyx":418
- *         cdef SlepcBV VBV = V.bv
- *         cdef SlepcBV UBV = NULL
- *         if U is not None: UBV = U.bv             # <<<<<<<<<<<<<<
+ *         cdef SlepcBV UBV = U.bv if U is not None else <SlepcBV>NULL             # <<<<<<<<<<<<<<
  *         CHKERR( SVDSetBV(self.svd, VBV, UBV) )
  * 
  */
   __pyx_t_2 = (((PyObject *)__pyx_v_U) != Py_None);
-  __pyx_t_3 = (__pyx_t_2 != 0);
-  if (__pyx_t_3) {
+  if ((__pyx_t_2 != 0)) {
     __pyx_t_1 = __pyx_v_U->bv;
-    __pyx_v_UBV = __pyx_t_1;
+  } else {
+    __pyx_t_1 = ((BV)NULL);
   }
+  __pyx_v_UBV = __pyx_t_1;
 
-  /* "SLEPc/SVD.pyx":419
- *         cdef SlepcBV UBV = NULL
- *         if U is not None: UBV = U.bv
+  /* "SLEPc/SVD.pyx":417
+ *         cdef SlepcBV VBV = V.bv
+ *         cdef SlepcBV UBV = U.bv if U is not None else <SlepcBV>NULL
  *         CHKERR( SVDSetBV(self.svd, VBV, UBV) )             # <<<<<<<<<<<<<<
  * 
  *     def getOperator(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetBV(__pyx_v_self->svd, __pyx_v_VBV, __pyx_v_UBV)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(14, 419, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetBV(__pyx_v_self->svd, __pyx_v_VBV, __pyx_v_UBV)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(15, 417, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":405
+  /* "SLEPc/SVD.pyx":404
  *         return (V,U)
  * 
- *     def setBV(self, BV V not None,BV U=None):             # <<<<<<<<<<<<<<
+ *     def setBV(self, BV V,BV U=None):             # <<<<<<<<<<<<<<
  *         """
  *         Associates basis vectors objects to the SVD solver.
  */
@@ -34819,7 +36708,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_40setBV(struct PySlepcSVDObject
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":421
+/* "SLEPc/SVD.pyx":419
  *         CHKERR( SVDSetBV(self.svd, VBV, UBV) )
  * 
  *     def getOperator(self):             # <<<<<<<<<<<<<<
@@ -34852,28 +36741,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_42getOperator(struct PySlepcSVDO
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getOperator", 0);
 
-  /* "SLEPc/SVD.pyx":430
+  /* "SLEPc/SVD.pyx":428
  *            The matrix associated with the singular value problem.
  *         """
  *         cdef Mat A = Mat()             # <<<<<<<<<<<<<<
  *         CHKERR( SVDGetOperator(self.svd, &A.mat) )
  *         PetscINCREF(A.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 430, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 428, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_A = ((struct PyPetscMatObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/SVD.pyx":431
+  /* "SLEPc/SVD.pyx":429
  *         """
  *         cdef Mat A = Mat()
  *         CHKERR( SVDGetOperator(self.svd, &A.mat) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(A.obj)
  *         return A
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetOperator(__pyx_v_self->svd, (&__pyx_v_A->mat))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(14, 431, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetOperator(__pyx_v_self->svd, (&__pyx_v_A->mat))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 429, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":432
+  /* "SLEPc/SVD.pyx":430
  *         cdef Mat A = Mat()
  *         CHKERR( SVDGetOperator(self.svd, &A.mat) )
  *         PetscINCREF(A.obj)             # <<<<<<<<<<<<<<
@@ -34882,19 +36771,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_42getOperator(struct PySlepcSVDO
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_A->__pyx_base.obj);
 
-  /* "SLEPc/SVD.pyx":433
+  /* "SLEPc/SVD.pyx":431
  *         CHKERR( SVDGetOperator(self.svd, &A.mat) )
  *         PetscINCREF(A.obj)
  *         return A             # <<<<<<<<<<<<<<
  * 
- *     def setOperator(self, Mat A not None):
+ *     def setOperator(self, Mat A):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_A));
   __pyx_r = ((PyObject *)__pyx_v_A);
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":421
+  /* "SLEPc/SVD.pyx":419
  *         CHKERR( SVDSetBV(self.svd, VBV, UBV) )
  * 
  *     def getOperator(self):             # <<<<<<<<<<<<<<
@@ -34914,10 +36803,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_42getOperator(struct PySlepcSVDO
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":435
+/* "SLEPc/SVD.pyx":433
  *         return A
  * 
- *     def setOperator(self, Mat A not None):             # <<<<<<<<<<<<<<
+ *     def setOperator(self, Mat A):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the matrix associated with the singular value problem.
  */
@@ -34938,6 +36827,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_45setOperator(PyObject *__pyx_v_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -34948,7 +36838,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_45setOperator(PyObject *__pyx_v_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOperator") < 0)) __PYX_ERR(14, 435, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOperator") < 0)) __PYX_ERR(15, 433, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -34959,13 +36849,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_45setOperator(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOperator", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 435, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOperator", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 433, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setOperator", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_A), __pyx_ptype_8petsc4py_5PETSc_Mat, 0, "A", 0))) __PYX_ERR(14, 435, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_A), __pyx_ptype_8petsc4py_5PETSc_Mat, 0, "A", 0))) __PYX_ERR(15, 433, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3SVD_44setOperator(((struct PySlepcSVDObject *)__pyx_v_self), __pyx_v_A);
 
   /* function exit code */
@@ -34983,19 +36873,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_44setOperator(struct PySlepcSVDO
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setOperator", 0);
 
-  /* "SLEPc/SVD.pyx":444
+  /* "SLEPc/SVD.pyx":442
  *            The matrix associated with the singular value problem.
  *         """
  *         CHKERR( SVDSetOperator(self.svd, A.mat) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetOperator(__pyx_v_self->svd, __pyx_v_A->mat)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 444, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetOperator(__pyx_v_self->svd, __pyx_v_A->mat)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 442, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":435
+  /* "SLEPc/SVD.pyx":433
  *         return A
  * 
- *     def setOperator(self, Mat A not None):             # <<<<<<<<<<<<<<
+ *     def setOperator(self, Mat A):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the matrix associated with the singular value problem.
  */
@@ -35012,69 +36902,92 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_44setOperator(struct PySlepcSVDO
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":448
+/* "SLEPc/SVD.pyx":446
  *     #
  * 
- *     def setInitialSpace(self, space):             # <<<<<<<<<<<<<<
+ *     def setInitialSpaces(self, spaceright=None, spaceleft=None):             # <<<<<<<<<<<<<<
  *         """
- *         Sets the initial space from which the SVD solver starts to
+ *         Sets the initial spaces from which the SVD solver starts to
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_47setInitialSpace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3SVD_46setInitialSpace[] = "SVD.setInitialSpace(self, space)\n\n        Sets the initial space from which the SVD solver starts to\n        iterate.\n\n        Parameters\n        ----------\n        space: an sequence of Vec\n           The initial space.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_47setInitialSpace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_space = 0;
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_47setInitialSpaces(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3SVD_46setInitialSpaces[] = "SVD.setInitialSpaces(self, spaceright=None, spaceleft=None)\n\n        Sets the initial spaces from which the SVD solver starts to\n        iterate.\n\n        Parameters\n        ----------\n        spaceright: sequence of Vec\n           The right initial space.\n        spaceleft: sequence of Vec\n           The left initial space.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_47setInitialSpaces(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_spaceright = 0;
+  PyObject *__pyx_v_spaceleft = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("setInitialSpace (wrapper)", 0);
+  __Pyx_RefNannySetupContext("setInitialSpaces (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_space,0};
-    PyObject* values[1] = {0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_spaceright,&__pyx_n_s_spaceleft,0};
+    PyObject* values[2] = {0,0};
+    values[0] = ((PyObject *)Py_None);
+    values[1] = ((PyObject *)Py_None);
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_space)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spaceright);
+          if (value) { values[0] = value; kw_args--; }
+        }
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spaceleft);
+          if (value) { values[1] = value; kw_args--; }
+        }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setInitialSpace") < 0)) __PYX_ERR(14, 448, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setInitialSpaces") < 0)) __PYX_ERR(15, 446, __pyx_L3_error)
       }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
-      goto __pyx_L5_argtuple_error;
     } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
     }
-    __pyx_v_space = values[0];
+    __pyx_v_spaceright = values[0];
+    __pyx_v_spaceleft = values[1];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setInitialSpace", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 448, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setInitialSpaces", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 446, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setInitialSpace", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setInitialSpaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3SVD_46setInitialSpace(((struct PySlepcSVDObject *)__pyx_v_self), __pyx_v_space);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3SVD_46setInitialSpaces(((struct PySlepcSVDObject *)__pyx_v_self), __pyx_v_spaceright, __pyx_v_spaceleft);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_46setInitialSpace(struct PySlepcSVDObject *__pyx_v_self, PyObject *__pyx_v_space) {
-  Vec *__pyx_v_vs;
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_46setInitialSpaces(struct PySlepcSVDObject *__pyx_v_self, PyObject *__pyx_v_spaceright, PyObject *__pyx_v_spaceleft) {
   Py_ssize_t __pyx_v_i;
-  Py_ssize_t __pyx_v_ns;
-  CYTHON_UNUSED PyObject *__pyx_v_tmp = 0;
+  Vec *__pyx_v_isr;
+  Py_ssize_t __pyx_v_nr;
+  CYTHON_UNUSED PyObject *__pyx_v_tmp1 = 0;
+  Vec *__pyx_v_isl;
+  Py_ssize_t __pyx_v_nl;
+  CYTHON_UNUSED PyObject *__pyx_v_tmp2 = 0;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
@@ -35084,93 +36997,206 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_46setInitialSpace(struct PySlepc
   Py_ssize_t __pyx_t_5;
   Vec __pyx_t_6;
   int __pyx_t_7;
-  __Pyx_RefNannySetupContext("setInitialSpace", 0);
-  __Pyx_INCREF(__pyx_v_space);
+  __Pyx_RefNannySetupContext("setInitialSpaces", 0);
+  __Pyx_INCREF(__pyx_v_spaceright);
+  __Pyx_INCREF(__pyx_v_spaceleft);
 
   /* "SLEPc/SVD.pyx":458
- *            The initial space.
+ *            The left initial space.
  *         """
- *         if isinstance(space, Vec): space = [space]             # <<<<<<<<<<<<<<
- *         cdef PetscVec *vs = NULL
- *         cdef Py_ssize_t i = 0, ns = len(space)
+ *         cdef Py_ssize_t i = 0             # <<<<<<<<<<<<<<
+ *         if spaceright is None: spaceright = []
+ *         elif isinstance(spaceright, Vec): spaceright = [spaceright]
  */
-  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_space, __pyx_ptype_8petsc4py_5PETSc_Vec); 
+  __pyx_v_i = 0;
+
+  /* "SLEPc/SVD.pyx":459
+ *         """
+ *         cdef Py_ssize_t i = 0
+ *         if spaceright is None: spaceright = []             # <<<<<<<<<<<<<<
+ *         elif isinstance(spaceright, Vec): spaceright = [spaceright]
+ *         cdef PetscVec *isr = NULL
+ */
+  __pyx_t_1 = (__pyx_v_spaceright == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 458, __pyx_L1_error)
+    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 459, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(__pyx_v_space);
-    __Pyx_GIVEREF(__pyx_v_space);
-    PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_space);
-    __Pyx_DECREF_SET(__pyx_v_space, __pyx_t_3);
+    __Pyx_DECREF_SET(__pyx_v_spaceright, __pyx_t_3);
     __pyx_t_3 = 0;
+    goto __pyx_L3;
   }
 
-  /* "SLEPc/SVD.pyx":459
- *         """
- *         if isinstance(space, Vec): space = [space]
- *         cdef PetscVec *vs = NULL             # <<<<<<<<<<<<<<
- *         cdef Py_ssize_t i = 0, ns = len(space)
- *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)
- */
-  __pyx_v_vs = NULL;
-
   /* "SLEPc/SVD.pyx":460
- *         if isinstance(space, Vec): space = [space]
- *         cdef PetscVec *vs = NULL
- *         cdef Py_ssize_t i = 0, ns = len(space)             # <<<<<<<<<<<<<<
- *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)
- *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
+ *         cdef Py_ssize_t i = 0
+ *         if spaceright is None: spaceright = []
+ *         elif isinstance(spaceright, Vec): spaceright = [spaceright]             # <<<<<<<<<<<<<<
+ *         cdef PetscVec *isr = NULL
+ *         cdef Py_ssize_t nr = len(spaceright)
  */
-  __pyx_v_i = 0;
-  __pyx_t_4 = PyObject_Length(__pyx_v_space); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(14, 460, __pyx_L1_error)
-  __pyx_v_ns = __pyx_t_4;
+  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_spaceright, __pyx_ptype_8petsc4py_5PETSc_Vec); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (__pyx_t_1) {
+    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 460, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_spaceright);
+    __Pyx_GIVEREF(__pyx_v_spaceright);
+    PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_spaceright);
+    __Pyx_DECREF_SET(__pyx_v_spaceright, __pyx_t_3);
+    __pyx_t_3 = 0;
+  }
+  __pyx_L3:;
 
   /* "SLEPc/SVD.pyx":461
- *         cdef PetscVec *vs = NULL
- *         cdef Py_ssize_t i = 0, ns = len(space)
- *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)             # <<<<<<<<<<<<<<
- *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
- *         CHKERR( SVDSetInitialSpace(self.svd, <PetscInt>ns, vs) )
+ *         if spaceright is None: spaceright = []
+ *         elif isinstance(spaceright, Vec): spaceright = [spaceright]
+ *         cdef PetscVec *isr = NULL             # <<<<<<<<<<<<<<
+ *         cdef Py_ssize_t nr = len(spaceright)
+ *         cdef tmp1 = allocate(<size_t>nr*sizeof(Vec),<void**>&isr)
  */
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_ns) * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_vs))); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 461, __pyx_L1_error)
+  __pyx_v_isr = NULL;
+
+  /* "SLEPc/SVD.pyx":462
+ *         elif isinstance(spaceright, Vec): spaceright = [spaceright]
+ *         cdef PetscVec *isr = NULL
+ *         cdef Py_ssize_t nr = len(spaceright)             # <<<<<<<<<<<<<<
+ *         cdef tmp1 = allocate(<size_t>nr*sizeof(Vec),<void**>&isr)
+ *         for i in range(nr): isr[i] = (<Vec?>spaceright[i]).vec
+ */
+  __pyx_t_4 = PyObject_Length(__pyx_v_spaceright); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(15, 462, __pyx_L1_error)
+  __pyx_v_nr = __pyx_t_4;
+
+  /* "SLEPc/SVD.pyx":463
+ *         cdef PetscVec *isr = NULL
+ *         cdef Py_ssize_t nr = len(spaceright)
+ *         cdef tmp1 = allocate(<size_t>nr*sizeof(Vec),<void**>&isr)             # <<<<<<<<<<<<<<
+ *         for i in range(nr): isr[i] = (<Vec?>spaceright[i]).vec
+ *         if spaceleft is None: spaceright = []
+ */
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_nr) * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_isr))); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 463, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_v_tmp = __pyx_t_3;
+  __pyx_v_tmp1 = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "SLEPc/SVD.pyx":462
- *         cdef Py_ssize_t i = 0, ns = len(space)
- *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)
- *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec             # <<<<<<<<<<<<<<
- *         CHKERR( SVDSetInitialSpace(self.svd, <PetscInt>ns, vs) )
+  /* "SLEPc/SVD.pyx":464
+ *         cdef Py_ssize_t nr = len(spaceright)
+ *         cdef tmp1 = allocate(<size_t>nr*sizeof(Vec),<void**>&isr)
+ *         for i in range(nr): isr[i] = (<Vec?>spaceright[i]).vec             # <<<<<<<<<<<<<<
+ *         if spaceleft is None: spaceright = []
+ *         elif isinstance(spaceleft, Vec): spaceleft = [spaceleft]
+ */
+  __pyx_t_4 = __pyx_v_nr;
+  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
+    __pyx_v_i = __pyx_t_5;
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_spaceright, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 464, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Vec)))) __PYX_ERR(15, 464, __pyx_L1_error)
+    __pyx_t_6 = ((struct PyPetscVecObject *)__pyx_t_3)->vec;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    (__pyx_v_isr[__pyx_v_i]) = __pyx_t_6;
+  }
+
+  /* "SLEPc/SVD.pyx":465
+ *         cdef tmp1 = allocate(<size_t>nr*sizeof(Vec),<void**>&isr)
+ *         for i in range(nr): isr[i] = (<Vec?>spaceright[i]).vec
+ *         if spaceleft is None: spaceright = []             # <<<<<<<<<<<<<<
+ *         elif isinstance(spaceleft, Vec): spaceleft = [spaceleft]
+ *         cdef PetscVec *isl = NULL
+ */
+  __pyx_t_1 = (__pyx_v_spaceleft == Py_None);
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 465, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF_SET(__pyx_v_spaceright, __pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L6;
+  }
+
+  /* "SLEPc/SVD.pyx":466
+ *         for i in range(nr): isr[i] = (<Vec?>spaceright[i]).vec
+ *         if spaceleft is None: spaceright = []
+ *         elif isinstance(spaceleft, Vec): spaceleft = [spaceleft]             # <<<<<<<<<<<<<<
+ *         cdef PetscVec *isl = NULL
+ *         cdef Py_ssize_t nl = len(spaceleft)
+ */
+  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_spaceleft, __pyx_ptype_8petsc4py_5PETSc_Vec); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (__pyx_t_1) {
+    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 466, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_spaceleft);
+    __Pyx_GIVEREF(__pyx_v_spaceleft);
+    PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_spaceleft);
+    __Pyx_DECREF_SET(__pyx_v_spaceleft, __pyx_t_3);
+    __pyx_t_3 = 0;
+  }
+  __pyx_L6:;
+
+  /* "SLEPc/SVD.pyx":467
+ *         if spaceleft is None: spaceright = []
+ *         elif isinstance(spaceleft, Vec): spaceleft = [spaceleft]
+ *         cdef PetscVec *isl = NULL             # <<<<<<<<<<<<<<
+ *         cdef Py_ssize_t nl = len(spaceleft)
+ *         cdef tmp2 = allocate(<size_t>nl*sizeof(Vec),<void**>&isl)
+ */
+  __pyx_v_isl = NULL;
+
+  /* "SLEPc/SVD.pyx":468
+ *         elif isinstance(spaceleft, Vec): spaceleft = [spaceleft]
+ *         cdef PetscVec *isl = NULL
+ *         cdef Py_ssize_t nl = len(spaceleft)             # <<<<<<<<<<<<<<
+ *         cdef tmp2 = allocate(<size_t>nl*sizeof(Vec),<void**>&isl)
+ *         for i in range(nl): isl[i] = (<Vec?>spaceleft[i]).vec
+ */
+  __pyx_t_4 = PyObject_Length(__pyx_v_spaceleft); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(15, 468, __pyx_L1_error)
+  __pyx_v_nl = __pyx_t_4;
+
+  /* "SLEPc/SVD.pyx":469
+ *         cdef PetscVec *isl = NULL
+ *         cdef Py_ssize_t nl = len(spaceleft)
+ *         cdef tmp2 = allocate(<size_t>nl*sizeof(Vec),<void**>&isl)             # <<<<<<<<<<<<<<
+ *         for i in range(nl): isl[i] = (<Vec?>spaceleft[i]).vec
+ *         CHKERR( SVDSetInitialSpaces(self.svd, <PetscInt>nr, isr, <PetscInt>nl, isl) )
+ */
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_nl) * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_isl))); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 469, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_v_tmp2 = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "SLEPc/SVD.pyx":470
+ *         cdef Py_ssize_t nl = len(spaceleft)
+ *         cdef tmp2 = allocate(<size_t>nl*sizeof(Vec),<void**>&isl)
+ *         for i in range(nl): isl[i] = (<Vec?>spaceleft[i]).vec             # <<<<<<<<<<<<<<
+ *         CHKERR( SVDSetInitialSpaces(self.svd, <PetscInt>nr, isr, <PetscInt>nl, isl) )
  * 
  */
-  __pyx_t_4 = __pyx_v_ns;
+  __pyx_t_4 = __pyx_v_nl;
   for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
     __pyx_v_i = __pyx_t_5;
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_space, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 462, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_spaceleft, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 470, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Vec)))) __PYX_ERR(14, 462, __pyx_L1_error)
+    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Vec)))) __PYX_ERR(15, 470, __pyx_L1_error)
     __pyx_t_6 = ((struct PyPetscVecObject *)__pyx_t_3)->vec;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    (__pyx_v_vs[__pyx_v_i]) = __pyx_t_6;
+    (__pyx_v_isl[__pyx_v_i]) = __pyx_t_6;
   }
 
-  /* "SLEPc/SVD.pyx":463
- *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)
- *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
- *         CHKERR( SVDSetInitialSpace(self.svd, <PetscInt>ns, vs) )             # <<<<<<<<<<<<<<
+  /* "SLEPc/SVD.pyx":471
+ *         cdef tmp2 = allocate(<size_t>nl*sizeof(Vec),<void**>&isl)
+ *         for i in range(nl): isl[i] = (<Vec?>spaceleft[i]).vec
+ *         CHKERR( SVDSetInitialSpaces(self.svd, <PetscInt>nr, isr, <PetscInt>nl, isl) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetInitialSpace(__pyx_v_self->svd, ((PetscInt)__pyx_v_ns), __pyx_v_vs)); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(14, 463, __pyx_L1_error)
+  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetInitialSpaces(__pyx_v_self->svd, ((PetscInt)__pyx_v_nr), __pyx_v_isr, ((PetscInt)__pyx_v_nl), __pyx_v_isl)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(15, 471, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":448
+  /* "SLEPc/SVD.pyx":446
  *     #
  * 
- *     def setInitialSpace(self, space):             # <<<<<<<<<<<<<<
+ *     def setInitialSpaces(self, spaceright=None, spaceleft=None):             # <<<<<<<<<<<<<<
  *         """
- *         Sets the initial space from which the SVD solver starts to
+ *         Sets the initial spaces from which the SVD solver starts to
  */
 
   /* function exit code */
@@ -35178,17 +37204,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_46setInitialSpace(struct PySlepc
   goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setInitialSpace", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setInitialSpaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_tmp);
-  __Pyx_XDECREF(__pyx_v_space);
+  __Pyx_XDECREF(__pyx_v_tmp1);
+  __Pyx_XDECREF(__pyx_v_tmp2);
+  __Pyx_XDECREF(__pyx_v_spaceright);
+  __Pyx_XDECREF(__pyx_v_spaceleft);
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":467
+/* "SLEPc/SVD.pyx":475
  *     #
  * 
  *     def cancelMonitor(self):             # <<<<<<<<<<<<<<
@@ -35219,16 +37247,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_48cancelMonitor(struct PySlepcSV
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("cancelMonitor", 0);
 
-  /* "SLEPc/SVD.pyx":471
+  /* "SLEPc/SVD.pyx":479
  *         Clears all monitors for an SVD object.
  *         """
  *         CHKERR( SVDMonitorCancel(self.svd) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDMonitorCancel(__pyx_v_self->svd)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 471, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDMonitorCancel(__pyx_v_self->svd)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 479, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":467
+  /* "SLEPc/SVD.pyx":475
  *     #
  * 
  *     def cancelMonitor(self):             # <<<<<<<<<<<<<<
@@ -35248,7 +37276,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_48cancelMonitor(struct PySlepcSV
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":475
+/* "SLEPc/SVD.pyx":483
  *     #
  * 
  *     def setUp(self):             # <<<<<<<<<<<<<<
@@ -35279,16 +37307,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_50setUp(struct PySlepcSVDObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setUp", 0);
 
-  /* "SLEPc/SVD.pyx":486
+  /* "SLEPc/SVD.pyx":494
  *         measure the set-up time separately from the solve time.
  *         """
  *         CHKERR( SVDSetUp(self.svd) )             # <<<<<<<<<<<<<<
  * 
  *     def solve(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetUp(__pyx_v_self->svd)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 486, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSetUp(__pyx_v_self->svd)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 494, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":475
+  /* "SLEPc/SVD.pyx":483
  *     #
  * 
  *     def setUp(self):             # <<<<<<<<<<<<<<
@@ -35308,7 +37336,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_50setUp(struct PySlepcSVDObject
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":488
+/* "SLEPc/SVD.pyx":496
  *         CHKERR( SVDSetUp(self.svd) )
  * 
  *     def solve(self):             # <<<<<<<<<<<<<<
@@ -35339,16 +37367,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_52solve(struct PySlepcSVDObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("solve", 0);
 
-  /* "SLEPc/SVD.pyx":492
+  /* "SLEPc/SVD.pyx":500
  *         Solves the singular value problem.
  *         """
  *         CHKERR( SVDSolve(self.svd) )             # <<<<<<<<<<<<<<
  * 
  *     def getIterationNumber(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSolve(__pyx_v_self->svd)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 492, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDSolve(__pyx_v_self->svd)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 500, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":488
+  /* "SLEPc/SVD.pyx":496
  *         CHKERR( SVDSetUp(self.svd) )
  * 
  *     def solve(self):             # <<<<<<<<<<<<<<
@@ -35368,7 +37396,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_52solve(struct PySlepcSVDObject
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":494
+/* "SLEPc/SVD.pyx":502
  *         CHKERR( SVDSolve(self.svd) )
  * 
  *     def getIterationNumber(self):             # <<<<<<<<<<<<<<
@@ -35401,7 +37429,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_54getIterationNumber(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getIterationNumber", 0);
 
-  /* "SLEPc/SVD.pyx":505
+  /* "SLEPc/SVD.pyx":513
  *              Iteration number.
  *         """
  *         cdef PetscInt ival = 0             # <<<<<<<<<<<<<<
@@ -35410,16 +37438,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_54getIterationNumber(struct PySl
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/SVD.pyx":506
+  /* "SLEPc/SVD.pyx":514
  *         """
  *         cdef PetscInt ival = 0
  *         CHKERR( SVDGetIterationNumber(self.svd, &ival) )             # <<<<<<<<<<<<<<
  *         return toInt(ival)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetIterationNumber(__pyx_v_self->svd, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 506, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetIterationNumber(__pyx_v_self->svd, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 514, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":507
+  /* "SLEPc/SVD.pyx":515
  *         cdef PetscInt ival = 0
  *         CHKERR( SVDGetIterationNumber(self.svd, &ival) )
  *         return toInt(ival)             # <<<<<<<<<<<<<<
@@ -35427,13 +37455,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_54getIterationNumber(struct PySl
  *     def getConvergedReason(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 507, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 515, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":494
+  /* "SLEPc/SVD.pyx":502
  *         CHKERR( SVDSolve(self.svd) )
  * 
  *     def getIterationNumber(self):             # <<<<<<<<<<<<<<
@@ -35452,7 +37480,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_54getIterationNumber(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":509
+/* "SLEPc/SVD.pyx":517
  *         return toInt(ival)
  * 
  *     def getConvergedReason(self):             # <<<<<<<<<<<<<<
@@ -35485,7 +37513,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_56getConvergedReason(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getConvergedReason", 0);
 
-  /* "SLEPc/SVD.pyx":519
+  /* "SLEPc/SVD.pyx":527
  *                 converged.
  *         """
  *         cdef SlepcSVDConvergedReason val = SVD_CONVERGED_ITERATING             # <<<<<<<<<<<<<<
@@ -35494,16 +37522,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_56getConvergedReason(struct PySl
  */
   __pyx_v_val = SVD_CONVERGED_ITERATING;
 
-  /* "SLEPc/SVD.pyx":520
+  /* "SLEPc/SVD.pyx":528
  *         """
  *         cdef SlepcSVDConvergedReason val = SVD_CONVERGED_ITERATING
  *         CHKERR( SVDGetConvergedReason(self.svd, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetConvergedReason(__pyx_v_self->svd, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 520, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetConvergedReason(__pyx_v_self->svd, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 528, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":521
+  /* "SLEPc/SVD.pyx":529
  *         cdef SlepcSVDConvergedReason val = SVD_CONVERGED_ITERATING
  *         CHKERR( SVDGetConvergedReason(self.svd, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -35511,13 +37539,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_56getConvergedReason(struct PySl
  *     def getConverged(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_SVDConvergedReason(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 521, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_SVDConvergedReason(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 529, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":509
+  /* "SLEPc/SVD.pyx":517
  *         return toInt(ival)
  * 
  *     def getConvergedReason(self):             # <<<<<<<<<<<<<<
@@ -35536,7 +37564,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_56getConvergedReason(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":523
+/* "SLEPc/SVD.pyx":531
  *         return val
  * 
  *     def getConverged(self):             # <<<<<<<<<<<<<<
@@ -35569,7 +37597,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_58getConverged(struct PySlepcSVD
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getConverged", 0);
 
-  /* "SLEPc/SVD.pyx":536
+  /* "SLEPc/SVD.pyx":544
  *         This function should be called after `solve()` has finished.
  *         """
  *         cdef PetscInt ival = 0             # <<<<<<<<<<<<<<
@@ -35578,16 +37606,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_58getConverged(struct PySlepcSVD
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/SVD.pyx":537
+  /* "SLEPc/SVD.pyx":545
  *         """
  *         cdef PetscInt ival = 0
  *         CHKERR( SVDGetConverged(self.svd, &ival) )             # <<<<<<<<<<<<<<
  *         return toInt(ival)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetConverged(__pyx_v_self->svd, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 537, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetConverged(__pyx_v_self->svd, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 545, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":538
+  /* "SLEPc/SVD.pyx":546
  *         cdef PetscInt ival = 0
  *         CHKERR( SVDGetConverged(self.svd, &ival) )
  *         return toInt(ival)             # <<<<<<<<<<<<<<
@@ -35595,13 +37623,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_58getConverged(struct PySlepcSVD
  *     def getValue(self, int i):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 538, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 546, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":523
+  /* "SLEPc/SVD.pyx":531
  *         return val
  * 
  *     def getConverged(self):             # <<<<<<<<<<<<<<
@@ -35620,7 +37648,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_58getConverged(struct PySlepcSVD
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":540
+/* "SLEPc/SVD.pyx":548
  *         return toInt(ival)
  * 
  *     def getValue(self, int i):             # <<<<<<<<<<<<<<
@@ -35644,6 +37672,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_61getValue(PyObject *__pyx_v_sel
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -35654,18 +37683,18 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_61getValue(PyObject *__pyx_v_sel
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getValue") < 0)) __PYX_ERR(14, 540, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getValue") < 0)) __PYX_ERR(15, 548, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
     } else {
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(14, 540, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(15, 548, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getValue", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 540, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getValue", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 548, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.getValue", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -35686,7 +37715,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_60getValue(struct PySlepcSVDObje
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getValue", 0);
 
-  /* "SLEPc/SVD.pyx":561
+  /* "SLEPc/SVD.pyx":569
  *         `setWhichSingularTriplets()`.
  *         """
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -35695,30 +37724,30 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_60getValue(struct PySlepcSVDObje
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/SVD.pyx":562
+  /* "SLEPc/SVD.pyx":570
  *         """
  *         cdef PetscReal rval = 0
  *         CHKERR( SVDGetSingularTriplet(self.svd, i, &rval, NULL, NULL) )             # <<<<<<<<<<<<<<
  *         return toReal(rval)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetSingularTriplet(__pyx_v_self->svd, __pyx_v_i, (&__pyx_v_rval), NULL, NULL)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 562, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetSingularTriplet(__pyx_v_self->svd, __pyx_v_i, (&__pyx_v_rval), NULL, NULL)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 570, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":563
+  /* "SLEPc/SVD.pyx":571
  *         cdef PetscReal rval = 0
  *         CHKERR( SVDGetSingularTriplet(self.svd, i, &rval, NULL, NULL) )
  *         return toReal(rval)             # <<<<<<<<<<<<<<
  * 
- *     def getVectors(self, int i, Vec U not None, Vec V not None):
+ *     def getVectors(self, int i, Vec U, Vec V):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 563, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 571, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":540
+  /* "SLEPc/SVD.pyx":548
  *         return toInt(ival)
  * 
  *     def getValue(self, int i):             # <<<<<<<<<<<<<<
@@ -35737,10 +37766,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_60getValue(struct PySlepcSVDObje
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":565
+/* "SLEPc/SVD.pyx":573
  *         return toReal(rval)
  * 
- *     def getVectors(self, int i, Vec U not None, Vec V not None):             # <<<<<<<<<<<<<<
+ *     def getVectors(self, int i, Vec U, Vec V):             # <<<<<<<<<<<<<<
  *         """
  *         Gets the i-th left and right singular vectors as computed by
  */
@@ -35763,8 +37792,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_63getVectors(PyObject *__pyx_v_s
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -35773,19 +37805,21 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_63getVectors(PyObject *__pyx_v_s
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("getVectors", 1, 3, 3, 1); __PYX_ERR(14, 565, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("getVectors", 1, 3, 3, 1); __PYX_ERR(15, 573, __pyx_L3_error)
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_V)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("getVectors", 1, 3, 3, 2); __PYX_ERR(14, 565, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("getVectors", 1, 3, 3, 2); __PYX_ERR(15, 573, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getVectors") < 0)) __PYX_ERR(14, 565, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getVectors") < 0)) __PYX_ERR(15, 573, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -35794,20 +37828,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_63getVectors(PyObject *__pyx_v_s
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(14, 565, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(15, 573, __pyx_L3_error)
     __pyx_v_U = ((struct PyPetscVecObject *)values[1]);
     __pyx_v_V = ((struct PyPetscVecObject *)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getVectors", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 565, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getVectors", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 573, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.getVectors", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_U), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "U", 0))) __PYX_ERR(14, 565, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_V), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "V", 0))) __PYX_ERR(14, 565, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_U), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "U", 0))) __PYX_ERR(15, 573, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_V), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "V", 0))) __PYX_ERR(15, 573, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3SVD_62getVectors(((struct PySlepcSVDObject *)__pyx_v_self), __pyx_v_i, __pyx_v_U, __pyx_v_V);
 
   /* function exit code */
@@ -35826,7 +37860,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_62getVectors(struct PySlepcSVDOb
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("getVectors", 0);
 
-  /* "SLEPc/SVD.pyx":586
+  /* "SLEPc/SVD.pyx":594
  *         `setWhichSingularTriplets()`.
  *         """
  *         cdef PetscReal dummy = 0             # <<<<<<<<<<<<<<
@@ -35835,19 +37869,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_62getVectors(struct PySlepcSVDOb
  */
   __pyx_v_dummy = 0.0;
 
-  /* "SLEPc/SVD.pyx":587
+  /* "SLEPc/SVD.pyx":595
  *         """
  *         cdef PetscReal dummy = 0
  *         CHKERR( SVDGetSingularTriplet(self.svd, i, &dummy, U.vec, V.vec) )             # <<<<<<<<<<<<<<
  * 
  *     def getSingularTriplet(self, int i, Vec U=None, Vec V=None):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetSingularTriplet(__pyx_v_self->svd, __pyx_v_i, (&__pyx_v_dummy), __pyx_v_U->vec, __pyx_v_V->vec)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 587, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetSingularTriplet(__pyx_v_self->svd, __pyx_v_i, (&__pyx_v_dummy), __pyx_v_U->vec, __pyx_v_V->vec)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 595, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":565
+  /* "SLEPc/SVD.pyx":573
  *         return toReal(rval)
  * 
- *     def getVectors(self, int i, Vec U not None, Vec V not None):             # <<<<<<<<<<<<<<
+ *     def getVectors(self, int i, Vec U, Vec V):             # <<<<<<<<<<<<<<
  *         """
  *         Gets the i-th left and right singular vectors as computed by
  */
@@ -35864,7 +37898,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_62getVectors(struct PySlepcSVDOb
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":589
+/* "SLEPc/SVD.pyx":597
  *         CHKERR( SVDGetSingularTriplet(self.svd, i, &dummy, U.vec, V.vec) )
  * 
  *     def getSingularTriplet(self, int i, Vec U=None, Vec V=None):             # <<<<<<<<<<<<<<
@@ -35892,8 +37926,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_65getSingularTriplet(PyObject *_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -35902,11 +37939,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_65getSingularTriplet(PyObject *_
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_U);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_V);
@@ -35914,31 +37953,33 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_65getSingularTriplet(PyObject *_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getSingularTriplet") < 0)) __PYX_ERR(14, 589, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getSingularTriplet") < 0)) __PYX_ERR(15, 597, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(14, 589, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(15, 597, __pyx_L3_error)
     __pyx_v_U = ((struct PyPetscVecObject *)values[1]);
     __pyx_v_V = ((struct PyPetscVecObject *)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getSingularTriplet", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 589, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getSingularTriplet", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 597, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.getSingularTriplet", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_U), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "U", 0))) __PYX_ERR(14, 589, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_V), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "V", 0))) __PYX_ERR(14, 589, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_U), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "U", 0))) __PYX_ERR(15, 597, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_V), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "V", 0))) __PYX_ERR(15, 597, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3SVD_64getSingularTriplet(((struct PySlepcSVDObject *)__pyx_v_self), __pyx_v_i, __pyx_v_U, __pyx_v_V);
 
   /* function exit code */
@@ -35956,92 +37997,75 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_64getSingularTriplet(struct PySl
   Vec __pyx_v_Vvec;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
+  Vec __pyx_t_1;
   int __pyx_t_2;
-  Vec __pyx_t_3;
-  int __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getSingularTriplet", 0);
 
-  /* "SLEPc/SVD.pyx":616
+  /* "SLEPc/SVD.pyx":624
  *         `setWhichSingularTriplets()`.
  *         """
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
- *         cdef PetscVec Uvec = NULL
- *         cdef PetscVec Vvec = NULL
+ *         cdef PetscVec Uvec = U.vec if U is not None else <PetscVec>NULL
+ *         cdef PetscVec Vvec = V.vec if V is not None else <PetscVec>NULL
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/SVD.pyx":617
+  /* "SLEPc/SVD.pyx":625
  *         """
  *         cdef PetscReal rval = 0
- *         cdef PetscVec Uvec = NULL             # <<<<<<<<<<<<<<
- *         cdef PetscVec Vvec = NULL
- *         if U is not None: Uvec = U.vec
- */
-  __pyx_v_Uvec = NULL;
-
-  /* "SLEPc/SVD.pyx":618
- *         cdef PetscReal rval = 0
- *         cdef PetscVec Uvec = NULL
- *         cdef PetscVec Vvec = NULL             # <<<<<<<<<<<<<<
- *         if U is not None: Uvec = U.vec
- *         if V is not None: Vvec = V.vec
- */
-  __pyx_v_Vvec = NULL;
-
-  /* "SLEPc/SVD.pyx":619
- *         cdef PetscVec Uvec = NULL
- *         cdef PetscVec Vvec = NULL
- *         if U is not None: Uvec = U.vec             # <<<<<<<<<<<<<<
- *         if V is not None: Vvec = V.vec
+ *         cdef PetscVec Uvec = U.vec if U is not None else <PetscVec>NULL             # <<<<<<<<<<<<<<
+ *         cdef PetscVec Vvec = V.vec if V is not None else <PetscVec>NULL
  *         CHKERR( SVDGetSingularTriplet(self.svd, i, &rval, Uvec, Vvec) )
  */
-  __pyx_t_1 = (((PyObject *)__pyx_v_U) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_U->vec;
-    __pyx_v_Uvec = __pyx_t_3;
+  __pyx_t_2 = (((PyObject *)__pyx_v_U) != Py_None);
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_U->vec;
+  } else {
+    __pyx_t_1 = ((Vec)NULL);
   }
+  __pyx_v_Uvec = __pyx_t_1;
 
-  /* "SLEPc/SVD.pyx":620
- *         cdef PetscVec Vvec = NULL
- *         if U is not None: Uvec = U.vec
- *         if V is not None: Vvec = V.vec             # <<<<<<<<<<<<<<
+  /* "SLEPc/SVD.pyx":626
+ *         cdef PetscReal rval = 0
+ *         cdef PetscVec Uvec = U.vec if U is not None else <PetscVec>NULL
+ *         cdef PetscVec Vvec = V.vec if V is not None else <PetscVec>NULL             # <<<<<<<<<<<<<<
  *         CHKERR( SVDGetSingularTriplet(self.svd, i, &rval, Uvec, Vvec) )
  *         return toReal(rval)
  */
   __pyx_t_2 = (((PyObject *)__pyx_v_V) != Py_None);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_v_V->vec;
-    __pyx_v_Vvec = __pyx_t_3;
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_V->vec;
+  } else {
+    __pyx_t_1 = ((Vec)NULL);
   }
+  __pyx_v_Vvec = __pyx_t_1;
 
-  /* "SLEPc/SVD.pyx":621
- *         if U is not None: Uvec = U.vec
- *         if V is not None: Vvec = V.vec
+  /* "SLEPc/SVD.pyx":627
+ *         cdef PetscVec Uvec = U.vec if U is not None else <PetscVec>NULL
+ *         cdef PetscVec Vvec = V.vec if V is not None else <PetscVec>NULL
  *         CHKERR( SVDGetSingularTriplet(self.svd, i, &rval, Uvec, Vvec) )             # <<<<<<<<<<<<<<
  *         return toReal(rval)
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetSingularTriplet(__pyx_v_self->svd, __pyx_v_i, (&__pyx_v_rval), __pyx_v_Uvec, __pyx_v_Vvec)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(14, 621, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDGetSingularTriplet(__pyx_v_self->svd, __pyx_v_i, (&__pyx_v_rval), __pyx_v_Uvec, __pyx_v_Vvec)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(15, 627, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":622
- *         if V is not None: Vvec = V.vec
+  /* "SLEPc/SVD.pyx":628
+ *         cdef PetscVec Vvec = V.vec if V is not None else <PetscVec>NULL
  *         CHKERR( SVDGetSingularTriplet(self.svd, i, &rval, Uvec, Vvec) )
  *         return toReal(rval)             # <<<<<<<<<<<<<<
  * 
  *     #
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 622, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_r = __pyx_t_5;
-  __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 628, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":589
+  /* "SLEPc/SVD.pyx":597
  *         CHKERR( SVDGetSingularTriplet(self.svd, i, &dummy, U.vec, V.vec) )
  * 
  *     def getSingularTriplet(self, int i, Vec U=None, Vec V=None):             # <<<<<<<<<<<<<<
@@ -36051,7 +38075,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_64getSingularTriplet(struct PySl
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_4);
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.getSingularTriplet", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
@@ -36060,7 +38084,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_64getSingularTriplet(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":626
+/* "SLEPc/SVD.pyx":632
  *     #
  * 
  *     def computeError(self, int i, etype=None):             # <<<<<<<<<<<<<<
@@ -36086,7 +38110,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_67computeError(PyObject *__pyx_v
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -36095,6 +38121,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_67computeError(PyObject *__pyx_v
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_etype);
@@ -36102,22 +38129,23 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_67computeError(PyObject *__pyx_v
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "computeError") < 0)) __PYX_ERR(14, 626, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "computeError") < 0)) __PYX_ERR(15, 632, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(14, 626, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(15, 632, __pyx_L3_error)
     __pyx_v_etype = values[1];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("computeError", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 626, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("computeError", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 632, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.computeError", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -36142,7 +38170,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_66computeError(struct PySlepcSVD
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("computeError", 0);
 
-  /* "SLEPc/SVD.pyx":652
+  /* "SLEPc/SVD.pyx":658
  *         ``nconv-1`` (see `getConverged()`).
  *         """
  *         cdef SlepcSVDErrorType et = SVD_ERROR_RELATIVE             # <<<<<<<<<<<<<<
@@ -36151,7 +38179,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_66computeError(struct PySlepcSVD
  */
   __pyx_v_et = SVD_ERROR_RELATIVE;
 
-  /* "SLEPc/SVD.pyx":653
+  /* "SLEPc/SVD.pyx":659
  *         """
  *         cdef SlepcSVDErrorType et = SVD_ERROR_RELATIVE
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -36160,7 +38188,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_66computeError(struct PySlepcSVD
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/SVD.pyx":654
+  /* "SLEPc/SVD.pyx":660
  *         cdef SlepcSVDErrorType et = SVD_ERROR_RELATIVE
  *         cdef PetscReal rval = 0
  *         if etype is not None: et = etype             # <<<<<<<<<<<<<<
@@ -36170,20 +38198,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_66computeError(struct PySlepcSVD
   __pyx_t_1 = (__pyx_v_etype != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = ((SVDErrorType)__Pyx_PyInt_As_SVDErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 654, __pyx_L1_error)
+    __pyx_t_3 = ((SVDErrorType)__Pyx_PyInt_As_SVDErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 660, __pyx_L1_error)
     __pyx_v_et = __pyx_t_3;
   }
 
-  /* "SLEPc/SVD.pyx":655
+  /* "SLEPc/SVD.pyx":661
  *         cdef PetscReal rval = 0
  *         if etype is not None: et = etype
  *         CHKERR( SVDComputeError(self.svd, i, et, &rval) )             # <<<<<<<<<<<<<<
  *         return toReal(rval)
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDComputeError(__pyx_v_self->svd, __pyx_v_i, __pyx_v_et, (&__pyx_v_rval))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(14, 655, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDComputeError(__pyx_v_self->svd, __pyx_v_i, __pyx_v_et, (&__pyx_v_rval))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(15, 661, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":656
+  /* "SLEPc/SVD.pyx":662
  *         if etype is not None: et = etype
  *         CHKERR( SVDComputeError(self.svd, i, et, &rval) )
  *         return toReal(rval)             # <<<<<<<<<<<<<<
@@ -36191,13 +38219,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_66computeError(struct PySlepcSVD
  *     def errorView(self, etype=None, Viewer viewer=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 656, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 662, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_r = __pyx_t_5;
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":626
+  /* "SLEPc/SVD.pyx":632
  *     #
  * 
  *     def computeError(self, int i, etype=None):             # <<<<<<<<<<<<<<
@@ -36216,7 +38244,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_66computeError(struct PySlepcSVD
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":658
+/* "SLEPc/SVD.pyx":664
  *         return toReal(rval)
  * 
  *     def errorView(self, etype=None, Viewer viewer=None):             # <<<<<<<<<<<<<<
@@ -36243,7 +38271,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_69errorView(PyObject *__pyx_v_se
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -36254,6 +38284,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_69errorView(PyObject *__pyx_v_se
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_etype);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_viewer);
@@ -36261,12 +38292,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_69errorView(PyObject *__pyx_v_se
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "errorView") < 0)) __PYX_ERR(14, 658, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "errorView") < 0)) __PYX_ERR(15, 664, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -36276,13 +38309,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_69errorView(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("errorView", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 658, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("errorView", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 664, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.errorView", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(14, 658, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(15, 664, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3SVD_68errorView(((struct PySlepcSVDObject *)__pyx_v_self), __pyx_v_etype, __pyx_v_viewer);
 
   /* function exit code */
@@ -36302,66 +38335,51 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_68errorView(struct PySlepcSVDObj
   int __pyx_t_1;
   int __pyx_t_2;
   SVDErrorType __pyx_t_3;
-  PetscViewer __pyx_t_4;
-  int __pyx_t_5;
+  int __pyx_t_4;
   __Pyx_RefNannySetupContext("errorView", 0);
 
-  /* "SLEPc/SVD.pyx":679
+  /* "SLEPc/SVD.pyx":685
  * 
  *         """
  *         cdef SlepcSVDErrorType et = SVD_ERROR_RELATIVE             # <<<<<<<<<<<<<<
  *         if etype is not None: et = etype
- *         cdef PetscViewer vwr = NULL
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  */
   __pyx_v_et = SVD_ERROR_RELATIVE;
 
-  /* "SLEPc/SVD.pyx":680
+  /* "SLEPc/SVD.pyx":686
  *         """
  *         cdef SlepcSVDErrorType et = SVD_ERROR_RELATIVE
  *         if etype is not None: et = etype             # <<<<<<<<<<<<<<
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
+ *         CHKERR( SVDErrorView(self.svd, et, vwr) )
  */
   __pyx_t_1 = (__pyx_v_etype != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = ((SVDErrorType)__Pyx_PyInt_As_SVDErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 680, __pyx_L1_error)
+    __pyx_t_3 = ((SVDErrorType)__Pyx_PyInt_As_SVDErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 686, __pyx_L1_error)
     __pyx_v_et = __pyx_t_3;
   }
 
-  /* "SLEPc/SVD.pyx":681
+  /* "SLEPc/SVD.pyx":687
  *         cdef SlepcSVDErrorType et = SVD_ERROR_RELATIVE
  *         if etype is not None: et = etype
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
- *         CHKERR( SVDErrorView(self.svd, et, vwr) )
- */
-  __pyx_v_vwr = NULL;
-
-  /* "SLEPc/SVD.pyx":682
- *         if etype is not None: et = etype
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( SVDErrorView(self.svd, et, vwr) )
  * 
  */
-  __pyx_t_2 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-    __pyx_t_4 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_4;
-  }
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
-  /* "SLEPc/SVD.pyx":683
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+  /* "SLEPc/SVD.pyx":688
+ *         if etype is not None: et = etype
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( SVDErrorView(self.svd, et, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDErrorView(__pyx_v_self->svd, __pyx_v_et, __pyx_v_vwr)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(14, 683, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDErrorView(__pyx_v_self->svd, __pyx_v_et, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(15, 688, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":658
+  /* "SLEPc/SVD.pyx":664
  *         return toReal(rval)
  * 
  *     def errorView(self, etype=None, Viewer viewer=None):             # <<<<<<<<<<<<<<
@@ -36381,10 +38399,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_68errorView(struct PySlepcSVDObj
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":687
+/* "SLEPc/SVD.pyx":692
  *     #
  * 
- *     def setCrossEPS(self, EPS eps not None):             # <<<<<<<<<<<<<<
+ *     def setCrossEPS(self, EPS eps):             # <<<<<<<<<<<<<<
  *         """
  *         Associate an eigensolver object (`EPS`) to the singular value
  */
@@ -36405,6 +38423,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_71setCrossEPS(PyObject *__pyx_v_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -36415,7 +38434,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_71setCrossEPS(PyObject *__pyx_v_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setCrossEPS") < 0)) __PYX_ERR(14, 687, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setCrossEPS") < 0)) __PYX_ERR(15, 692, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -36426,13 +38445,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_71setCrossEPS(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setCrossEPS", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 687, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setCrossEPS", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 692, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setCrossEPS", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_eps), __pyx_ptype_8slepc4py_5SLEPc_EPS, 0, "eps", 0))) __PYX_ERR(14, 687, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_eps), __pyx_ptype_8slepc4py_5SLEPc_EPS, 0, "eps", 0))) __PYX_ERR(15, 692, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3SVD_70setCrossEPS(((struct PySlepcSVDObject *)__pyx_v_self), __pyx_v_eps);
 
   /* function exit code */
@@ -36450,19 +38469,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_70setCrossEPS(struct PySlepcSVDO
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setCrossEPS", 0);
 
-  /* "SLEPc/SVD.pyx":697
+  /* "SLEPc/SVD.pyx":702
  *              The eigensolver object.
  *         """
  *         CHKERR( SVDCrossSetEPS(self.svd, eps.eps) )             # <<<<<<<<<<<<<<
  * 
  *     def getCrossEPS(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCrossSetEPS(__pyx_v_self->svd, __pyx_v_eps->eps)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 697, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCrossSetEPS(__pyx_v_self->svd, __pyx_v_eps->eps)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 702, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":687
+  /* "SLEPc/SVD.pyx":692
  *     #
  * 
- *     def setCrossEPS(self, EPS eps not None):             # <<<<<<<<<<<<<<
+ *     def setCrossEPS(self, EPS eps):             # <<<<<<<<<<<<<<
  *         """
  *         Associate an eigensolver object (`EPS`) to the singular value
  */
@@ -36479,7 +38498,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_70setCrossEPS(struct PySlepcSVDO
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":699
+/* "SLEPc/SVD.pyx":704
  *         CHKERR( SVDCrossSetEPS(self.svd, eps.eps) )
  * 
  *     def getCrossEPS(self):             # <<<<<<<<<<<<<<
@@ -36512,28 +38531,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_72getCrossEPS(struct PySlepcSVDO
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getCrossEPS", 0);
 
-  /* "SLEPc/SVD.pyx":709
+  /* "SLEPc/SVD.pyx":714
  *              The eigensolver object.
  *         """
  *         cdef EPS eps = EPS()             # <<<<<<<<<<<<<<
  *         CHKERR( SVDCrossGetEPS(self.svd, &eps.eps) )
  *         PetscINCREF(eps.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 709, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 714, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_eps = ((struct PySlepcEPSObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/SVD.pyx":710
+  /* "SLEPc/SVD.pyx":715
  *         """
  *         cdef EPS eps = EPS()
  *         CHKERR( SVDCrossGetEPS(self.svd, &eps.eps) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(eps.obj)
  *         return eps
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCrossGetEPS(__pyx_v_self->svd, (&__pyx_v_eps->eps))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(14, 710, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCrossGetEPS(__pyx_v_self->svd, (&__pyx_v_eps->eps))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 715, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":711
+  /* "SLEPc/SVD.pyx":716
  *         cdef EPS eps = EPS()
  *         CHKERR( SVDCrossGetEPS(self.svd, &eps.eps) )
  *         PetscINCREF(eps.obj)             # <<<<<<<<<<<<<<
@@ -36542,19 +38561,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_72getCrossEPS(struct PySlepcSVDO
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_eps->__pyx_base.obj);
 
-  /* "SLEPc/SVD.pyx":712
+  /* "SLEPc/SVD.pyx":717
  *         CHKERR( SVDCrossGetEPS(self.svd, &eps.eps) )
  *         PetscINCREF(eps.obj)
  *         return eps             # <<<<<<<<<<<<<<
  * 
- *     def setCyclicEPS(self, EPS eps not None):
+ *     def setCyclicEPS(self, EPS eps):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_eps));
   __pyx_r = ((PyObject *)__pyx_v_eps);
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":699
+  /* "SLEPc/SVD.pyx":704
  *         CHKERR( SVDCrossSetEPS(self.svd, eps.eps) )
  * 
  *     def getCrossEPS(self):             # <<<<<<<<<<<<<<
@@ -36574,10 +38593,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_72getCrossEPS(struct PySlepcSVDO
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":714
+/* "SLEPc/SVD.pyx":719
  *         return eps
  * 
- *     def setCyclicEPS(self, EPS eps not None):             # <<<<<<<<<<<<<<
+ *     def setCyclicEPS(self, EPS eps):             # <<<<<<<<<<<<<<
  *         """
  *         Associate an eigensolver object (`EPS`) to the singular value
  */
@@ -36598,6 +38617,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_75setCyclicEPS(PyObject *__pyx_v
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -36608,7 +38628,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_75setCyclicEPS(PyObject *__pyx_v
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setCyclicEPS") < 0)) __PYX_ERR(14, 714, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setCyclicEPS") < 0)) __PYX_ERR(15, 719, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -36619,13 +38639,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_75setCyclicEPS(PyObject *__pyx_v
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setCyclicEPS", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 714, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setCyclicEPS", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 719, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setCyclicEPS", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_eps), __pyx_ptype_8slepc4py_5SLEPc_EPS, 0, "eps", 0))) __PYX_ERR(14, 714, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_eps), __pyx_ptype_8slepc4py_5SLEPc_EPS, 0, "eps", 0))) __PYX_ERR(15, 719, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3SVD_74setCyclicEPS(((struct PySlepcSVDObject *)__pyx_v_self), __pyx_v_eps);
 
   /* function exit code */
@@ -36643,19 +38663,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_74setCyclicEPS(struct PySlepcSVD
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setCyclicEPS", 0);
 
-  /* "SLEPc/SVD.pyx":724
+  /* "SLEPc/SVD.pyx":729
  *              The eigensolver object.
  *         """
  *         CHKERR( SVDCyclicSetEPS(self.svd, eps.eps) )             # <<<<<<<<<<<<<<
  * 
  *     def getCyclicEPS(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCyclicSetEPS(__pyx_v_self->svd, __pyx_v_eps->eps)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 724, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCyclicSetEPS(__pyx_v_self->svd, __pyx_v_eps->eps)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 729, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":714
+  /* "SLEPc/SVD.pyx":719
  *         return eps
  * 
- *     def setCyclicEPS(self, EPS eps not None):             # <<<<<<<<<<<<<<
+ *     def setCyclicEPS(self, EPS eps):             # <<<<<<<<<<<<<<
  *         """
  *         Associate an eigensolver object (`EPS`) to the singular value
  */
@@ -36672,7 +38692,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_74setCyclicEPS(struct PySlepcSVD
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":726
+/* "SLEPc/SVD.pyx":731
  *         CHKERR( SVDCyclicSetEPS(self.svd, eps.eps) )
  * 
  *     def getCyclicEPS(self):             # <<<<<<<<<<<<<<
@@ -36705,28 +38725,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_76getCyclicEPS(struct PySlepcSVD
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getCyclicEPS", 0);
 
-  /* "SLEPc/SVD.pyx":736
+  /* "SLEPc/SVD.pyx":741
  *              The eigensolver object.
  *         """
  *         cdef EPS eps = EPS()             # <<<<<<<<<<<<<<
  *         CHKERR( SVDCyclicGetEPS(self.svd, &eps.eps) )
  *         PetscINCREF(eps.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 736, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 741, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_eps = ((struct PySlepcEPSObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/SVD.pyx":737
+  /* "SLEPc/SVD.pyx":742
  *         """
  *         cdef EPS eps = EPS()
  *         CHKERR( SVDCyclicGetEPS(self.svd, &eps.eps) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(eps.obj)
  *         return eps
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCyclicGetEPS(__pyx_v_self->svd, (&__pyx_v_eps->eps))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(14, 737, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCyclicGetEPS(__pyx_v_self->svd, (&__pyx_v_eps->eps))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 742, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":738
+  /* "SLEPc/SVD.pyx":743
  *         cdef EPS eps = EPS()
  *         CHKERR( SVDCyclicGetEPS(self.svd, &eps.eps) )
  *         PetscINCREF(eps.obj)             # <<<<<<<<<<<<<<
@@ -36735,7 +38755,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_76getCyclicEPS(struct PySlepcSVD
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_eps->__pyx_base.obj);
 
-  /* "SLEPc/SVD.pyx":739
+  /* "SLEPc/SVD.pyx":744
  *         CHKERR( SVDCyclicGetEPS(self.svd, &eps.eps) )
  *         PetscINCREF(eps.obj)
  *         return eps             # <<<<<<<<<<<<<<
@@ -36747,7 +38767,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_76getCyclicEPS(struct PySlepcSVD
   __pyx_r = ((PyObject *)__pyx_v_eps);
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":726
+  /* "SLEPc/SVD.pyx":731
  *         CHKERR( SVDCyclicSetEPS(self.svd, eps.eps) )
  * 
  *     def getCyclicEPS(self):             # <<<<<<<<<<<<<<
@@ -36767,7 +38787,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_76getCyclicEPS(struct PySlepcSVD
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":741
+/* "SLEPc/SVD.pyx":746
  *         return eps
  * 
  *     def setCyclicExplicitMatrix(self, flag=True):             # <<<<<<<<<<<<<<
@@ -36792,6 +38812,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_79setCyclicExplicitMatrix(PyObje
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -36804,11 +38825,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_79setCyclicExplicitMatrix(PyObje
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setCyclicExplicitMatrix") < 0)) __PYX_ERR(14, 741, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setCyclicExplicitMatrix") < 0)) __PYX_ERR(15, 746, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -36817,7 +38839,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_79setCyclicExplicitMatrix(PyObje
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setCyclicExplicitMatrix", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 741, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setCyclicExplicitMatrix", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 746, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setCyclicExplicitMatrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -36838,7 +38860,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_78setCyclicExplicitMatrix(struct
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setCyclicExplicitMatrix", 0);
 
-  /* "SLEPc/SVD.pyx":751
+  /* "SLEPc/SVD.pyx":756
  *               True if ``H(A)`` is built explicitly.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -36847,28 +38869,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_78setCyclicExplicitMatrix(struct
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/SVD.pyx":752
+  /* "SLEPc/SVD.pyx":757
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         if flag: tval = PETSC_TRUE             # <<<<<<<<<<<<<<
  *         CHKERR( SVDCyclicSetExplicitMatrix(self.svd, tval) )
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_flag); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(14, 752, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_flag); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(15, 757, __pyx_L1_error)
   if (__pyx_t_1) {
     __pyx_v_tval = PETSC_TRUE;
   }
 
-  /* "SLEPc/SVD.pyx":753
+  /* "SLEPc/SVD.pyx":758
  *         cdef PetscBool tval = PETSC_FALSE
  *         if flag: tval = PETSC_TRUE
  *         CHKERR( SVDCyclicSetExplicitMatrix(self.svd, tval) )             # <<<<<<<<<<<<<<
  * 
  *     def getCyclicExplicitMatrix(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCyclicSetExplicitMatrix(__pyx_v_self->svd, __pyx_v_tval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(14, 753, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCyclicSetExplicitMatrix(__pyx_v_self->svd, __pyx_v_tval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 758, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":741
+  /* "SLEPc/SVD.pyx":746
  *         return eps
  * 
  *     def setCyclicExplicitMatrix(self, flag=True):             # <<<<<<<<<<<<<<
@@ -36888,7 +38910,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_78setCyclicExplicitMatrix(struct
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":755
+/* "SLEPc/SVD.pyx":760
  *         CHKERR( SVDCyclicSetExplicitMatrix(self.svd, tval) )
  * 
  *     def getCyclicExplicitMatrix(self):             # <<<<<<<<<<<<<<
@@ -36921,7 +38943,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_80getCyclicExplicitMatrix(struct
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getCyclicExplicitMatrix", 0);
 
-  /* "SLEPc/SVD.pyx":765
+  /* "SLEPc/SVD.pyx":770
  *               True if ``H(A)`` is built explicitly.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -36930,16 +38952,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_80getCyclicExplicitMatrix(struct
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/SVD.pyx":766
+  /* "SLEPc/SVD.pyx":771
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( SVDCyclicGetExplicitMatrix(self.svd, &tval) )             # <<<<<<<<<<<<<<
  *         return <bint>tval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCyclicGetExplicitMatrix(__pyx_v_self->svd, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(14, 766, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDCyclicGetExplicitMatrix(__pyx_v_self->svd, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 771, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":767
+  /* "SLEPc/SVD.pyx":772
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( SVDCyclicGetExplicitMatrix(self.svd, &tval) )
  *         return <bint>tval             # <<<<<<<<<<<<<<
@@ -36947,13 +38969,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_80getCyclicExplicitMatrix(struct
  *     def setLanczosOneSide(self, flag=True):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 767, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 772, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":755
+  /* "SLEPc/SVD.pyx":760
  *         CHKERR( SVDCyclicSetExplicitMatrix(self.svd, tval) )
  * 
  *     def getCyclicExplicitMatrix(self):             # <<<<<<<<<<<<<<
@@ -36972,7 +38994,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_80getCyclicExplicitMatrix(struct
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":769
+/* "SLEPc/SVD.pyx":774
  *         return <bint>tval
  * 
  *     def setLanczosOneSide(self, flag=True):             # <<<<<<<<<<<<<<
@@ -36997,6 +39019,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_83setLanczosOneSide(PyObject *__
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -37009,11 +39032,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_83setLanczosOneSide(PyObject *__
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setLanczosOneSide") < 0)) __PYX_ERR(14, 769, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setLanczosOneSide") < 0)) __PYX_ERR(15, 774, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -37022,7 +39046,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_83setLanczosOneSide(PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setLanczosOneSide", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 769, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setLanczosOneSide", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 774, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setLanczosOneSide", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -37043,7 +39067,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_82setLanczosOneSide(struct PySle
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setLanczosOneSide", 0);
 
-  /* "SLEPc/SVD.pyx":787
+  /* "SLEPc/SVD.pyx":792
  *         for storing such vectors.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -37052,28 +39076,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_82setLanczosOneSide(struct PySle
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/SVD.pyx":788
+  /* "SLEPc/SVD.pyx":793
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         if flag: tval = PETSC_TRUE             # <<<<<<<<<<<<<<
  *         CHKERR( SVDLanczosSetOneSide(self.svd, tval) )
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_flag); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(14, 788, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_flag); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(15, 793, __pyx_L1_error)
   if (__pyx_t_1) {
     __pyx_v_tval = PETSC_TRUE;
   }
 
-  /* "SLEPc/SVD.pyx":789
+  /* "SLEPc/SVD.pyx":794
  *         cdef PetscBool tval = PETSC_FALSE
  *         if flag: tval = PETSC_TRUE
  *         CHKERR( SVDLanczosSetOneSide(self.svd, tval) )             # <<<<<<<<<<<<<<
  * 
  *     def setTRLanczosOneSide(self, flag=True):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDLanczosSetOneSide(__pyx_v_self->svd, __pyx_v_tval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(14, 789, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDLanczosSetOneSide(__pyx_v_self->svd, __pyx_v_tval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 794, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":769
+  /* "SLEPc/SVD.pyx":774
  *         return <bint>tval
  * 
  *     def setLanczosOneSide(self, flag=True):             # <<<<<<<<<<<<<<
@@ -37093,7 +39117,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_82setLanczosOneSide(struct PySle
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":791
+/* "SLEPc/SVD.pyx":796
  *         CHKERR( SVDLanczosSetOneSide(self.svd, tval) )
  * 
  *     def setTRLanczosOneSide(self, flag=True):             # <<<<<<<<<<<<<<
@@ -37118,6 +39142,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_85setTRLanczosOneSide(PyObject *
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -37130,11 +39155,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_85setTRLanczosOneSide(PyObject *
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTRLanczosOneSide") < 0)) __PYX_ERR(14, 791, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTRLanczosOneSide") < 0)) __PYX_ERR(15, 796, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -37143,7 +39169,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3SVD_85setTRLanczosOneSide(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setTRLanczosOneSide", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(14, 791, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setTRLanczosOneSide", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 796, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.SVD.setTRLanczosOneSide", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -37164,7 +39190,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_84setTRLanczosOneSide(struct PyS
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setTRLanczosOneSide", 0);
 
-  /* "SLEPc/SVD.pyx":808
+  /* "SLEPc/SVD.pyx":813
  *         to left singular vectors.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -37173,28 +39199,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_84setTRLanczosOneSide(struct PyS
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/SVD.pyx":809
+  /* "SLEPc/SVD.pyx":814
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         if flag: tval = PETSC_TRUE             # <<<<<<<<<<<<<<
  *         CHKERR( SVDLanczosSetOneSide(self.svd, tval) )
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_flag); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(14, 809, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_flag); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(15, 814, __pyx_L1_error)
   if (__pyx_t_1) {
     __pyx_v_tval = PETSC_TRUE;
   }
 
-  /* "SLEPc/SVD.pyx":810
+  /* "SLEPc/SVD.pyx":815
  *         cdef PetscBool tval = PETSC_FALSE
  *         if flag: tval = PETSC_TRUE
  *         CHKERR( SVDLanczosSetOneSide(self.svd, tval) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDLanczosSetOneSide(__pyx_v_self->svd, __pyx_v_tval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(14, 810, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SVDLanczosSetOneSide(__pyx_v_self->svd, __pyx_v_tval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 815, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":791
+  /* "SLEPc/SVD.pyx":796
  *         CHKERR( SVDLanczosSetOneSide(self.svd, tval) )
  * 
  *     def setTRLanczosOneSide(self, flag=True):             # <<<<<<<<<<<<<<
@@ -37214,7 +39240,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_84setTRLanczosOneSide(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":815
+/* "SLEPc/SVD.pyx":820
  * 
  *     property transpose_mode:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -37243,7 +39269,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_14transpose_mode___get__(struct
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/SVD.pyx":816
+  /* "SLEPc/SVD.pyx":821
  *     property transpose_mode:
  *         def __get__(self):
  *             return self.getTransposeMode()             # <<<<<<<<<<<<<<
@@ -37251,10 +39277,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_14transpose_mode___get__(struct
  *             self.setTransposeMode(value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getTransposeMode); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 816, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getTransposeMode); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 821, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -37264,10 +39290,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_14transpose_mode___get__(struct
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 816, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 821, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 816, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 821, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -37275,7 +39301,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_14transpose_mode___get__(struct
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":815
+  /* "SLEPc/SVD.pyx":820
  * 
  *     property transpose_mode:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -37296,7 +39322,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_14transpose_mode___get__(struct
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":817
+/* "SLEPc/SVD.pyx":822
  *         def __get__(self):
  *             return self.getTransposeMode()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -37326,17 +39352,17 @@ static int __pyx_pf_8slepc4py_5SLEPc_3SVD_14transpose_mode_2__set__(struct PySle
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/SVD.pyx":818
+  /* "SLEPc/SVD.pyx":823
  *             return self.getTransposeMode()
  *         def __set__(self, value):
  *             self.setTransposeMode(value)             # <<<<<<<<<<<<<<
  * 
  *     property which:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setTransposeMode); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 818, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setTransposeMode); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 823, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -37346,23 +39372,41 @@ static int __pyx_pf_8slepc4py_5SLEPc_3SVD_14transpose_mode_2__set__(struct PySle
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 818, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 823, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 818, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_INCREF(__pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 818, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 823, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 823, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 823, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_value);
+      __Pyx_GIVEREF(__pyx_v_value);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 823, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "SLEPc/SVD.pyx":817
+  /* "SLEPc/SVD.pyx":822
  *         def __get__(self):
  *             return self.getTransposeMode()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -37385,7 +39429,7 @@ static int __pyx_pf_8slepc4py_5SLEPc_3SVD_14transpose_mode_2__set__(struct PySle
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":821
+/* "SLEPc/SVD.pyx":826
  * 
  *     property which:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -37414,7 +39458,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_5which___get__(struct PySlepcSVD
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/SVD.pyx":822
+  /* "SLEPc/SVD.pyx":827
  *     property which:
  *         def __get__(self):
  *             return self.getWhichSingularTriplets()             # <<<<<<<<<<<<<<
@@ -37422,10 +39466,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_5which___get__(struct PySlepcSVD
  *             self.setWhichSingularTriplets(value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getWhichSingularTriplets); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 822, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getWhichSingularTriplets); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 827, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -37435,10 +39479,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_5which___get__(struct PySlepcSVD
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 822, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 827, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 822, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 827, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -37446,7 +39490,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_5which___get__(struct PySlepcSVD
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":821
+  /* "SLEPc/SVD.pyx":826
  * 
  *     property which:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -37467,7 +39511,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_5which___get__(struct PySlepcSVD
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":823
+/* "SLEPc/SVD.pyx":828
  *         def __get__(self):
  *             return self.getWhichSingularTriplets()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -37497,17 +39541,17 @@ static int __pyx_pf_8slepc4py_5SLEPc_3SVD_5which_2__set__(struct PySlepcSVDObjec
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/SVD.pyx":824
+  /* "SLEPc/SVD.pyx":829
  *             return self.getWhichSingularTriplets()
  *         def __set__(self, value):
  *             self.setWhichSingularTriplets(value)             # <<<<<<<<<<<<<<
  * 
  *     property tol:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setWhichSingularTriplets); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 824, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setWhichSingularTriplets); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 829, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -37517,23 +39561,41 @@ static int __pyx_pf_8slepc4py_5SLEPc_3SVD_5which_2__set__(struct PySlepcSVDObjec
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 824, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 829, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 824, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_INCREF(__pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 824, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 829, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 829, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 829, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_value);
+      __Pyx_GIVEREF(__pyx_v_value);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 829, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "SLEPc/SVD.pyx":823
+  /* "SLEPc/SVD.pyx":828
  *         def __get__(self):
  *             return self.getWhichSingularTriplets()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -37556,7 +39618,7 @@ static int __pyx_pf_8slepc4py_5SLEPc_3SVD_5which_2__set__(struct PySlepcSVDObjec
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":827
+/* "SLEPc/SVD.pyx":832
  * 
  *     property tol:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -37585,7 +39647,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_3tol___get__(struct PySlepcSVDOb
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/SVD.pyx":828
+  /* "SLEPc/SVD.pyx":833
  *     property tol:
  *         def __get__(self):
  *             return self.getTolerances()[0]             # <<<<<<<<<<<<<<
@@ -37593,10 +39655,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_3tol___get__(struct PySlepcSVDOb
  *             self.setTolerances(tol=value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getTolerances); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 828, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getTolerances); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 833, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -37606,21 +39668,21 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_3tol___get__(struct PySlepcSVDOb
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 828, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 833, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 828, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 833, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 828, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 833, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":827
+  /* "SLEPc/SVD.pyx":832
  * 
  *     property tol:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -37641,7 +39703,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_3tol___get__(struct PySlepcSVDOb
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":829
+/* "SLEPc/SVD.pyx":834
  *         def __get__(self):
  *             return self.getTolerances()[0]
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -37670,25 +39732,25 @@ static int __pyx_pf_8slepc4py_5SLEPc_3SVD_3tol_2__set__(struct PySlepcSVDObject
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/SVD.pyx":830
+  /* "SLEPc/SVD.pyx":835
  *             return self.getTolerances()[0]
  *         def __set__(self, value):
  *             self.setTolerances(tol=value)             # <<<<<<<<<<<<<<
  * 
  *     property max_it:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setTolerances); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 830, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setTolerances); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 835, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 830, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 835, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_tol, __pyx_v_value) < 0) __PYX_ERR(14, 830, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 830, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_tol, __pyx_v_value) < 0) __PYX_ERR(15, 835, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 835, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "SLEPc/SVD.pyx":829
+  /* "SLEPc/SVD.pyx":834
  *         def __get__(self):
  *             return self.getTolerances()[0]
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -37710,7 +39772,7 @@ static int __pyx_pf_8slepc4py_5SLEPc_3SVD_3tol_2__set__(struct PySlepcSVDObject
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":833
+/* "SLEPc/SVD.pyx":838
  * 
  *     property max_it:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -37739,7 +39801,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_6max_it___get__(struct PySlepcSV
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/SVD.pyx":834
+  /* "SLEPc/SVD.pyx":839
  *     property max_it:
  *         def __get__(self):
  *             return self.getTolerances()[1]             # <<<<<<<<<<<<<<
@@ -37747,10 +39809,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_6max_it___get__(struct PySlepcSV
  *             self.setTolerances(max_it=value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getTolerances); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 834, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getTolerances); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 839, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -37760,21 +39822,21 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_6max_it___get__(struct PySlepcSV
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 834, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 839, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 834, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 839, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 834, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 839, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":833
+  /* "SLEPc/SVD.pyx":838
  * 
  *     property max_it:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -37795,7 +39857,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_6max_it___get__(struct PySlepcSV
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":835
+/* "SLEPc/SVD.pyx":840
  *         def __get__(self):
  *             return self.getTolerances()[1]
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -37824,25 +39886,25 @@ static int __pyx_pf_8slepc4py_5SLEPc_3SVD_6max_it_2__set__(struct PySlepcSVDObje
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/SVD.pyx":836
+  /* "SLEPc/SVD.pyx":841
  *             return self.getTolerances()[1]
  *         def __set__(self, value):
  *             self.setTolerances(max_it=value)             # <<<<<<<<<<<<<<
  * 
  *     property bv:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setTolerances); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 836, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setTolerances); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 841, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 836, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 841, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_max_it, __pyx_v_value) < 0) __PYX_ERR(14, 836, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 836, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_max_it, __pyx_v_value) < 0) __PYX_ERR(15, 841, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 841, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "SLEPc/SVD.pyx":835
+  /* "SLEPc/SVD.pyx":840
  *         def __get__(self):
  *             return self.getTolerances()[1]
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -37864,7 +39926,7 @@ static int __pyx_pf_8slepc4py_5SLEPc_3SVD_6max_it_2__set__(struct PySlepcSVDObje
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":839
+/* "SLEPc/SVD.pyx":844
  * 
  *     property bv:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -37893,7 +39955,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_2bv___get__(struct PySlepcSVDObj
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "SLEPc/SVD.pyx":840
+  /* "SLEPc/SVD.pyx":845
  *     property bv:
  *         def __get__(self):
  *             return self.getBV()             # <<<<<<<<<<<<<<
@@ -37901,10 +39963,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_2bv___get__(struct PySlepcSVDObj
  *             self.setBV(value)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getBV); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 840, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getBV); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 845, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -37914,10 +39976,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_2bv___get__(struct PySlepcSVDObj
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 840, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 845, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 840, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 845, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -37925,7 +39987,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_2bv___get__(struct PySlepcSVDObj
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SVD.pyx":839
+  /* "SLEPc/SVD.pyx":844
  * 
  *     property bv:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -37946,7 +40008,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3SVD_2bv___get__(struct PySlepcSVDObj
   return __pyx_r;
 }
 
-/* "SLEPc/SVD.pyx":841
+/* "SLEPc/SVD.pyx":846
  *         def __get__(self):
  *             return self.getBV()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -37976,17 +40038,17 @@ static int __pyx_pf_8slepc4py_5SLEPc_3SVD_2bv_2__set__(struct PySlepcSVDObject *
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "SLEPc/SVD.pyx":842
+  /* "SLEPc/SVD.pyx":847
  *             return self.getBV()
  *         def __set__(self, value):
  *             self.setBV(value)             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setBV); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 842, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setBV); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 847, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
     if (likely(__pyx_t_3)) {
       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
@@ -37996,23 +40058,41 @@ static int __pyx_pf_8slepc4py_5SLEPc_3SVD_2bv_2__set__(struct PySlepcSVDObject *
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 842, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 847, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 842, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_INCREF(__pyx_v_value);
-    __Pyx_GIVEREF(__pyx_v_value);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 842, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 847, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_value};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 847, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 847, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_value);
+      __Pyx_GIVEREF(__pyx_v_value);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_value);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 847, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "SLEPc/SVD.pyx":841
+  /* "SLEPc/SVD.pyx":846
  *         def __get__(self):
  *             return self.getBV()
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -38121,6 +40201,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_3view(PyObject *__pyx_v_self, Py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -38133,11 +40214,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_3view(PyObject *__pyx_v_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(15, 189, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(16, 189, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -38146,13 +40228,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_3view(PyObject *__pyx_v_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 189, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 189, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.view", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(15, 189, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(16, 189, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_2view(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_viewer);
 
   /* function exit code */
@@ -38169,42 +40251,25 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_2view(struct PySlepcPEPObject *_
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
-  PetscViewer __pyx_t_3;
-  int __pyx_t_4;
   __Pyx_RefNannySetupContext("view", 0);
 
   /* "SLEPc/PEP.pyx":199
  *             output is used.
  *         """
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( PEPView(self.pep, vwr) )
+ * 
  */
-  __pyx_v_vwr = NULL;
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
   /* "SLEPc/PEP.pyx":200
  *         """
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
- *         CHKERR( PEPView(self.pep, vwr) )
- * 
- */
-  __pyx_t_1 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_3;
-  }
-
-  /* "SLEPc/PEP.pyx":201
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( PEPView(self.pep, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     def destroy(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPView(__pyx_v_self->pep, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(15, 201, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPView(__pyx_v_self->pep, __pyx_v_vwr)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 200, __pyx_L1_error)
 
   /* "SLEPc/PEP.pyx":189
  *         self.pep = NULL
@@ -38226,7 +40291,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_2view(struct PySlepcPEPObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":203
+/* "SLEPc/PEP.pyx":202
  *         CHKERR( PEPView(self.pep, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -38257,16 +40322,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_4destroy(struct PySlepcPEPObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("destroy", 0);
 
-  /* "SLEPc/PEP.pyx":207
+  /* "SLEPc/PEP.pyx":206
  *         Destroys the PEP object.
  *         """
  *         CHKERR( PEPDestroy(&self.pep) )             # <<<<<<<<<<<<<<
  *         self.pep = NULL
  *         return self
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPDestroy((&__pyx_v_self->pep))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 207, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPDestroy((&__pyx_v_self->pep))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 206, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":208
+  /* "SLEPc/PEP.pyx":207
  *         """
  *         CHKERR( PEPDestroy(&self.pep) )
  *         self.pep = NULL             # <<<<<<<<<<<<<<
@@ -38275,7 +40340,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_4destroy(struct PySlepcPEPObject
  */
   __pyx_v_self->pep = NULL;
 
-  /* "SLEPc/PEP.pyx":209
+  /* "SLEPc/PEP.pyx":208
  *         CHKERR( PEPDestroy(&self.pep) )
  *         self.pep = NULL
  *         return self             # <<<<<<<<<<<<<<
@@ -38287,7 +40352,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_4destroy(struct PySlepcPEPObject
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":203
+  /* "SLEPc/PEP.pyx":202
  *         CHKERR( PEPView(self.pep, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -38305,7 +40370,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_4destroy(struct PySlepcPEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":211
+/* "SLEPc/PEP.pyx":210
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -38336,16 +40401,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_6reset(struct PySlepcPEPObject *
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("reset", 0);
 
-  /* "SLEPc/PEP.pyx":215
+  /* "SLEPc/PEP.pyx":214
  *         Resets the PEP object.
  *         """
  *         CHKERR( PEPReset(self.pep) )             # <<<<<<<<<<<<<<
  * 
  *     def create(self, comm=None):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPReset(__pyx_v_self->pep)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 215, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPReset(__pyx_v_self->pep)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 214, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":211
+  /* "SLEPc/PEP.pyx":210
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -38365,7 +40430,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_6reset(struct PySlepcPEPObject *
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":217
+/* "SLEPc/PEP.pyx":216
  *         CHKERR( PEPReset(self.pep) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -38390,6 +40455,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_9create(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -38402,11 +40468,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_9create(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(15, 217, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(16, 216, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -38415,7 +40482,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_9create(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 217, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 216, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -38437,17 +40504,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_8create(struct PySlepcPEPObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("create", 0);
 
-  /* "SLEPc/PEP.pyx":227
+  /* "SLEPc/PEP.pyx":226
  *             processes.
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())             # <<<<<<<<<<<<<<
  *         cdef SlepcPEP newpep = NULL
  *         CHKERR( PEPCreate(ccomm, &newpep) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 227, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 226, __pyx_L1_error)
   __pyx_v_ccomm = __pyx_t_1;
 
-  /* "SLEPc/PEP.pyx":228
+  /* "SLEPc/PEP.pyx":227
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcPEP newpep = NULL             # <<<<<<<<<<<<<<
@@ -38456,16 +40523,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_8create(struct PySlepcPEPObject
  */
   __pyx_v_newpep = NULL;
 
-  /* "SLEPc/PEP.pyx":229
+  /* "SLEPc/PEP.pyx":228
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcPEP newpep = NULL
  *         CHKERR( PEPCreate(ccomm, &newpep) )             # <<<<<<<<<<<<<<
  *         SlepcCLEAR(self.obj); self.pep = newpep
  *         return self
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPCreate(__pyx_v_ccomm, (&__pyx_v_newpep))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 229, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPCreate(__pyx_v_ccomm, (&__pyx_v_newpep))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 228, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":230
+  /* "SLEPc/PEP.pyx":229
  *         cdef SlepcPEP newpep = NULL
  *         CHKERR( PEPCreate(ccomm, &newpep) )
  *         SlepcCLEAR(self.obj); self.pep = newpep             # <<<<<<<<<<<<<<
@@ -38475,7 +40542,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_8create(struct PySlepcPEPObject
   __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(__pyx_v_self->__pyx_base.obj);
   __pyx_v_self->pep = __pyx_v_newpep;
 
-  /* "SLEPc/PEP.pyx":231
+  /* "SLEPc/PEP.pyx":230
  *         CHKERR( PEPCreate(ccomm, &newpep) )
  *         SlepcCLEAR(self.obj); self.pep = newpep
  *         return self             # <<<<<<<<<<<<<<
@@ -38487,7 +40554,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_8create(struct PySlepcPEPObject
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":217
+  /* "SLEPc/PEP.pyx":216
  *         CHKERR( PEPReset(self.pep) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -38505,7 +40572,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_8create(struct PySlepcPEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":233
+/* "SLEPc/PEP.pyx":232
  *         return self
  * 
  *     def setType(self, pep_type):             # <<<<<<<<<<<<<<
@@ -38529,6 +40596,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_11setType(PyObject *__pyx_v_self
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -38539,7 +40607,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_11setType(PyObject *__pyx_v_self
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(15, 233, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(16, 232, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -38550,7 +40618,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_11setType(PyObject *__pyx_v_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 233, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 232, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -38572,7 +40640,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_10setType(struct PySlepcPEPObjec
   __Pyx_RefNannySetupContext("setType", 0);
   __Pyx_INCREF(__pyx_v_pep_type);
 
-  /* "SLEPc/PEP.pyx":242
+  /* "SLEPc/PEP.pyx":241
  *             The solver to be used.
  *         """
  *         cdef SlepcPEPType cval = NULL             # <<<<<<<<<<<<<<
@@ -38581,28 +40649,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_10setType(struct PySlepcPEPObjec
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/PEP.pyx":243
+  /* "SLEPc/PEP.pyx":242
  *         """
  *         cdef SlepcPEPType cval = NULL
  *         pep_type = str2bytes(pep_type, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( PEPSetType(self.pep, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_pep_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 243, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_pep_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 242, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_pep_type, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/PEP.pyx":244
+  /* "SLEPc/PEP.pyx":243
  *         cdef SlepcPEPType cval = NULL
  *         pep_type = str2bytes(pep_type, &cval)
  *         CHKERR( PEPSetType(self.pep, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getType(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetType(__pyx_v_self->pep, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 244, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetType(__pyx_v_self->pep, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 243, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":233
+  /* "SLEPc/PEP.pyx":232
  *         return self
  * 
  *     def setType(self, pep_type):             # <<<<<<<<<<<<<<
@@ -38624,7 +40692,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_10setType(struct PySlepcPEPObjec
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":246
+/* "SLEPc/PEP.pyx":245
  *         CHKERR( PEPSetType(self.pep, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -38657,7 +40725,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_12getType(struct PySlepcPEPObjec
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getType", 0);
 
-  /* "SLEPc/PEP.pyx":255
+  /* "SLEPc/PEP.pyx":254
  *             The solver currently being used.
  *         """
  *         cdef SlepcPEPType pep_type = NULL             # <<<<<<<<<<<<<<
@@ -38666,16 +40734,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_12getType(struct PySlepcPEPObjec
  */
   __pyx_v_pep_type = NULL;
 
-  /* "SLEPc/PEP.pyx":256
+  /* "SLEPc/PEP.pyx":255
  *         """
  *         cdef SlepcPEPType pep_type = NULL
  *         CHKERR( PEPGetType(self.pep, &pep_type) )             # <<<<<<<<<<<<<<
  *         return bytes2str(pep_type)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetType(__pyx_v_self->pep, (&__pyx_v_pep_type))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 256, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetType(__pyx_v_self->pep, (&__pyx_v_pep_type))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 255, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":257
+  /* "SLEPc/PEP.pyx":256
  *         cdef SlepcPEPType pep_type = NULL
  *         CHKERR( PEPGetType(self.pep, &pep_type) )
  *         return bytes2str(pep_type)             # <<<<<<<<<<<<<<
@@ -38683,13 +40751,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_12getType(struct PySlepcPEPObjec
  *     def getOptionsPrefix(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_pep_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 257, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_pep_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":246
+  /* "SLEPc/PEP.pyx":245
  *         CHKERR( PEPSetType(self.pep, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -38708,7 +40776,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_12getType(struct PySlepcPEPObjec
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":259
+/* "SLEPc/PEP.pyx":258
  *         return bytes2str(pep_type)
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -38741,7 +40809,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_14getOptionsPrefix(struct PySlep
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getOptionsPrefix", 0);
 
-  /* "SLEPc/PEP.pyx":269
+  /* "SLEPc/PEP.pyx":268
  *             The prefix string set for this PEP object.
  *         """
  *         cdef const_char *prefix = NULL             # <<<<<<<<<<<<<<
@@ -38750,16 +40818,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_14getOptionsPrefix(struct PySlep
  */
   __pyx_v_prefix = NULL;
 
-  /* "SLEPc/PEP.pyx":270
+  /* "SLEPc/PEP.pyx":269
  *         """
  *         cdef const_char *prefix = NULL
  *         CHKERR( PEPGetOptionsPrefix(self.pep, &prefix) )             # <<<<<<<<<<<<<<
  *         return bytes2str(prefix)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetOptionsPrefix(__pyx_v_self->pep, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 270, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetOptionsPrefix(__pyx_v_self->pep, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 269, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":271
+  /* "SLEPc/PEP.pyx":270
  *         cdef const_char *prefix = NULL
  *         CHKERR( PEPGetOptionsPrefix(self.pep, &prefix) )
  *         return bytes2str(prefix)             # <<<<<<<<<<<<<<
@@ -38767,13 +40835,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_14getOptionsPrefix(struct PySlep
  *     def setOptionsPrefix(self, prefix):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 271, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 270, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":259
+  /* "SLEPc/PEP.pyx":258
  *         return bytes2str(pep_type)
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -38792,7 +40860,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_14getOptionsPrefix(struct PySlep
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":273
+/* "SLEPc/PEP.pyx":272
  *         return bytes2str(prefix)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -38816,6 +40884,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_17setOptionsPrefix(PyObject *__p
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -38826,7 +40895,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_17setOptionsPrefix(PyObject *__p
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(15, 273, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(16, 272, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -38837,7 +40906,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_17setOptionsPrefix(PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 273, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 272, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -38859,7 +40928,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_16setOptionsPrefix(struct PySlep
   __Pyx_RefNannySetupContext("setOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/PEP.pyx":283
+  /* "SLEPc/PEP.pyx":282
  *             The prefix string to prepend to all PEP option requests.
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -38868,28 +40937,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_16setOptionsPrefix(struct PySlep
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/PEP.pyx":284
+  /* "SLEPc/PEP.pyx":283
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( PEPSetOptionsPrefix(self.pep, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 284, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 283, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/PEP.pyx":285
+  /* "SLEPc/PEP.pyx":284
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( PEPSetOptionsPrefix(self.pep, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def appendOptionsPrefix(self, prefix):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetOptionsPrefix(__pyx_v_self->pep, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 285, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetOptionsPrefix(__pyx_v_self->pep, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 284, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":273
+  /* "SLEPc/PEP.pyx":272
  *         return bytes2str(prefix)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -38911,7 +40980,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_16setOptionsPrefix(struct PySlep
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":287
+/* "SLEPc/PEP.pyx":286
  *         CHKERR( PEPSetOptionsPrefix(self.pep, cval) )
  * 
  *     def appendOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -38935,6 +41004,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_19appendOptionsPrefix(PyObject *
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -38945,7 +41015,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_19appendOptionsPrefix(PyObject *
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "appendOptionsPrefix") < 0)) __PYX_ERR(15, 287, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "appendOptionsPrefix") < 0)) __PYX_ERR(16, 286, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -38956,7 +41026,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_19appendOptionsPrefix(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("appendOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 287, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("appendOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 286, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.appendOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -38978,7 +41048,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_18appendOptionsPrefix(struct PyS
   __Pyx_RefNannySetupContext("appendOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/PEP.pyx":297
+  /* "SLEPc/PEP.pyx":296
  *             The prefix string to prepend to all PEP option requests.
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -38987,28 +41057,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_18appendOptionsPrefix(struct PyS
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/PEP.pyx":298
+  /* "SLEPc/PEP.pyx":297
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( PEPAppendOptionsPrefix(self.pep, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 298, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 297, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/PEP.pyx":299
+  /* "SLEPc/PEP.pyx":298
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( PEPAppendOptionsPrefix(self.pep, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def setFromOptions(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPAppendOptionsPrefix(__pyx_v_self->pep, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 299, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPAppendOptionsPrefix(__pyx_v_self->pep, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 298, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":287
+  /* "SLEPc/PEP.pyx":286
  *         CHKERR( PEPSetOptionsPrefix(self.pep, cval) )
  * 
  *     def appendOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -39030,7 +41100,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_18appendOptionsPrefix(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":301
+/* "SLEPc/PEP.pyx":300
  *         CHKERR( PEPAppendOptionsPrefix(self.pep, cval) )
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -39061,16 +41131,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_20setFromOptions(struct PySlepcP
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setFromOptions", 0);
 
-  /* "SLEPc/PEP.pyx":307
+  /* "SLEPc/PEP.pyx":306
  *         the solver type.
  *         """
  *         CHKERR( PEPSetFromOptions(self.pep) )             # <<<<<<<<<<<<<<
  * 
  *     def getBasis(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetFromOptions(__pyx_v_self->pep)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 307, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetFromOptions(__pyx_v_self->pep)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 306, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":301
+  /* "SLEPc/PEP.pyx":300
  *         CHKERR( PEPAppendOptionsPrefix(self.pep, cval) )
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -39090,7 +41160,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_20setFromOptions(struct PySlepcP
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":309
+/* "SLEPc/PEP.pyx":308
  *         CHKERR( PEPSetFromOptions(self.pep) )
  * 
  *     def getBasis(self):             # <<<<<<<<<<<<<<
@@ -39123,7 +41193,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_22getBasis(struct PySlepcPEPObje
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getBasis", 0);
 
-  /* "SLEPc/PEP.pyx":319
+  /* "SLEPc/PEP.pyx":318
  *             the basis that was previously set.
  *         """
  *         cdef SlepcPEPBasis val = PEP_BASIS_MONOMIAL             # <<<<<<<<<<<<<<
@@ -39132,16 +41202,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_22getBasis(struct PySlepcPEPObje
  */
   __pyx_v_val = PEP_BASIS_MONOMIAL;
 
-  /* "SLEPc/PEP.pyx":320
+  /* "SLEPc/PEP.pyx":319
  *         """
  *         cdef SlepcPEPBasis val = PEP_BASIS_MONOMIAL
  *         CHKERR( PEPGetBasis(self.pep, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetBasis(__pyx_v_self->pep, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 320, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetBasis(__pyx_v_self->pep, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 319, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":321
+  /* "SLEPc/PEP.pyx":320
  *         cdef SlepcPEPBasis val = PEP_BASIS_MONOMIAL
  *         CHKERR( PEPGetBasis(self.pep, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -39149,13 +41219,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_22getBasis(struct PySlepcPEPObje
  *     def setBasis(self, basis):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PEPBasis(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 321, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PEPBasis(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 320, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":309
+  /* "SLEPc/PEP.pyx":308
  *         CHKERR( PEPSetFromOptions(self.pep) )
  * 
  *     def getBasis(self):             # <<<<<<<<<<<<<<
@@ -39174,7 +41244,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_22getBasis(struct PySlepcPEPObje
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":323
+/* "SLEPc/PEP.pyx":322
  *         return val
  * 
  *     def setBasis(self, basis):             # <<<<<<<<<<<<<<
@@ -39198,6 +41268,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_25setBasis(PyObject *__pyx_v_sel
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -39208,7 +41279,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_25setBasis(PyObject *__pyx_v_sel
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBasis") < 0)) __PYX_ERR(15, 323, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBasis") < 0)) __PYX_ERR(16, 322, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -39219,7 +41290,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_25setBasis(PyObject *__pyx_v_sel
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setBasis", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 323, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setBasis", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 322, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setBasis", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -39240,26 +41311,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_24setBasis(struct PySlepcPEPObje
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setBasis", 0);
 
-  /* "SLEPc/PEP.pyx":333
+  /* "SLEPc/PEP.pyx":332
  *             the basis to be set.
  *         """
  *         cdef SlepcPEPBasis val = basis             # <<<<<<<<<<<<<<
  *         CHKERR( PEPSetBasis(self.pep, val) )
  * 
  */
-  __pyx_t_1 = ((PEPBasis)__Pyx_PyInt_As_PEPBasis(__pyx_v_basis)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 333, __pyx_L1_error)
+  __pyx_t_1 = ((PEPBasis)__Pyx_PyInt_As_PEPBasis(__pyx_v_basis)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 332, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/PEP.pyx":334
+  /* "SLEPc/PEP.pyx":333
  *         """
  *         cdef SlepcPEPBasis val = basis
  *         CHKERR( PEPSetBasis(self.pep, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getProblemType(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetBasis(__pyx_v_self->pep, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 334, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetBasis(__pyx_v_self->pep, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 333, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":323
+  /* "SLEPc/PEP.pyx":322
  *         return val
  * 
  *     def setBasis(self, basis):             # <<<<<<<<<<<<<<
@@ -39279,7 +41350,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_24setBasis(struct PySlepcPEPObje
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":336
+/* "SLEPc/PEP.pyx":335
  *         CHKERR( PEPSetBasis(self.pep, val) )
  * 
  *     def getProblemType(self):             # <<<<<<<<<<<<<<
@@ -39312,7 +41383,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_26getProblemType(struct PySlepcP
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getProblemType", 0);
 
-  /* "SLEPc/PEP.pyx":345
+  /* "SLEPc/PEP.pyx":344
  *             The problem type that was previously set.
  *         """
  *         cdef SlepcPEPProblemType val = PEP_GENERAL             # <<<<<<<<<<<<<<
@@ -39321,16 +41392,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_26getProblemType(struct PySlepcP
  */
   __pyx_v_val = PEP_GENERAL;
 
-  /* "SLEPc/PEP.pyx":346
+  /* "SLEPc/PEP.pyx":345
  *         """
  *         cdef SlepcPEPProblemType val = PEP_GENERAL
  *         CHKERR( PEPGetProblemType(self.pep, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetProblemType(__pyx_v_self->pep, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 346, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetProblemType(__pyx_v_self->pep, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 345, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":347
+  /* "SLEPc/PEP.pyx":346
  *         cdef SlepcPEPProblemType val = PEP_GENERAL
  *         CHKERR( PEPGetProblemType(self.pep, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -39338,13 +41409,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_26getProblemType(struct PySlepcP
  *     def setProblemType(self, problem_type):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PEPProblemType(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 347, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PEPProblemType(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 346, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":336
+  /* "SLEPc/PEP.pyx":335
  *         CHKERR( PEPSetBasis(self.pep, val) )
  * 
  *     def getProblemType(self):             # <<<<<<<<<<<<<<
@@ -39363,7 +41434,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_26getProblemType(struct PySlepcP
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":349
+/* "SLEPc/PEP.pyx":348
  *         return val
  * 
  *     def setProblemType(self, problem_type):             # <<<<<<<<<<<<<<
@@ -39387,6 +41458,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_29setProblemType(PyObject *__pyx
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -39397,7 +41469,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_29setProblemType(PyObject *__pyx
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setProblemType") < 0)) __PYX_ERR(15, 349, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setProblemType") < 0)) __PYX_ERR(16, 348, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -39408,7 +41480,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_29setProblemType(PyObject *__pyx
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setProblemType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 349, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setProblemType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 348, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setProblemType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -39429,26 +41501,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_28setProblemType(struct PySlepcP
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setProblemType", 0);
 
-  /* "SLEPc/PEP.pyx":358
+  /* "SLEPc/PEP.pyx":357
  *             The problem type to be set.
  *         """
  *         cdef SlepcPEPProblemType val = problem_type             # <<<<<<<<<<<<<<
  *         CHKERR( PEPSetProblemType(self.pep, val) )
  * 
  */
-  __pyx_t_1 = ((PEPProblemType)__Pyx_PyInt_As_PEPProblemType(__pyx_v_problem_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 358, __pyx_L1_error)
+  __pyx_t_1 = ((PEPProblemType)__Pyx_PyInt_As_PEPProblemType(__pyx_v_problem_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 357, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/PEP.pyx":359
+  /* "SLEPc/PEP.pyx":358
  *         """
  *         cdef SlepcPEPProblemType val = problem_type
  *         CHKERR( PEPSetProblemType(self.pep, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getWhichEigenpairs(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetProblemType(__pyx_v_self->pep, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 359, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetProblemType(__pyx_v_self->pep, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 358, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":349
+  /* "SLEPc/PEP.pyx":348
  *         return val
  * 
  *     def setProblemType(self, problem_type):             # <<<<<<<<<<<<<<
@@ -39468,7 +41540,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_28setProblemType(struct PySlepcP
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":361
+/* "SLEPc/PEP.pyx":360
  *         CHKERR( PEPSetProblemType(self.pep, val) )
  * 
  *     def getWhichEigenpairs(self):             # <<<<<<<<<<<<<<
@@ -39501,7 +41573,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_30getWhichEigenpairs(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getWhichEigenpairs", 0);
 
-  /* "SLEPc/PEP.pyx":370
+  /* "SLEPc/PEP.pyx":369
  *             The portion of the spectrum to be sought by the solver.
  *         """
  *         cdef SlepcPEPWhich val = PEP_LARGEST_MAGNITUDE             # <<<<<<<<<<<<<<
@@ -39510,16 +41582,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_30getWhichEigenpairs(struct PySl
  */
   __pyx_v_val = PEP_LARGEST_MAGNITUDE;
 
-  /* "SLEPc/PEP.pyx":371
+  /* "SLEPc/PEP.pyx":370
  *         """
  *         cdef SlepcPEPWhich val = PEP_LARGEST_MAGNITUDE
  *         CHKERR( PEPGetWhichEigenpairs(self.pep, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetWhichEigenpairs(__pyx_v_self->pep, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 371, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetWhichEigenpairs(__pyx_v_self->pep, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 370, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":372
+  /* "SLEPc/PEP.pyx":371
  *         cdef SlepcPEPWhich val = PEP_LARGEST_MAGNITUDE
  *         CHKERR( PEPGetWhichEigenpairs(self.pep, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -39527,13 +41599,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_30getWhichEigenpairs(struct PySl
  *     def setWhichEigenpairs(self, which):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PEPWhich(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 372, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PEPWhich(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 371, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":361
+  /* "SLEPc/PEP.pyx":360
  *         CHKERR( PEPSetProblemType(self.pep, val) )
  * 
  *     def getWhichEigenpairs(self):             # <<<<<<<<<<<<<<
@@ -39552,7 +41624,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_30getWhichEigenpairs(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":374
+/* "SLEPc/PEP.pyx":373
  *         return val
  * 
  *     def setWhichEigenpairs(self, which):             # <<<<<<<<<<<<<<
@@ -39576,6 +41648,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_33setWhichEigenpairs(PyObject *_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -39586,7 +41659,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_33setWhichEigenpairs(PyObject *_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setWhichEigenpairs") < 0)) __PYX_ERR(15, 374, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setWhichEigenpairs") < 0)) __PYX_ERR(16, 373, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -39597,7 +41670,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_33setWhichEigenpairs(PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setWhichEigenpairs", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 374, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setWhichEigenpairs", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 373, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setWhichEigenpairs", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -39618,26 +41691,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_32setWhichEigenpairs(struct PySl
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setWhichEigenpairs", 0);
 
-  /* "SLEPc/PEP.pyx":383
+  /* "SLEPc/PEP.pyx":382
  *             The portion of the spectrum to be sought by the solver.
  *         """
  *         cdef SlepcPEPWhich val = which             # <<<<<<<<<<<<<<
  *         CHKERR( PEPSetWhichEigenpairs(self.pep, val) )
  * 
  */
-  __pyx_t_1 = ((PEPWhich)__Pyx_PyInt_As_PEPWhich(__pyx_v_which)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 383, __pyx_L1_error)
+  __pyx_t_1 = ((PEPWhich)__Pyx_PyInt_As_PEPWhich(__pyx_v_which)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 382, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/PEP.pyx":384
+  /* "SLEPc/PEP.pyx":383
  *         """
  *         cdef SlepcPEPWhich val = which
  *         CHKERR( PEPSetWhichEigenpairs(self.pep, val) )             # <<<<<<<<<<<<<<
  * 
- *     def getTolerances(self):
+ *     def getTarget(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetWhichEigenpairs(__pyx_v_self->pep, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 384, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetWhichEigenpairs(__pyx_v_self->pep, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 383, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":374
+  /* "SLEPc/PEP.pyx":373
  *         return val
  * 
  *     def setWhichEigenpairs(self, which):             # <<<<<<<<<<<<<<
@@ -39657,32 +41730,222 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_32setWhichEigenpairs(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":386
+/* "SLEPc/PEP.pyx":385
  *         CHKERR( PEPSetWhichEigenpairs(self.pep, val) )
  * 
+ *     def getTarget(self):             # <<<<<<<<<<<<<<
+ *         """
+ *         Gets the value of the target.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_35getTarget(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_34getTarget[] = "PEP.getTarget(self)\n\n        Gets the value of the target.\n\n        Returns\n        -------\n        target: float (real or complex)\n                The value of the target.\n\n        Notes\n        -----\n        If the target was not set by the user, then zero is returned.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_35getTarget(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("getTarget (wrapper)", 0);
+  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
+    __Pyx_RaiseArgtupleInvalid("getTarget", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
+  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getTarget", 0))) return NULL;
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_34getTarget(((struct PySlepcPEPObject *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_34getTarget(struct PySlepcPEPObject *__pyx_v_self) {
+  PetscScalar __pyx_v_sval;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannySetupContext("getTarget", 0);
+
+  /* "SLEPc/PEP.pyx":398
+ *         If the target was not set by the user, then zero is returned.
+ *         """
+ *         cdef PetscScalar sval = 0             # <<<<<<<<<<<<<<
+ *         CHKERR( PEPGetTarget(self.pep, &sval) )
+ *         return toScalar(sval)
+ */
+  __pyx_v_sval = 0.0;
+
+  /* "SLEPc/PEP.pyx":399
+ *         """
+ *         cdef PetscScalar sval = 0
+ *         CHKERR( PEPGetTarget(self.pep, &sval) )             # <<<<<<<<<<<<<<
+ *         return toScalar(sval)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetTarget(__pyx_v_self->pep, (&__pyx_v_sval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 399, __pyx_L1_error)
+
+  /* "SLEPc/PEP.pyx":400
+ *         cdef PetscScalar sval = 0
+ *         CHKERR( PEPGetTarget(self.pep, &sval) )
+ *         return toScalar(sval)             # <<<<<<<<<<<<<<
+ * 
+ *     def setTarget(self, target):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 400, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "SLEPc/PEP.pyx":385
+ *         CHKERR( PEPSetWhichEigenpairs(self.pep, val) )
+ * 
+ *     def getTarget(self):             # <<<<<<<<<<<<<<
+ *         """
+ *         Gets the value of the target.
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("slepc4py.SLEPc.PEP.getTarget", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "SLEPc/PEP.pyx":402
+ *         return toScalar(sval)
+ * 
+ *     def setTarget(self, target):             # <<<<<<<<<<<<<<
+ *         """
+ *         Sets the value of the target.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_37setTarget(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_36setTarget[] = "PEP.setTarget(self, target)\n\n        Sets the value of the target.\n\n        Parameters\n        ----------\n        target: float (real or complex)\n                The value of the target.\n\n        Notes\n        -----\n        The target is a scalar value used to determine the portion of\n        the spectrum of interest. It is used in combination with\n        `setWhichEigenpairs()`.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_37setTarget(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_target = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("setTarget (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_target,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_target)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTarget") < 0)) __PYX_ERR(16, 402, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_target = values[0];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("setTarget", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 402, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setTarget", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_36setTarget(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_target);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_36setTarget(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_target) {
+  PetscScalar __pyx_v_sval;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PetscScalar __pyx_t_1;
+  int __pyx_t_2;
+  __Pyx_RefNannySetupContext("setTarget", 0);
+
+  /* "SLEPc/PEP.pyx":417
+ *         `setWhichEigenpairs()`.
+ *         """
+ *         cdef PetscScalar sval = asScalar(target)             # <<<<<<<<<<<<<<
+ *         CHKERR( PEPSetTarget(self.pep, sval) )
+ * 
+ */
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asScalar(__pyx_v_target); if (unlikely(__pyx_t_1 == ((PetscScalar)((PetscScalar)(-1.0))) && PyErr_Occurred())) __PYX_ERR(16, 417, __pyx_L1_error)
+  __pyx_v_sval = __pyx_t_1;
+
+  /* "SLEPc/PEP.pyx":418
+ *         """
+ *         cdef PetscScalar sval = asScalar(target)
+ *         CHKERR( PEPSetTarget(self.pep, sval) )             # <<<<<<<<<<<<<<
+ * 
+ *     def getTolerances(self):
+ */
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetTarget(__pyx_v_self->pep, __pyx_v_sval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 418, __pyx_L1_error)
+
+  /* "SLEPc/PEP.pyx":402
+ *         return toScalar(sval)
+ * 
+ *     def setTarget(self, target):             # <<<<<<<<<<<<<<
+ *         """
+ *         Sets the value of the target.
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setTarget", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "SLEPc/PEP.pyx":420
+ *         CHKERR( PEPSetTarget(self.pep, sval) )
+ * 
  *     def getTolerances(self):             # <<<<<<<<<<<<<<
  *         """
  *         Gets the tolerance and maximum iteration count used by the
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_35getTolerances(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_34getTolerances[] = "PEP.getTolerances(self)\n\n        Gets the tolerance and maximum iteration count used by the\n        default PEP convergence tests.\n\n        Returns\n        -------\n        tol: float\n            The convergence tolerance.\n        max_it: int\n            The maximum number of iterations\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_35getTolerances(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_39getTolerances(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_38getTolerances[] = "PEP.getTolerances(self)\n\n        Gets the tolerance and maximum iteration count used by the\n        default PEP convergence tests.\n\n        Returns\n        -------\n        tol: float\n            The convergence tolerance.\n        max_it: int\n            The maximum number of iterations\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_39getTolerances(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getTolerances (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getTolerances", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getTolerances", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_34getTolerances(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_38getTolerances(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_34getTolerances(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_38getTolerances(struct PySlepcPEPObject *__pyx_v_self) {
   PetscReal __pyx_v_rval;
   PetscInt __pyx_v_ival;
   PyObject *__pyx_r = NULL;
@@ -39693,7 +41956,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_34getTolerances(struct PySlepcPE
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getTolerances", 0);
 
-  /* "SLEPc/PEP.pyx":398
+  /* "SLEPc/PEP.pyx":432
  *             The maximum number of iterations
  *         """
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -39702,7 +41965,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_34getTolerances(struct PySlepcPE
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/PEP.pyx":399
+  /* "SLEPc/PEP.pyx":433
  *         """
  *         cdef PetscReal rval = 0
  *         cdef PetscInt  ival = 0             # <<<<<<<<<<<<<<
@@ -39711,16 +41974,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_34getTolerances(struct PySlepcPE
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/PEP.pyx":400
+  /* "SLEPc/PEP.pyx":434
  *         cdef PetscReal rval = 0
  *         cdef PetscInt  ival = 0
  *         CHKERR( PEPGetTolerances(self.pep, &rval, &ival) )             # <<<<<<<<<<<<<<
  *         return (toReal(rval), toInt(ival))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetTolerances(__pyx_v_self->pep, (&__pyx_v_rval), (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 400, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetTolerances(__pyx_v_self->pep, (&__pyx_v_rval), (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 434, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":401
+  /* "SLEPc/PEP.pyx":435
  *         cdef PetscInt  ival = 0
  *         CHKERR( PEPGetTolerances(self.pep, &rval, &ival) )
  *         return (toReal(rval), toInt(ival))             # <<<<<<<<<<<<<<
@@ -39728,11 +41991,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_34getTolerances(struct PySlepcPE
  *     def setTolerances(self, tol=None, max_it=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 401, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 435, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 401, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 435, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 401, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 435, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
@@ -39744,8 +42007,8 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_34getTolerances(struct PySlepcPE
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":386
- *         CHKERR( PEPSetWhichEigenpairs(self.pep, val) )
+  /* "SLEPc/PEP.pyx":420
+ *         CHKERR( PEPSetTarget(self.pep, sval) )
  * 
  *     def getTolerances(self):             # <<<<<<<<<<<<<<
  *         """
@@ -39765,7 +42028,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_34getTolerances(struct PySlepcPE
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":403
+/* "SLEPc/PEP.pyx":437
  *         return (toReal(rval), toInt(ival))
  * 
  *     def setTolerances(self, tol=None, max_it=None):             # <<<<<<<<<<<<<<
@@ -39774,9 +42037,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_34getTolerances(struct PySlepcPE
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_37setTolerances(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_36setTolerances[] = "PEP.setTolerances(self, tol=None, max_it=None)\n\n        Sets the tolerance and maximum iteration count used by the\n        default PEP convergence tests.\n\n        Parameters\n        ----------\n        tol: float, optional\n            The convergence tolerance.\n        max_it: int, optional\n            The maximum number of iterations\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_37setTolerances(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_41setTolerances(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_40setTolerances[] = "PEP.setTolerances(self, tol=None, max_it=None)\n\n        Sets the tolerance and maximum iteration count used by the\n        default PEP convergence tests.\n\n        Parameters\n        ----------\n        tol: float, optional\n            The convergence tolerance.\n        max_it: int, optional\n            The maximum number of iterations\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_41setTolerances(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_tol = 0;
   PyObject *__pyx_v_max_it = 0;
   PyObject *__pyx_r = 0;
@@ -39792,7 +42055,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_37setTolerances(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -39803,6 +42068,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_37setTolerances(PyObject *__pyx_
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_tol);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_max_it);
@@ -39810,12 +42076,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_37setTolerances(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTolerances") < 0)) __PYX_ERR(15, 403, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTolerances") < 0)) __PYX_ERR(16, 437, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -39825,20 +42093,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_37setTolerances(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setTolerances", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 403, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setTolerances", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 437, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setTolerances", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_36setTolerances(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_tol, __pyx_v_max_it);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_40setTolerances(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_tol, __pyx_v_max_it);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_36setTolerances(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_tol, PyObject *__pyx_v_max_it) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_40setTolerances(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_tol, PyObject *__pyx_v_max_it) {
   PetscReal __pyx_v_rval;
   PetscInt __pyx_v_ival;
   PyObject *__pyx_r = NULL;
@@ -39850,7 +42118,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_36setTolerances(struct PySlepcPE
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("setTolerances", 0);
 
-  /* "SLEPc/PEP.pyx":415
+  /* "SLEPc/PEP.pyx":449
  *             The maximum number of iterations
  *         """
  *         cdef PetscReal rval = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -39859,7 +42127,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_36setTolerances(struct PySlepcPE
  */
   __pyx_v_rval = PETSC_DEFAULT;
 
-  /* "SLEPc/PEP.pyx":416
+  /* "SLEPc/PEP.pyx":450
  *         """
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         cdef PetscInt  ival = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -39868,7 +42136,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_36setTolerances(struct PySlepcPE
  */
   __pyx_v_ival = PETSC_DEFAULT;
 
-  /* "SLEPc/PEP.pyx":417
+  /* "SLEPc/PEP.pyx":451
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         cdef PetscInt  ival = PETSC_DEFAULT
  *         if tol    is not None: rval = asReal(tol)             # <<<<<<<<<<<<<<
@@ -39878,11 +42146,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_36setTolerances(struct PySlepcPE
   __pyx_t_1 = (__pyx_v_tol != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_tol); if (unlikely(__pyx_t_3 == -1.0 && PyErr_Occurred())) __PYX_ERR(15, 417, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_tol); if (unlikely(__pyx_t_3 == ((PetscReal)-1.0) && PyErr_Occurred())) __PYX_ERR(16, 451, __pyx_L1_error)
     __pyx_v_rval = __pyx_t_3;
   }
 
-  /* "SLEPc/PEP.pyx":418
+  /* "SLEPc/PEP.pyx":452
  *         cdef PetscInt  ival = PETSC_DEFAULT
  *         if tol    is not None: rval = asReal(tol)
  *         if max_it is not None: ival = asInt(max_it)             # <<<<<<<<<<<<<<
@@ -39892,20 +42160,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_36setTolerances(struct PySlepcPE
   __pyx_t_2 = (__pyx_v_max_it != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_max_it); if (unlikely(__pyx_t_4 == -1L && PyErr_Occurred())) __PYX_ERR(15, 418, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_max_it); if (unlikely(__pyx_t_4 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(16, 452, __pyx_L1_error)
     __pyx_v_ival = __pyx_t_4;
   }
 
-  /* "SLEPc/PEP.pyx":419
+  /* "SLEPc/PEP.pyx":453
  *         if tol    is not None: rval = asReal(tol)
  *         if max_it is not None: ival = asInt(max_it)
  *         CHKERR( PEPSetTolerances(self.pep, rval, ival) )             # <<<<<<<<<<<<<<
  * 
  *     def getConvergenceTest(self):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetTolerances(__pyx_v_self->pep, __pyx_v_rval, __pyx_v_ival)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(15, 419, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetTolerances(__pyx_v_self->pep, __pyx_v_rval, __pyx_v_ival)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(16, 453, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":403
+  /* "SLEPc/PEP.pyx":437
  *         return (toReal(rval), toInt(ival))
  * 
  *     def setTolerances(self, tol=None, max_it=None):             # <<<<<<<<<<<<<<
@@ -39925,7 +42193,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_36setTolerances(struct PySlepcPE
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":421
+/* "SLEPc/PEP.pyx":455
  *         CHKERR( PEPSetTolerances(self.pep, rval, ival) )
  * 
  *     def getConvergenceTest(self):             # <<<<<<<<<<<<<<
@@ -39934,23 +42202,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_36setTolerances(struct PySlepcPE
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_39getConvergenceTest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_38getConvergenceTest[] = "PEP.getConvergenceTest(self)\n\n        Return the method used to compute the error estimate \n        used in the convergence test. \n\n        Returns\n        -------\n        conv: PEP.Conv\n            The method used to compute the error estimate \n            used in the convergence test. \n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_39getConvergenceTest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_43getConvergenceTest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_42getConvergenceTest[] = "PEP.getConvergenceTest(self)\n\n        Return the method used to compute the error estimate \n        used in the convergence test. \n\n        Returns\n        -------\n        conv: PEP.Conv\n            The method used to compute the error estimate \n            used in the convergence test. \n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_43getConvergenceTest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getConvergenceTest (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getConvergenceTest", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getConvergenceTest", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_38getConvergenceTest(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_42getConvergenceTest(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_38getConvergenceTest(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getConvergenceTest(struct PySlepcPEPObject *__pyx_v_self) {
   PEPConv __pyx_v_conv;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -39958,7 +42226,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_38getConvergenceTest(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getConvergenceTest", 0);
 
-  /* "SLEPc/PEP.pyx":432
+  /* "SLEPc/PEP.pyx":466
  *             used in the convergence test.
  *         """
  *         cdef SlepcPEPConv conv = PEP_CONV_REL             # <<<<<<<<<<<<<<
@@ -39967,16 +42235,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_38getConvergenceTest(struct PySl
  */
   __pyx_v_conv = PEP_CONV_REL;
 
-  /* "SLEPc/PEP.pyx":433
+  /* "SLEPc/PEP.pyx":467
  *         """
  *         cdef SlepcPEPConv conv = PEP_CONV_REL
  *         CHKERR( PEPGetConvergenceTest(self.pep, &conv) )             # <<<<<<<<<<<<<<
  *         return conv
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetConvergenceTest(__pyx_v_self->pep, (&__pyx_v_conv))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 433, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetConvergenceTest(__pyx_v_self->pep, (&__pyx_v_conv))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 467, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":434
+  /* "SLEPc/PEP.pyx":468
  *         cdef SlepcPEPConv conv = PEP_CONV_REL
  *         CHKERR( PEPGetConvergenceTest(self.pep, &conv) )
  *         return conv             # <<<<<<<<<<<<<<
@@ -39984,13 +42252,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_38getConvergenceTest(struct PySl
  *     def setConvergenceTest(self, conv):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PEPConv(__pyx_v_conv); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 434, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PEPConv(__pyx_v_conv); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 468, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":421
+  /* "SLEPc/PEP.pyx":455
  *         CHKERR( PEPSetTolerances(self.pep, rval, ival) )
  * 
  *     def getConvergenceTest(self):             # <<<<<<<<<<<<<<
@@ -40009,7 +42277,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_38getConvergenceTest(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":436
+/* "SLEPc/PEP.pyx":470
  *         return conv
  * 
  *     def setConvergenceTest(self, conv):             # <<<<<<<<<<<<<<
@@ -40018,9 +42286,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_38getConvergenceTest(struct PySl
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_41setConvergenceTest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_40setConvergenceTest[] = "PEP.setConvergenceTest(self, conv)\n\n        Specifies how to compute the error estimate \n        used in the convergence test. \n\n        Parameters\n        ----------\n        conv: PEP.Conv\n            The method used to compute the error estimate \n            used in the convergence test.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_41setConvergenceTest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_45setConvergenceTest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_44setConvergenceTest[] = "PEP.setConvergenceTest(self, conv)\n\n        Specifies how to compute the error estimate \n        used in the convergence test. \n\n        Parameters\n        ----------\n        conv: PEP.Conv\n            The method used to compute the error estimate \n            used in the convergence test.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_45setConvergenceTest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_conv = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -40033,6 +42301,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_41setConvergenceTest(PyObject *_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -40043,7 +42312,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_41setConvergenceTest(PyObject *_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setConvergenceTest") < 0)) __PYX_ERR(15, 436, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setConvergenceTest") < 0)) __PYX_ERR(16, 470, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -40054,20 +42323,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_41setConvergenceTest(PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setConvergenceTest", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 436, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setConvergenceTest", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 470, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setConvergenceTest", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_40setConvergenceTest(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_conv);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_44setConvergenceTest(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_conv);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_40setConvergenceTest(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_conv) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setConvergenceTest(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_conv) {
   PEPConv __pyx_v_tconv;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -40075,26 +42344,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_40setConvergenceTest(struct PySl
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setConvergenceTest", 0);
 
-  /* "SLEPc/PEP.pyx":447
+  /* "SLEPc/PEP.pyx":481
  *             used in the convergence test.
  *         """
  *         cdef SlepcPEPConv tconv = conv             # <<<<<<<<<<<<<<
  *         CHKERR( PEPSetConvergenceTest(self.pep, tconv) )
  * 
  */
-  __pyx_t_1 = ((PEPConv)__Pyx_PyInt_As_PEPConv(__pyx_v_conv)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 447, __pyx_L1_error)
+  __pyx_t_1 = ((PEPConv)__Pyx_PyInt_As_PEPConv(__pyx_v_conv)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 481, __pyx_L1_error)
   __pyx_v_tconv = __pyx_t_1;
 
-  /* "SLEPc/PEP.pyx":448
+  /* "SLEPc/PEP.pyx":482
  *         """
  *         cdef SlepcPEPConv tconv = conv
  *         CHKERR( PEPSetConvergenceTest(self.pep, tconv) )             # <<<<<<<<<<<<<<
  * 
  *     def getRefine(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetConvergenceTest(__pyx_v_self->pep, __pyx_v_tconv)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 448, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetConvergenceTest(__pyx_v_self->pep, __pyx_v_tconv)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 482, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":436
+  /* "SLEPc/PEP.pyx":470
  *         return conv
  * 
  *     def setConvergenceTest(self, conv):             # <<<<<<<<<<<<<<
@@ -40114,7 +42383,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_40setConvergenceTest(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":450
+/* "SLEPc/PEP.pyx":484
  *         CHKERR( PEPSetConvergenceTest(self.pep, tconv) )
  * 
  *     def getRefine(self):             # <<<<<<<<<<<<<<
@@ -40123,23 +42392,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_40setConvergenceTest(struct PySl
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_43getRefine(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_42getRefine[] = "PEP.getRefine(self)\n\n        Gets the refinement strategy used by the PEP object, \n        and the associated parameters. \n\n        Returns\n        -------\n        ref: PEP.Refine\n            The refinement type.\n        npart: int\n            The number of partitions of the communicator.\n        tol: real\n            The convergence tolerance.\n        its: int\n            The maximum number of refinement iteratio [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_43getRefine(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_47getRefine(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_46getRefine[] = "PEP.getRefine(self)\n\n        Gets the refinement strategy used by the PEP object, \n        and the associated parameters. \n\n        Returns\n        -------\n        ref: PEP.Refine\n            The refinement type.\n        npart: int\n            The number of partitions of the communicator.\n        tol: real\n            The convergence tolerance.\n        its: int\n            The maximum number of refinement iteratio [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_47getRefine(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getRefine (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getRefine", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getRefine", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_42getRefine(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_46getRefine(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getRefine(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_46getRefine(struct PySlepcPEPObject *__pyx_v_self) {
   PEPRefine __pyx_v_ref;
   PetscInt __pyx_v_npart;
   PetscReal __pyx_v_tol;
@@ -40156,7 +42425,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getRefine(struct PySlepcPEPObj
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("getRefine", 0);
 
-  /* "SLEPc/PEP.pyx":468
+  /* "SLEPc/PEP.pyx":502
  *             Scheme for solving linear systems
  *         """
  *         cdef SlepcPEPRefine ref = PEP_REFINE_NONE             # <<<<<<<<<<<<<<
@@ -40165,7 +42434,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getRefine(struct PySlepcPEPObj
  */
   __pyx_v_ref = PEP_REFINE_NONE;
 
-  /* "SLEPc/PEP.pyx":469
+  /* "SLEPc/PEP.pyx":503
  *         """
  *         cdef SlepcPEPRefine ref = PEP_REFINE_NONE
  *         cdef PetscInt npart = 1             # <<<<<<<<<<<<<<
@@ -40174,7 +42443,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getRefine(struct PySlepcPEPObj
  */
   __pyx_v_npart = 1;
 
-  /* "SLEPc/PEP.pyx":470
+  /* "SLEPc/PEP.pyx":504
  *         cdef SlepcPEPRefine ref = PEP_REFINE_NONE
  *         cdef PetscInt npart = 1
  *         cdef PetscReal tol = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -40183,7 +42452,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getRefine(struct PySlepcPEPObj
  */
   __pyx_v_tol = PETSC_DEFAULT;
 
-  /* "SLEPc/PEP.pyx":471
+  /* "SLEPc/PEP.pyx":505
  *         cdef PetscInt npart = 1
  *         cdef PetscReal tol = PETSC_DEFAULT
  *         cdef PetscInt its = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -40192,7 +42461,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getRefine(struct PySlepcPEPObj
  */
   __pyx_v_its = PETSC_DEFAULT;
 
-  /* "SLEPc/PEP.pyx":472
+  /* "SLEPc/PEP.pyx":506
  *         cdef PetscReal tol = PETSC_DEFAULT
  *         cdef PetscInt its = PETSC_DEFAULT
  *         cdef SlepcPEPRefineScheme scheme = PEP_REFINE_SCHEME_MBE             # <<<<<<<<<<<<<<
@@ -40201,16 +42470,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getRefine(struct PySlepcPEPObj
  */
   __pyx_v_scheme = PEP_REFINE_SCHEME_MBE;
 
-  /* "SLEPc/PEP.pyx":473
+  /* "SLEPc/PEP.pyx":507
  *         cdef PetscInt its = PETSC_DEFAULT
  *         cdef SlepcPEPRefineScheme scheme = PEP_REFINE_SCHEME_MBE
  *         CHKERR( PEPGetRefine(self.pep, &ref, &npart, &tol, &its, &scheme) )             # <<<<<<<<<<<<<<
  *         return (ref, toInt(npart), toReal(tol), toInt(its), scheme)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetRefine(__pyx_v_self->pep, (&__pyx_v_ref), (&__pyx_v_npart), (&__pyx_v_tol), (&__pyx_v_its), (&__pyx_v_scheme))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 473, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetRefine(__pyx_v_self->pep, (&__pyx_v_ref), (&__pyx_v_npart), (&__pyx_v_tol), (&__pyx_v_its), (&__pyx_v_scheme))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 507, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":474
+  /* "SLEPc/PEP.pyx":508
  *         cdef SlepcPEPRefineScheme scheme = PEP_REFINE_SCHEME_MBE
  *         CHKERR( PEPGetRefine(self.pep, &ref, &npart, &tol, &its, &scheme) )
  *         return (ref, toInt(npart), toReal(tol), toInt(its), scheme)             # <<<<<<<<<<<<<<
@@ -40218,17 +42487,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getRefine(struct PySlepcPEPObj
  *     def setRefine(self, ref, npart=None, tol=None, its=None, scheme=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PEPRefine(__pyx_v_ref); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 474, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PEPRefine(__pyx_v_ref); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 508, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_npart); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 474, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_npart); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 508, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_tol); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 474, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_tol); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 508, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_its); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 474, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_its); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 508, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyInt_From_PEPRefineScheme(__pyx_v_scheme); if (unlikely(!__pyx_t_6)) __PYX_ERR(15, 474, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyInt_From_PEPRefineScheme(__pyx_v_scheme); if (unlikely(!__pyx_t_6)) __PYX_ERR(16, 508, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 474, __pyx_L1_error)
+  __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 508, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
@@ -40249,7 +42518,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getRefine(struct PySlepcPEPObj
   __pyx_t_7 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":450
+  /* "SLEPc/PEP.pyx":484
  *         CHKERR( PEPSetConvergenceTest(self.pep, tconv) )
  * 
  *     def getRefine(self):             # <<<<<<<<<<<<<<
@@ -40273,7 +42542,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getRefine(struct PySlepcPEPObj
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":476
+/* "SLEPc/PEP.pyx":510
  *         return (ref, toInt(npart), toReal(tol), toInt(its), scheme)
  * 
  *     def setRefine(self, ref, npart=None, tol=None, its=None, scheme=None):             # <<<<<<<<<<<<<<
@@ -40282,9 +42551,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_42getRefine(struct PySlepcPEPObj
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_45setRefine(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_44setRefine[] = "PEP.setRefine(self, ref, npart=None, tol=None, its=None, scheme=None)\n\n        Sets the refinement strategy used by the PEP object, \n        and the associated parameters. \n\n        Parameters\n        ----------\n        ref: PEP.Refine\n            The refinement type.\n        npart: int, optional\n            The number of partitions of the communicator.\n        tol: real, optional\n            The convergence toleran [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_45setRefine(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_49setRefine(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_48setRefine[] = "PEP.setRefine(self, ref, npart=None, tol=None, its=None, scheme=None)\n\n        Sets the refinement strategy used by the PEP object, \n        and the associated parameters. \n\n        Parameters\n        ----------\n        ref: PEP.Refine\n            The refinement type.\n        npart: int, optional\n            The number of partitions of the communicator.\n        tol: real, optional\n            The convergence toleran [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_49setRefine(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_ref = 0;
   PyObject *__pyx_v_npart = 0;
   PyObject *__pyx_v_tol = 0;
@@ -40305,10 +42574,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_45setRefine(PyObject *__pyx_v_se
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -40317,21 +42591,25 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_45setRefine(PyObject *__pyx_v_se
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ref)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_npart);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_tol);
           if (value) { values[2] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  3:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_its);
           if (value) { values[3] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  4:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scheme);
@@ -40339,14 +42617,18 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_45setRefine(PyObject *__pyx_v_se
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRefine") < 0)) __PYX_ERR(15, 476, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRefine") < 0)) __PYX_ERR(16, 510, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
@@ -40360,20 +42642,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_45setRefine(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setRefine", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 476, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setRefine", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 510, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setRefine", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_ref, __pyx_v_npart, __pyx_v_tol, __pyx_v_its, __pyx_v_scheme);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_48setRefine(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_ref, __pyx_v_npart, __pyx_v_tol, __pyx_v_its, __pyx_v_scheme);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_npart, PyObject *__pyx_v_tol, PyObject *__pyx_v_its, PyObject *__pyx_v_scheme) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_48setRefine(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_npart, PyObject *__pyx_v_tol, PyObject *__pyx_v_its, PyObject *__pyx_v_scheme) {
   PEPRefine __pyx_v_tref;
   PetscInt __pyx_v_tnpart;
   PetscReal __pyx_v_ttol;
@@ -40390,17 +42672,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(struct PySlepcPEPObj
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("setRefine", 0);
 
-  /* "SLEPc/PEP.pyx":494
+  /* "SLEPc/PEP.pyx":528
  *             Scheme for linear system solves
  *         """
  *         cdef SlepcPEPRefine tref = ref             # <<<<<<<<<<<<<<
  *         cdef PetscInt tnpart = 1
  *         cdef PetscReal ttol = PETSC_DEFAULT
  */
-  __pyx_t_1 = ((PEPRefine)__Pyx_PyInt_As_PEPRefine(__pyx_v_ref)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 494, __pyx_L1_error)
+  __pyx_t_1 = ((PEPRefine)__Pyx_PyInt_As_PEPRefine(__pyx_v_ref)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 528, __pyx_L1_error)
   __pyx_v_tref = __pyx_t_1;
 
-  /* "SLEPc/PEP.pyx":495
+  /* "SLEPc/PEP.pyx":529
  *         """
  *         cdef SlepcPEPRefine tref = ref
  *         cdef PetscInt tnpart = 1             # <<<<<<<<<<<<<<
@@ -40409,7 +42691,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(struct PySlepcPEPObj
  */
   __pyx_v_tnpart = 1;
 
-  /* "SLEPc/PEP.pyx":496
+  /* "SLEPc/PEP.pyx":530
  *         cdef SlepcPEPRefine tref = ref
  *         cdef PetscInt tnpart = 1
  *         cdef PetscReal ttol = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -40418,7 +42700,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(struct PySlepcPEPObj
  */
   __pyx_v_ttol = PETSC_DEFAULT;
 
-  /* "SLEPc/PEP.pyx":497
+  /* "SLEPc/PEP.pyx":531
  *         cdef PetscInt tnpart = 1
  *         cdef PetscReal ttol = PETSC_DEFAULT
  *         cdef PetscInt tits = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -40427,7 +42709,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(struct PySlepcPEPObj
  */
   __pyx_v_tits = PETSC_DEFAULT;
 
-  /* "SLEPc/PEP.pyx":498
+  /* "SLEPc/PEP.pyx":532
  *         cdef PetscReal ttol = PETSC_DEFAULT
  *         cdef PetscInt tits = PETSC_DEFAULT
  *         cdef SlepcPEPRefineScheme tscheme = PEP_REFINE_SCHEME_MBE             # <<<<<<<<<<<<<<
@@ -40436,7 +42718,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(struct PySlepcPEPObj
  */
   __pyx_v_tscheme = PEP_REFINE_SCHEME_MBE;
 
-  /* "SLEPc/PEP.pyx":499
+  /* "SLEPc/PEP.pyx":533
  *         cdef PetscInt tits = PETSC_DEFAULT
  *         cdef SlepcPEPRefineScheme tscheme = PEP_REFINE_SCHEME_MBE
  *         if npart is not None: tnpart = asInt(npart)             # <<<<<<<<<<<<<<
@@ -40446,11 +42728,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(struct PySlepcPEPObj
   __pyx_t_2 = (__pyx_v_npart != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_npart); if (unlikely(__pyx_t_4 == -1L && PyErr_Occurred())) __PYX_ERR(15, 499, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_npart); if (unlikely(__pyx_t_4 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(16, 533, __pyx_L1_error)
     __pyx_v_tnpart = __pyx_t_4;
   }
 
-  /* "SLEPc/PEP.pyx":500
+  /* "SLEPc/PEP.pyx":534
  *         cdef SlepcPEPRefineScheme tscheme = PEP_REFINE_SCHEME_MBE
  *         if npart is not None: tnpart = asInt(npart)
  *         if tol is not None: ttol = asReal(tol)             # <<<<<<<<<<<<<<
@@ -40460,11 +42742,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(struct PySlepcPEPObj
   __pyx_t_3 = (__pyx_v_tol != Py_None);
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
-    __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_tol); if (unlikely(__pyx_t_5 == -1.0 && PyErr_Occurred())) __PYX_ERR(15, 500, __pyx_L1_error)
+    __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_tol); if (unlikely(__pyx_t_5 == ((PetscReal)-1.0) && PyErr_Occurred())) __PYX_ERR(16, 534, __pyx_L1_error)
     __pyx_v_ttol = __pyx_t_5;
   }
 
-  /* "SLEPc/PEP.pyx":501
+  /* "SLEPc/PEP.pyx":535
  *         if npart is not None: tnpart = asInt(npart)
  *         if tol is not None: ttol = asReal(tol)
  *         if its is not None: tits = asInt(its)             # <<<<<<<<<<<<<<
@@ -40474,11 +42756,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(struct PySlepcPEPObj
   __pyx_t_2 = (__pyx_v_its != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_its); if (unlikely(__pyx_t_4 == -1L && PyErr_Occurred())) __PYX_ERR(15, 501, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_its); if (unlikely(__pyx_t_4 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(16, 535, __pyx_L1_error)
     __pyx_v_tits = __pyx_t_4;
   }
 
-  /* "SLEPc/PEP.pyx":502
+  /* "SLEPc/PEP.pyx":536
  *         if tol is not None: ttol = asReal(tol)
  *         if its is not None: tits = asInt(its)
  *         if scheme is not None: tscheme = scheme             # <<<<<<<<<<<<<<
@@ -40488,20 +42770,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(struct PySlepcPEPObj
   __pyx_t_3 = (__pyx_v_scheme != Py_None);
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
-    __pyx_t_6 = ((PEPRefineScheme)__Pyx_PyInt_As_PEPRefineScheme(__pyx_v_scheme)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 502, __pyx_L1_error)
+    __pyx_t_6 = ((PEPRefineScheme)__Pyx_PyInt_As_PEPRefineScheme(__pyx_v_scheme)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 536, __pyx_L1_error)
     __pyx_v_tscheme = __pyx_t_6;
   }
 
-  /* "SLEPc/PEP.pyx":503
+  /* "SLEPc/PEP.pyx":537
  *         if its is not None: tits = asInt(its)
  *         if scheme is not None: tscheme = scheme
  *         CHKERR( PEPSetRefine(self.pep, tref, tnpart, ttol, tits, tscheme) )             # <<<<<<<<<<<<<<
  * 
  *     def getTrackAll(self):
  */
-  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetRefine(__pyx_v_self->pep, __pyx_v_tref, __pyx_v_tnpart, __pyx_v_ttol, __pyx_v_tits, __pyx_v_tscheme)); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(15, 503, __pyx_L1_error)
+  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetRefine(__pyx_v_self->pep, __pyx_v_tref, __pyx_v_tnpart, __pyx_v_ttol, __pyx_v_tits, __pyx_v_tscheme)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(16, 537, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":476
+  /* "SLEPc/PEP.pyx":510
  *         return (ref, toInt(npart), toReal(tol), toInt(its), scheme)
  * 
  *     def setRefine(self, ref, npart=None, tol=None, its=None, scheme=None):             # <<<<<<<<<<<<<<
@@ -40521,7 +42803,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(struct PySlepcPEPObj
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":505
+/* "SLEPc/PEP.pyx":539
  *         CHKERR( PEPSetRefine(self.pep, tref, tnpart, ttol, tits, tscheme) )
  * 
  *     def getTrackAll(self):             # <<<<<<<<<<<<<<
@@ -40530,23 +42812,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_44setRefine(struct PySlepcPEPObj
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_47getTrackAll(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_46getTrackAll[] = "PEP.getTrackAll(self)\n\n        Returns the flag indicating whether all residual norms must be\n        computed or not.\n\n        Returns\n        -------\n        trackall: bool\n            Whether the solver compute all residuals or not.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_47getTrackAll(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_51getTrackAll(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_50getTrackAll[] = "PEP.getTrackAll(self)\n\n        Returns the flag indicating whether all residual norms must be\n        computed or not.\n\n        Returns\n        -------\n        trackall: bool\n            Whether the solver compute all residuals or not.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_51getTrackAll(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getTrackAll (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getTrackAll", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getTrackAll", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_46getTrackAll(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_50getTrackAll(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_46getTrackAll(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_50getTrackAll(struct PySlepcPEPObject *__pyx_v_self) {
   PetscBool __pyx_v_tval;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -40554,7 +42836,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_46getTrackAll(struct PySlepcPEPO
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getTrackAll", 0);
 
-  /* "SLEPc/PEP.pyx":515
+  /* "SLEPc/PEP.pyx":549
  *             Whether the solver compute all residuals or not.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -40563,16 +42845,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_46getTrackAll(struct PySlepcPEPO
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/PEP.pyx":516
+  /* "SLEPc/PEP.pyx":550
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( PEPGetTrackAll(self.pep, &tval) )             # <<<<<<<<<<<<<<
  *         return <bint>tval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetTrackAll(__pyx_v_self->pep, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 516, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetTrackAll(__pyx_v_self->pep, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 550, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":517
+  /* "SLEPc/PEP.pyx":551
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( PEPGetTrackAll(self.pep, &tval) )
  *         return <bint>tval             # <<<<<<<<<<<<<<
@@ -40580,13 +42862,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_46getTrackAll(struct PySlepcPEPO
  *     def setTrackAll(self, trackall):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 517, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":505
+  /* "SLEPc/PEP.pyx":539
  *         CHKERR( PEPSetRefine(self.pep, tref, tnpart, ttol, tits, tscheme) )
  * 
  *     def getTrackAll(self):             # <<<<<<<<<<<<<<
@@ -40605,7 +42887,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_46getTrackAll(struct PySlepcPEPO
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":519
+/* "SLEPc/PEP.pyx":553
  *         return <bint>tval
  * 
  *     def setTrackAll(self, trackall):             # <<<<<<<<<<<<<<
@@ -40614,9 +42896,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_46getTrackAll(struct PySlepcPEPO
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_49setTrackAll(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_48setTrackAll[] = "PEP.setTrackAll(self, trackall)\n\n        Specifies if the solver must compute the residual of all\n        approximate eigenpairs or not.\n\n        Parameters\n        ----------\n        trackall: bool\n            Whether compute all residuals or not.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_49setTrackAll(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_53setTrackAll(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_52setTrackAll[] = "PEP.setTrackAll(self, trackall)\n\n        Specifies if the solver must compute the residual of all\n        approximate eigenpairs or not.\n\n        Parameters\n        ----------\n        trackall: bool\n            Whether compute all residuals or not.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_53setTrackAll(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_trackall = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -40629,6 +42911,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_49setTrackAll(PyObject *__pyx_v_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -40639,7 +42922,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_49setTrackAll(PyObject *__pyx_v_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTrackAll") < 0)) __PYX_ERR(15, 519, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTrackAll") < 0)) __PYX_ERR(16, 553, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -40650,20 +42933,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_49setTrackAll(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setTrackAll", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 519, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setTrackAll", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 553, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setTrackAll", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_48setTrackAll(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_trackall);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_52setTrackAll(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_trackall);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_48setTrackAll(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_trackall) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_52setTrackAll(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_trackall) {
   PetscBool __pyx_v_tval;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -40671,26 +42954,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_48setTrackAll(struct PySlepcPEPO
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setTrackAll", 0);
 
-  /* "SLEPc/PEP.pyx":529
+  /* "SLEPc/PEP.pyx":563
  *             Whether compute all residuals or not.
  *         """
  *         cdef PetscBool tval = trackall             # <<<<<<<<<<<<<<
  *         CHKERR( PEPSetTrackAll(self.pep, tval) )
  * 
  */
-  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_trackall)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 529, __pyx_L1_error)
+  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_trackall)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 563, __pyx_L1_error)
   __pyx_v_tval = __pyx_t_1;
 
-  /* "SLEPc/PEP.pyx":530
+  /* "SLEPc/PEP.pyx":564
  *         """
  *         cdef PetscBool tval = trackall
  *         CHKERR( PEPSetTrackAll(self.pep, tval) )             # <<<<<<<<<<<<<<
  * 
  *     def getDimensions(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetTrackAll(__pyx_v_self->pep, __pyx_v_tval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 530, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetTrackAll(__pyx_v_self->pep, __pyx_v_tval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 564, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":519
+  /* "SLEPc/PEP.pyx":553
  *         return <bint>tval
  * 
  *     def setTrackAll(self, trackall):             # <<<<<<<<<<<<<<
@@ -40710,7 +42993,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_48setTrackAll(struct PySlepcPEPO
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":532
+/* "SLEPc/PEP.pyx":566
  *         CHKERR( PEPSetTrackAll(self.pep, tval) )
  * 
  *     def getDimensions(self):             # <<<<<<<<<<<<<<
@@ -40719,23 +43002,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_48setTrackAll(struct PySlepcPEPO
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_51getDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_50getDimensions[] = "PEP.getDimensions(self)\n\n        Gets the number of eigenvalues to compute and the dimension of\n        the subspace.\n\n        Returns\n        -------\n        nev: int\n            Number of eigenvalues to compute.\n        ncv: int\n            Maximum dimension of the subspace to be used by the solver.\n        mpd: int\n            Maximum dimension allowed for the projected problem.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_51getDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_55getDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_54getDimensions[] = "PEP.getDimensions(self)\n\n        Gets the number of eigenvalues to compute and the dimension of\n        the subspace.\n\n        Returns\n        -------\n        nev: int\n            Number of eigenvalues to compute.\n        ncv: int\n            Maximum dimension of the subspace to be used by the solver.\n        mpd: int\n            Maximum dimension allowed for the projected problem.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_55getDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getDimensions (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getDimensions", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getDimensions", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_50getDimensions(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_54getDimensions(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_50getDimensions(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_54getDimensions(struct PySlepcPEPObject *__pyx_v_self) {
   PetscInt __pyx_v_ival1;
   PetscInt __pyx_v_ival2;
   PetscInt __pyx_v_ival3;
@@ -40748,7 +43031,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_50getDimensions(struct PySlepcPE
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("getDimensions", 0);
 
-  /* "SLEPc/PEP.pyx":546
+  /* "SLEPc/PEP.pyx":580
  *             Maximum dimension allowed for the projected problem.
  *         """
  *         cdef PetscInt ival1 = 0             # <<<<<<<<<<<<<<
@@ -40757,7 +43040,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_50getDimensions(struct PySlepcPE
  */
   __pyx_v_ival1 = 0;
 
-  /* "SLEPc/PEP.pyx":547
+  /* "SLEPc/PEP.pyx":581
  *         """
  *         cdef PetscInt ival1 = 0
  *         cdef PetscInt ival2 = 0             # <<<<<<<<<<<<<<
@@ -40766,7 +43049,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_50getDimensions(struct PySlepcPE
  */
   __pyx_v_ival2 = 0;
 
-  /* "SLEPc/PEP.pyx":548
+  /* "SLEPc/PEP.pyx":582
  *         cdef PetscInt ival1 = 0
  *         cdef PetscInt ival2 = 0
  *         cdef PetscInt ival3 = 0             # <<<<<<<<<<<<<<
@@ -40775,16 +43058,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_50getDimensions(struct PySlepcPE
  */
   __pyx_v_ival3 = 0;
 
-  /* "SLEPc/PEP.pyx":549
+  /* "SLEPc/PEP.pyx":583
  *         cdef PetscInt ival2 = 0
  *         cdef PetscInt ival3 = 0
  *         CHKERR( PEPGetDimensions(self.pep, &ival1, &ival2, &ival3) )             # <<<<<<<<<<<<<<
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetDimensions(__pyx_v_self->pep, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_ival3))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 549, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetDimensions(__pyx_v_self->pep, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_ival3))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 583, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":550
+  /* "SLEPc/PEP.pyx":584
  *         cdef PetscInt ival3 = 0
  *         CHKERR( PEPGetDimensions(self.pep, &ival1, &ival2, &ival3) )
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))             # <<<<<<<<<<<<<<
@@ -40792,13 +43075,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_50getDimensions(struct PySlepcPE
  *     def setDimensions(self, nev=None, ncv=None, mpd=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 550, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 584, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 550, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 584, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival3); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 550, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival3); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 584, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 550, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 584, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
@@ -40813,7 +43096,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_50getDimensions(struct PySlepcPE
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":532
+  /* "SLEPc/PEP.pyx":566
  *         CHKERR( PEPSetTrackAll(self.pep, tval) )
  * 
  *     def getDimensions(self):             # <<<<<<<<<<<<<<
@@ -40835,7 +43118,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_50getDimensions(struct PySlepcPE
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":552
+/* "SLEPc/PEP.pyx":586
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  *     def setDimensions(self, nev=None, ncv=None, mpd=None):             # <<<<<<<<<<<<<<
@@ -40844,9 +43127,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_50getDimensions(struct PySlepcPE
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_53setDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_52setDimensions[] = "PEP.setDimensions(self, nev=None, ncv=None, mpd=None)\n\n        Sets the number of eigenvalues to compute and the dimension of\n        the subspace.\n\n        Parameters\n        ----------\n        nev: int, optional\n            Number of eigenvalues to compute.\n        ncv: int, optional\n            Maximum dimension of the subspace to be used by the\n            solver.\n        mpd: int, optional\n            Maxi [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_53setDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_57setDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_56setDimensions[] = "PEP.setDimensions(self, nev=None, ncv=None, mpd=None)\n\n        Sets the number of eigenvalues to compute and the dimension of\n        the subspace.\n\n        Parameters\n        ----------\n        nev: int, optional\n            Number of eigenvalues to compute.\n        ncv: int, optional\n            Maximum dimension of the subspace to be used by the\n            solver.\n        mpd: int, optional\n            Maxi [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_57setDimensions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_nev = 0;
   PyObject *__pyx_v_ncv = 0;
   PyObject *__pyx_v_mpd = 0;
@@ -40864,8 +43147,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_53setDimensions(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -40876,11 +43162,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_53setDimensions(PyObject *__pyx_
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nev);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ncv);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mpd);
@@ -40888,13 +43176,16 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_53setDimensions(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDimensions") < 0)) __PYX_ERR(15, 552, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDimensions") < 0)) __PYX_ERR(16, 586, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -40905,20 +43196,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_53setDimensions(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setDimensions", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 552, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setDimensions", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 586, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setDimensions", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_52setDimensions(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_nev, __pyx_v_ncv, __pyx_v_mpd);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_56setDimensions(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_nev, __pyx_v_ncv, __pyx_v_mpd);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_52setDimensions(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_nev, PyObject *__pyx_v_ncv, PyObject *__pyx_v_mpd) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_56setDimensions(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_nev, PyObject *__pyx_v_ncv, PyObject *__pyx_v_mpd) {
   PetscInt __pyx_v_ival1;
   PetscInt __pyx_v_ival2;
   PetscInt __pyx_v_ival3;
@@ -40930,7 +43221,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_52setDimensions(struct PySlepcPE
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("setDimensions", 0);
 
-  /* "SLEPc/PEP.pyx":567
+  /* "SLEPc/PEP.pyx":601
  *             Maximum dimension allowed for the projected problem.
  *         """
  *         cdef PetscInt ival1 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -40939,7 +43230,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_52setDimensions(struct PySlepcPE
  */
   __pyx_v_ival1 = PETSC_DEFAULT;
 
-  /* "SLEPc/PEP.pyx":568
+  /* "SLEPc/PEP.pyx":602
  *         """
  *         cdef PetscInt ival1 = PETSC_DEFAULT
  *         cdef PetscInt ival2 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -40948,7 +43239,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_52setDimensions(struct PySlepcPE
  */
   __pyx_v_ival2 = PETSC_DEFAULT;
 
-  /* "SLEPc/PEP.pyx":569
+  /* "SLEPc/PEP.pyx":603
  *         cdef PetscInt ival1 = PETSC_DEFAULT
  *         cdef PetscInt ival2 = PETSC_DEFAULT
  *         cdef PetscInt ival3 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -40957,7 +43248,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_52setDimensions(struct PySlepcPE
  */
   __pyx_v_ival3 = PETSC_DEFAULT;
 
-  /* "SLEPc/PEP.pyx":570
+  /* "SLEPc/PEP.pyx":604
  *         cdef PetscInt ival2 = PETSC_DEFAULT
  *         cdef PetscInt ival3 = PETSC_DEFAULT
  *         if nev is not None: ival1 = asInt(nev)             # <<<<<<<<<<<<<<
@@ -40967,11 +43258,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_52setDimensions(struct PySlepcPE
   __pyx_t_1 = (__pyx_v_nev != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_nev); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(15, 570, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_nev); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(16, 604, __pyx_L1_error)
     __pyx_v_ival1 = __pyx_t_3;
   }
 
-  /* "SLEPc/PEP.pyx":571
+  /* "SLEPc/PEP.pyx":605
  *         cdef PetscInt ival3 = PETSC_DEFAULT
  *         if nev is not None: ival1 = asInt(nev)
  *         if ncv is not None: ival2 = asInt(ncv)             # <<<<<<<<<<<<<<
@@ -40981,11 +43272,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_52setDimensions(struct PySlepcPE
   __pyx_t_2 = (__pyx_v_ncv != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_ncv); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(15, 571, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_ncv); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(16, 605, __pyx_L1_error)
     __pyx_v_ival2 = __pyx_t_3;
   }
 
-  /* "SLEPc/PEP.pyx":572
+  /* "SLEPc/PEP.pyx":606
  *         if nev is not None: ival1 = asInt(nev)
  *         if ncv is not None: ival2 = asInt(ncv)
  *         if mpd is not None: ival3 = asInt(mpd)             # <<<<<<<<<<<<<<
@@ -40995,20 +43286,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_52setDimensions(struct PySlepcPE
   __pyx_t_1 = (__pyx_v_mpd != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_mpd); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(15, 572, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_mpd); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(16, 606, __pyx_L1_error)
     __pyx_v_ival3 = __pyx_t_3;
   }
 
-  /* "SLEPc/PEP.pyx":573
+  /* "SLEPc/PEP.pyx":607
  *         if ncv is not None: ival2 = asInt(ncv)
  *         if mpd is not None: ival3 = asInt(mpd)
  *         CHKERR( PEPSetDimensions(self.pep, ival1, ival2, ival3) )             # <<<<<<<<<<<<<<
  * 
  *     def getST(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetDimensions(__pyx_v_self->pep, __pyx_v_ival1, __pyx_v_ival2, __pyx_v_ival3)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(15, 573, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetDimensions(__pyx_v_self->pep, __pyx_v_ival1, __pyx_v_ival2, __pyx_v_ival3)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(16, 607, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":552
+  /* "SLEPc/PEP.pyx":586
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  *     def setDimensions(self, nev=None, ncv=None, mpd=None):             # <<<<<<<<<<<<<<
@@ -41028,7 +43319,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_52setDimensions(struct PySlepcPE
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":575
+/* "SLEPc/PEP.pyx":609
  *         CHKERR( PEPSetDimensions(self.pep, ival1, ival2, ival3) )
  * 
  *     def getST(self):             # <<<<<<<<<<<<<<
@@ -41037,23 +43328,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_52setDimensions(struct PySlepcPE
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_55getST(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_54getST[] = "PEP.getST(self)\n\n        Obtain the spectral transformation (`ST`) object associated to\n        the eigensolver object.\n\n        Returns\n        -------\n        st: ST\n            The spectral transformation.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_55getST(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_59getST(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_58getST[] = "PEP.getST(self)\n\n        Obtain the spectral transformation (`ST`) object associated to\n        the eigensolver object.\n\n        Returns\n        -------\n        st: ST\n            The spectral transformation.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_59getST(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getST (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getST", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getST", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_54getST(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_58getST(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_54getST(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getST(struct PySlepcPEPObject *__pyx_v_self) {
   struct PySlepcSTObject *__pyx_v_st = 0;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -41061,28 +43352,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_54getST(struct PySlepcPEPObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getST", 0);
 
-  /* "SLEPc/PEP.pyx":585
+  /* "SLEPc/PEP.pyx":619
  *             The spectral transformation.
  *         """
  *         cdef ST st = ST()             # <<<<<<<<<<<<<<
  *         CHKERR( PEPGetST(self.pep, &st.st) )
  *         PetscINCREF(st.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_ST), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 585, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_ST), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 619, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_st = ((struct PySlepcSTObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/PEP.pyx":586
+  /* "SLEPc/PEP.pyx":620
  *         """
  *         cdef ST st = ST()
  *         CHKERR( PEPGetST(self.pep, &st.st) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(st.obj)
  *         return st
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetST(__pyx_v_self->pep, (&__pyx_v_st->st))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 586, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetST(__pyx_v_self->pep, (&__pyx_v_st->st))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 620, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":587
+  /* "SLEPc/PEP.pyx":621
  *         cdef ST st = ST()
  *         CHKERR( PEPGetST(self.pep, &st.st) )
  *         PetscINCREF(st.obj)             # <<<<<<<<<<<<<<
@@ -41091,19 +43382,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_54getST(struct PySlepcPEPObject
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_st->__pyx_base.obj);
 
-  /* "SLEPc/PEP.pyx":588
+  /* "SLEPc/PEP.pyx":622
  *         CHKERR( PEPGetST(self.pep, &st.st) )
  *         PetscINCREF(st.obj)
  *         return st             # <<<<<<<<<<<<<<
  * 
- *     def setST(self, ST st not None):
+ *     def setST(self, ST st):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_st));
   __pyx_r = ((PyObject *)__pyx_v_st);
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":575
+  /* "SLEPc/PEP.pyx":609
  *         CHKERR( PEPSetDimensions(self.pep, ival1, ival2, ival3) )
  * 
  *     def getST(self):             # <<<<<<<<<<<<<<
@@ -41123,18 +43414,18 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_54getST(struct PySlepcPEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":590
+/* "SLEPc/PEP.pyx":624
  *         return st
  * 
- *     def setST(self, ST st not None):             # <<<<<<<<<<<<<<
+ *     def setST(self, ST st):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a spectral transformation object to the
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_57setST(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_56setST[] = "PEP.setST(self, ST st)\n\n        Associates a spectral transformation object to the\n        eigensolver.\n\n        Parameters\n        ----------\n        st: ST\n            The spectral transformation.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_57setST(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_61setST(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_60setST[] = "PEP.setST(self, ST st)\n\n        Associates a spectral transformation object to the\n        eigensolver.\n\n        Parameters\n        ----------\n        st: ST\n            The spectral transformation.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_61setST(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   struct PySlepcSTObject *__pyx_v_st = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -41147,6 +43438,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_57setST(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -41157,7 +43449,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_57setST(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setST") < 0)) __PYX_ERR(15, 590, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setST") < 0)) __PYX_ERR(16, 624, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -41168,14 +43460,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_57setST(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setST", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 590, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setST", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 624, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setST", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_st), __pyx_ptype_8slepc4py_5SLEPc_ST, 0, "st", 0))) __PYX_ERR(15, 590, __pyx_L1_error)
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_56setST(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_st);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_st), __pyx_ptype_8slepc4py_5SLEPc_ST, 0, "st", 0))) __PYX_ERR(16, 624, __pyx_L1_error)
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_60setST(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_st);
 
   /* function exit code */
   goto __pyx_L0;
@@ -41186,25 +43478,25 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_57setST(PyObject *__pyx_v_self,
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_56setST(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcSTObject *__pyx_v_st) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setST(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcSTObject *__pyx_v_st) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setST", 0);
 
-  /* "SLEPc/PEP.pyx":600
+  /* "SLEPc/PEP.pyx":634
  *             The spectral transformation.
  *         """
  *         CHKERR( PEPSetST(self.pep, st.st) )             # <<<<<<<<<<<<<<
  * 
  *     def getScale(self, Vec Dl=None, Vec Dr=None):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetST(__pyx_v_self->pep, __pyx_v_st->st)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 600, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetST(__pyx_v_self->pep, __pyx_v_st->st)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 634, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":590
+  /* "SLEPc/PEP.pyx":624
  *         return st
  * 
- *     def setST(self, ST st not None):             # <<<<<<<<<<<<<<
+ *     def setST(self, ST st):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a spectral transformation object to the
  */
@@ -41221,7 +43513,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_56setST(struct PySlepcPEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":602
+/* "SLEPc/PEP.pyx":636
  *         CHKERR( PEPSetST(self.pep, st.st) )
  * 
  *     def getScale(self, Vec Dl=None, Vec Dr=None):             # <<<<<<<<<<<<<<
@@ -41230,9 +43522,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_56setST(struct PySlepcPEPObject
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_59getScale(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_58getScale[] = "PEP.getScale(self, Vec Dl=None, Vec Dr=None)\n\n        Gets the strategy used for scaling the polynomial eigenproblem.\n\n        Parameters\n        ----------\n        Dl: Vec, optional\n            Placeholder for the returned left diagonal matrix.\n        Dr: Vec, optional\n            Placeholder for the returned right diagonal matrix.\n\n        Returns\n        -------\n        scale: `PEP.Scale` enumerate\n             [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_59getScale(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_63getScale(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_62getScale[] = "PEP.getScale(self, Vec Dl=None, Vec Dr=None)\n\n        Gets the strategy used for scaling the polynomial eigenproblem.\n\n        Parameters\n        ----------\n        Dl: Vec, optional\n            Placeholder for the returned left diagonal matrix.\n        Dr: Vec, optional\n            Placeholder for the returned right diagonal matrix.\n\n        Returns\n        -------\n        scale: `PEP.Scale` enumerate\n             [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_63getScale(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   struct PyPetscVecObject *__pyx_v_Dl = 0;
   struct PyPetscVecObject *__pyx_v_Dr = 0;
   PyObject *__pyx_r = 0;
@@ -41248,7 +43540,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_59getScale(PyObject *__pyx_v_sel
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -41259,6 +43553,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_59getScale(PyObject *__pyx_v_sel
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Dl);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Dr);
@@ -41266,12 +43561,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_59getScale(PyObject *__pyx_v_sel
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getScale") < 0)) __PYX_ERR(15, 602, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getScale") < 0)) __PYX_ERR(16, 636, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -41281,15 +43578,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_59getScale(PyObject *__pyx_v_sel
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getScale", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 602, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getScale", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 636, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.getScale", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Dl), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Dl", 0))) __PYX_ERR(15, 602, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Dr), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Dr", 0))) __PYX_ERR(15, 602, __pyx_L1_error)
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_Dl, __pyx_v_Dr);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Dl), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Dl", 0))) __PYX_ERR(16, 636, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Dr), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Dr", 0))) __PYX_ERR(16, 636, __pyx_L1_error)
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_62getScale(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_Dl, __pyx_v_Dr);
 
   /* function exit code */
   goto __pyx_L0;
@@ -41300,7 +43597,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_59getScale(PyObject *__pyx_v_sel
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObject *__pyx_v_self, struct PyPetscVecObject *__pyx_v_Dl, struct PyPetscVecObject *__pyx_v_Dr) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_62getScale(struct PySlepcPEPObject *__pyx_v_self, struct PyPetscVecObject *__pyx_v_Dl, struct PyPetscVecObject *__pyx_v_Dr) {
   PEPScale __pyx_v_scale;
   PetscReal __pyx_v_alpha;
   PetscInt __pyx_v_its;
@@ -41318,7 +43615,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("getScale", 0);
 
-  /* "SLEPc/PEP.pyx":624
+  /* "SLEPc/PEP.pyx":658
  *             Approximation of the wanted eigenvalues (modulus).
  *         """
  *         cdef SlepcPEPScale scale = PEP_SCALE_NONE             # <<<<<<<<<<<<<<
@@ -41327,7 +43624,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
  */
   __pyx_v_scale = PEP_SCALE_NONE;
 
-  /* "SLEPc/PEP.pyx":625
+  /* "SLEPc/PEP.pyx":659
  *         """
  *         cdef SlepcPEPScale scale = PEP_SCALE_NONE
  *         cdef PetscReal alpha = 0             # <<<<<<<<<<<<<<
@@ -41336,7 +43633,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
  */
   __pyx_v_alpha = 0.0;
 
-  /* "SLEPc/PEP.pyx":626
+  /* "SLEPc/PEP.pyx":660
  *         cdef SlepcPEPScale scale = PEP_SCALE_NONE
  *         cdef PetscReal alpha = 0
  *         cdef PetscInt its = 0             # <<<<<<<<<<<<<<
@@ -41345,7 +43642,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
  */
   __pyx_v_its = 0;
 
-  /* "SLEPc/PEP.pyx":627
+  /* "SLEPc/PEP.pyx":661
  *         cdef PetscReal alpha = 0
  *         cdef PetscInt its = 0
  *         cdef PetscReal lbda = 0             # <<<<<<<<<<<<<<
@@ -41354,7 +43651,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
  */
   __pyx_v_lbda = 0.0;
 
-  /* "SLEPc/PEP.pyx":628
+  /* "SLEPc/PEP.pyx":662
  *         cdef PetscInt its = 0
  *         cdef PetscReal lbda = 0
  *         cdef PetscVec vecl = NULL             # <<<<<<<<<<<<<<
@@ -41363,7 +43660,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
  */
   __pyx_v_vecl = NULL;
 
-  /* "SLEPc/PEP.pyx":629
+  /* "SLEPc/PEP.pyx":663
  *         cdef PetscReal lbda = 0
  *         cdef PetscVec vecl = NULL
  *         cdef PetscVec vecr = NULL             # <<<<<<<<<<<<<<
@@ -41372,16 +43669,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
  */
   __pyx_v_vecr = NULL;
 
-  /* "SLEPc/PEP.pyx":630
+  /* "SLEPc/PEP.pyx":664
  *         cdef PetscVec vecl = NULL
  *         cdef PetscVec vecr = NULL
  *         CHKERR( PEPGetScale(self.pep, &scale, &alpha, &vecl, &vecr, &its, &lbda) )             # <<<<<<<<<<<<<<
  *         if Dl.vec != NULL:
  *             if vecl != NULL:
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetScale(__pyx_v_self->pep, (&__pyx_v_scale), (&__pyx_v_alpha), (&__pyx_v_vecl), (&__pyx_v_vecr), (&__pyx_v_its), (&__pyx_v_lbda))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 630, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetScale(__pyx_v_self->pep, (&__pyx_v_scale), (&__pyx_v_alpha), (&__pyx_v_vecl), (&__pyx_v_vecr), (&__pyx_v_its), (&__pyx_v_lbda))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 664, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":631
+  /* "SLEPc/PEP.pyx":665
  *         cdef PetscVec vecr = NULL
  *         CHKERR( PEPGetScale(self.pep, &scale, &alpha, &vecl, &vecr, &its, &lbda) )
  *         if Dl.vec != NULL:             # <<<<<<<<<<<<<<
@@ -41391,7 +43688,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
   __pyx_t_2 = ((__pyx_v_Dl->vec != NULL) != 0);
   if (__pyx_t_2) {
 
-    /* "SLEPc/PEP.pyx":632
+    /* "SLEPc/PEP.pyx":666
  *         CHKERR( PEPGetScale(self.pep, &scale, &alpha, &vecl, &vecr, &its, &lbda) )
  *         if Dl.vec != NULL:
  *             if vecl != NULL:             # <<<<<<<<<<<<<<
@@ -41401,16 +43698,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
     __pyx_t_2 = ((__pyx_v_vecl != NULL) != 0);
     if (__pyx_t_2) {
 
-      /* "SLEPc/PEP.pyx":633
+      /* "SLEPc/PEP.pyx":667
  *         if Dl.vec != NULL:
  *             if vecl != NULL:
  *                 CHKERR( VecCopy(vecl, Dl.vec) )             # <<<<<<<<<<<<<<
  *             else:
  *                 CHKERR( VecSet(Dl.vec, 1.0) )
  */
-      __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecCopy(__pyx_v_vecl, __pyx_v_Dl->vec)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 633, __pyx_L1_error)
+      __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecCopy(__pyx_v_vecl, __pyx_v_Dl->vec)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 667, __pyx_L1_error)
 
-      /* "SLEPc/PEP.pyx":632
+      /* "SLEPc/PEP.pyx":666
  *         CHKERR( PEPGetScale(self.pep, &scale, &alpha, &vecl, &vecr, &its, &lbda) )
  *         if Dl.vec != NULL:
  *             if vecl != NULL:             # <<<<<<<<<<<<<<
@@ -41420,7 +43717,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
       goto __pyx_L4;
     }
 
-    /* "SLEPc/PEP.pyx":635
+    /* "SLEPc/PEP.pyx":669
  *                 CHKERR( VecCopy(vecl, Dl.vec) )
  *             else:
  *                 CHKERR( VecSet(Dl.vec, 1.0) )             # <<<<<<<<<<<<<<
@@ -41428,11 +43725,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
  *             if vecr != NULL:
  */
     /*else*/ {
-      __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecSet(__pyx_v_Dl->vec, 1.0)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 635, __pyx_L1_error)
+      __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecSet(__pyx_v_Dl->vec, 1.0)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 669, __pyx_L1_error)
     }
     __pyx_L4:;
 
-    /* "SLEPc/PEP.pyx":631
+    /* "SLEPc/PEP.pyx":665
  *         cdef PetscVec vecr = NULL
  *         CHKERR( PEPGetScale(self.pep, &scale, &alpha, &vecl, &vecr, &its, &lbda) )
  *         if Dl.vec != NULL:             # <<<<<<<<<<<<<<
@@ -41441,7 +43738,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
  */
   }
 
-  /* "SLEPc/PEP.pyx":636
+  /* "SLEPc/PEP.pyx":670
  *             else:
  *                 CHKERR( VecSet(Dl.vec, 1.0) )
  *         if Dr.vec != NULL:             # <<<<<<<<<<<<<<
@@ -41451,7 +43748,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
   __pyx_t_2 = ((__pyx_v_Dr->vec != NULL) != 0);
   if (__pyx_t_2) {
 
-    /* "SLEPc/PEP.pyx":637
+    /* "SLEPc/PEP.pyx":671
  *                 CHKERR( VecSet(Dl.vec, 1.0) )
  *         if Dr.vec != NULL:
  *             if vecr != NULL:             # <<<<<<<<<<<<<<
@@ -41461,16 +43758,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
     __pyx_t_2 = ((__pyx_v_vecr != NULL) != 0);
     if (__pyx_t_2) {
 
-      /* "SLEPc/PEP.pyx":638
+      /* "SLEPc/PEP.pyx":672
  *         if Dr.vec != NULL:
  *             if vecr != NULL:
  *                 CHKERR( VecCopy(vecr, Dr.vec) )             # <<<<<<<<<<<<<<
  *             else:
  *                 CHKERR( VecSet(Dr.vec, 1.0) )
  */
-      __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecCopy(__pyx_v_vecr, __pyx_v_Dr->vec)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 638, __pyx_L1_error)
+      __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecCopy(__pyx_v_vecr, __pyx_v_Dr->vec)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 672, __pyx_L1_error)
 
-      /* "SLEPc/PEP.pyx":637
+      /* "SLEPc/PEP.pyx":671
  *                 CHKERR( VecSet(Dl.vec, 1.0) )
  *         if Dr.vec != NULL:
  *             if vecr != NULL:             # <<<<<<<<<<<<<<
@@ -41480,7 +43777,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
       goto __pyx_L6;
     }
 
-    /* "SLEPc/PEP.pyx":640
+    /* "SLEPc/PEP.pyx":674
  *                 CHKERR( VecCopy(vecr, Dr.vec) )
  *             else:
  *                 CHKERR( VecSet(Dr.vec, 1.0) )             # <<<<<<<<<<<<<<
@@ -41488,11 +43785,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
  *         CHKERR( VecDestroy(&vecr) )
  */
     /*else*/ {
-      __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecSet(__pyx_v_Dr->vec, 1.0)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 640, __pyx_L1_error)
+      __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecSet(__pyx_v_Dr->vec, 1.0)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 674, __pyx_L1_error)
     }
     __pyx_L6:;
 
-    /* "SLEPc/PEP.pyx":636
+    /* "SLEPc/PEP.pyx":670
  *             else:
  *                 CHKERR( VecSet(Dl.vec, 1.0) )
  *         if Dr.vec != NULL:             # <<<<<<<<<<<<<<
@@ -41501,25 +43798,25 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
  */
   }
 
-  /* "SLEPc/PEP.pyx":641
+  /* "SLEPc/PEP.pyx":675
  *             else:
  *                 CHKERR( VecSet(Dr.vec, 1.0) )
  *         CHKERR( VecDestroy(&vecl) )             # <<<<<<<<<<<<<<
  *         CHKERR( VecDestroy(&vecr) )
  *         return (scale, toReal(alpha), toInt(its), toReal(lbda))
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecDestroy((&__pyx_v_vecl))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 641, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecDestroy((&__pyx_v_vecl))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 675, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":642
+  /* "SLEPc/PEP.pyx":676
  *                 CHKERR( VecSet(Dr.vec, 1.0) )
  *         CHKERR( VecDestroy(&vecl) )
  *         CHKERR( VecDestroy(&vecr) )             # <<<<<<<<<<<<<<
  *         return (scale, toReal(alpha), toInt(its), toReal(lbda))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecDestroy((&__pyx_v_vecr))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 642, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(VecDestroy((&__pyx_v_vecr))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 676, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":643
+  /* "SLEPc/PEP.pyx":677
  *         CHKERR( VecDestroy(&vecl) )
  *         CHKERR( VecDestroy(&vecr) )
  *         return (scale, toReal(alpha), toInt(its), toReal(lbda))             # <<<<<<<<<<<<<<
@@ -41527,15 +43824,15 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
  *     def setScale(self, scale, alpha=None, Vec Dl=None, Vec Dr=None, its=None, lbda=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_PyInt_From_PEPScale(__pyx_v_scale); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 643, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_PEPScale(__pyx_v_scale); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 677, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_alpha); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 643, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_alpha); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 677, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_its); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 643, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_its); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 677, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_lbda); if (unlikely(!__pyx_t_6)) __PYX_ERR(15, 643, __pyx_L1_error)
+  __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_lbda); if (unlikely(!__pyx_t_6)) __PYX_ERR(16, 677, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 643, __pyx_L1_error)
+  __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 677, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_GIVEREF(__pyx_t_3);
   PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
@@ -41553,7 +43850,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
   __pyx_t_7 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":602
+  /* "SLEPc/PEP.pyx":636
  *         CHKERR( PEPSetST(self.pep, st.st) )
  * 
  *     def getScale(self, Vec Dl=None, Vec Dr=None):             # <<<<<<<<<<<<<<
@@ -41576,7 +43873,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":645
+/* "SLEPc/PEP.pyx":679
  *         return (scale, toReal(alpha), toInt(its), toReal(lbda))
  * 
  *     def setScale(self, scale, alpha=None, Vec Dl=None, Vec Dr=None, its=None, lbda=None):             # <<<<<<<<<<<<<<
@@ -41585,9 +43882,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_58getScale(struct PySlepcPEPObje
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_61setScale(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_60setScale[] = "PEP.setScale(self, scale, alpha=None, Vec Dl=None, Vec Dr=None, its=None, lbda=None)\n\n        Sets the scaling strategy to be used for scaling the polynomial problem\n        before attempting to solve.\n\n        Parameters\n        ----------\n        scale: `PEP.Scale` enumerate\n            The scaling strategy.\n        alpha: real, optional\n            The scaling factor.\n        Dl: Vec, optional\n            The left [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_61setScale(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_65setScale(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_64setScale[] = "PEP.setScale(self, scale, alpha=None, Vec Dl=None, Vec Dr=None, its=None, lbda=None)\n\n        Sets the scaling strategy to be used for scaling the polynomial problem\n        before attempting to solve.\n\n        Parameters\n        ----------\n        scale: `PEP.Scale` enumerate\n            The scaling strategy.\n        alpha: real, optional\n            The scaling factor.\n        Dl: Vec, optional\n            The left [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_65setScale(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_scale = 0;
   PyObject *__pyx_v_alpha = 0;
   struct PyPetscVecObject *__pyx_v_Dl = 0;
@@ -41610,11 +43907,17 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_61setScale(PyObject *__pyx_v_sel
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -41623,26 +43926,31 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_61setScale(PyObject *__pyx_v_sel
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_scale)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_alpha);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Dl);
           if (value) { values[2] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  3:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Dr);
           if (value) { values[3] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  4:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_its);
           if (value) { values[4] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  5:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_lbda);
@@ -41650,15 +43958,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_61setScale(PyObject *__pyx_v_sel
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setScale") < 0)) __PYX_ERR(15, 645, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setScale") < 0)) __PYX_ERR(16, 679, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
@@ -41673,15 +43986,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_61setScale(PyObject *__pyx_v_sel
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setScale", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 645, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setScale", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 679, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setScale", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Dl), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Dl", 0))) __PYX_ERR(15, 645, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Dr), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Dr", 0))) __PYX_ERR(15, 645, __pyx_L1_error)
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_scale, __pyx_v_alpha, __pyx_v_Dl, __pyx_v_Dr, __pyx_v_its, __pyx_v_lbda);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Dl), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Dl", 0))) __PYX_ERR(16, 679, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Dr), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Dr", 0))) __PYX_ERR(16, 679, __pyx_L1_error)
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_64setScale(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_scale, __pyx_v_alpha, __pyx_v_Dl, __pyx_v_Dr, __pyx_v_its, __pyx_v_lbda);
 
   /* function exit code */
   goto __pyx_L0;
@@ -41692,7 +44005,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_61setScale(PyObject *__pyx_v_sel
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_scale, PyObject *__pyx_v_alpha, struct PyPetscVecObject *__pyx_v_Dl, struct PyPetscVecObject *__pyx_v_Dr, PyObject *__pyx_v_its, PyObject *__pyx_v_lbda) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_64setScale(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_scale, PyObject *__pyx_v_alpha, struct PyPetscVecObject *__pyx_v_Dl, struct PyPetscVecObject *__pyx_v_Dr, PyObject *__pyx_v_its, PyObject *__pyx_v_lbda) {
   PEPScale __pyx_v_senum;
   PetscReal __pyx_v_rval1;
   PetscInt __pyx_v_ival;
@@ -41710,17 +44023,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObje
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("setScale", 0);
 
-  /* "SLEPc/PEP.pyx":665
+  /* "SLEPc/PEP.pyx":699
  *             Approximation of the wanted eigenvalues (modulus).
  *         """
  *         cdef SlepcPEPScale senum = scale             # <<<<<<<<<<<<<<
  *         cdef PetscReal rval1 = PETSC_DEFAULT
  *         cdef PetscInt ival = PETSC_DEFAULT
  */
-  __pyx_t_1 = ((PEPScale)__Pyx_PyInt_As_PEPScale(__pyx_v_scale)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 665, __pyx_L1_error)
+  __pyx_t_1 = ((PEPScale)__Pyx_PyInt_As_PEPScale(__pyx_v_scale)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 699, __pyx_L1_error)
   __pyx_v_senum = __pyx_t_1;
 
-  /* "SLEPc/PEP.pyx":666
+  /* "SLEPc/PEP.pyx":700
  *         """
  *         cdef SlepcPEPScale senum = scale
  *         cdef PetscReal rval1 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -41729,7 +44042,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObje
  */
   __pyx_v_rval1 = PETSC_DEFAULT;
 
-  /* "SLEPc/PEP.pyx":667
+  /* "SLEPc/PEP.pyx":701
  *         cdef SlepcPEPScale senum = scale
  *         cdef PetscReal rval1 = PETSC_DEFAULT
  *         cdef PetscInt ival = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -41738,7 +44051,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObje
  */
   __pyx_v_ival = PETSC_DEFAULT;
 
-  /* "SLEPc/PEP.pyx":668
+  /* "SLEPc/PEP.pyx":702
  *         cdef PetscReal rval1 = PETSC_DEFAULT
  *         cdef PetscInt ival = PETSC_DEFAULT
  *         cdef PetscReal rval2 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -41747,7 +44060,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObje
  */
   __pyx_v_rval2 = PETSC_DEFAULT;
 
-  /* "SLEPc/PEP.pyx":669
+  /* "SLEPc/PEP.pyx":703
  *         cdef PetscInt ival = PETSC_DEFAULT
  *         cdef PetscReal rval2 = PETSC_DEFAULT
  *         cdef PetscVec vecl = NULL             # <<<<<<<<<<<<<<
@@ -41756,7 +44069,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObje
  */
   __pyx_v_vecl = NULL;
 
-  /* "SLEPc/PEP.pyx":670
+  /* "SLEPc/PEP.pyx":704
  *         cdef PetscReal rval2 = PETSC_DEFAULT
  *         cdef PetscVec vecl = NULL
  *         cdef PetscVec vecr = NULL             # <<<<<<<<<<<<<<
@@ -41765,7 +44078,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObje
  */
   __pyx_v_vecr = NULL;
 
-  /* "SLEPc/PEP.pyx":671
+  /* "SLEPc/PEP.pyx":705
  *         cdef PetscVec vecl = NULL
  *         cdef PetscVec vecr = NULL
  *         if alpha is not None: rval1 = asReal(alpha)             # <<<<<<<<<<<<<<
@@ -41775,11 +44088,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObje
   __pyx_t_2 = (__pyx_v_alpha != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_alpha); if (unlikely(__pyx_t_4 == -1.0 && PyErr_Occurred())) __PYX_ERR(15, 671, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_alpha); if (unlikely(__pyx_t_4 == ((PetscReal)-1.0) && PyErr_Occurred())) __PYX_ERR(16, 705, __pyx_L1_error)
     __pyx_v_rval1 = __pyx_t_4;
   }
 
-  /* "SLEPc/PEP.pyx":672
+  /* "SLEPc/PEP.pyx":706
  *         cdef PetscVec vecr = NULL
  *         if alpha is not None: rval1 = asReal(alpha)
  *         if Dl is not None:    vecl = Dl.vec             # <<<<<<<<<<<<<<
@@ -41793,7 +44106,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObje
     __pyx_v_vecl = __pyx_t_5;
   }
 
-  /* "SLEPc/PEP.pyx":673
+  /* "SLEPc/PEP.pyx":707
  *         if alpha is not None: rval1 = asReal(alpha)
  *         if Dl is not None:    vecl = Dl.vec
  *         if Dr is not None:    vecr = Dr.vec             # <<<<<<<<<<<<<<
@@ -41807,7 +44120,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObje
     __pyx_v_vecr = __pyx_t_5;
   }
 
-  /* "SLEPc/PEP.pyx":674
+  /* "SLEPc/PEP.pyx":708
  *         if Dl is not None:    vecl = Dl.vec
  *         if Dr is not None:    vecr = Dr.vec
  *         if its is not None:   ival = asInt(its)             # <<<<<<<<<<<<<<
@@ -41817,11 +44130,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObje
   __pyx_t_3 = (__pyx_v_its != Py_None);
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
-    __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_its); if (unlikely(__pyx_t_6 == -1L && PyErr_Occurred())) __PYX_ERR(15, 674, __pyx_L1_error)
+    __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_its); if (unlikely(__pyx_t_6 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(16, 708, __pyx_L1_error)
     __pyx_v_ival = __pyx_t_6;
   }
 
-  /* "SLEPc/PEP.pyx":675
+  /* "SLEPc/PEP.pyx":709
  *         if Dr is not None:    vecr = Dr.vec
  *         if its is not None:   ival = asInt(its)
  *         if lbda is not None:  rval2 = asReal(lbda)             # <<<<<<<<<<<<<<
@@ -41831,20 +44144,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObje
   __pyx_t_2 = (__pyx_v_lbda != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_lbda); if (unlikely(__pyx_t_4 == -1.0 && PyErr_Occurred())) __PYX_ERR(15, 675, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_lbda); if (unlikely(__pyx_t_4 == ((PetscReal)-1.0) && PyErr_Occurred())) __PYX_ERR(16, 709, __pyx_L1_error)
     __pyx_v_rval2 = __pyx_t_4;
   }
 
-  /* "SLEPc/PEP.pyx":676
+  /* "SLEPc/PEP.pyx":710
  *         if its is not None:   ival = asInt(its)
  *         if lbda is not None:  rval2 = asReal(lbda)
  *         CHKERR( PEPSetScale(self.pep, senum, rval1, vecl, vecr, ival, rval2) )             # <<<<<<<<<<<<<<
  * 
  *     def getBV(self):
  */
-  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetScale(__pyx_v_self->pep, __pyx_v_senum, __pyx_v_rval1, __pyx_v_vecl, __pyx_v_vecr, __pyx_v_ival, __pyx_v_rval2)); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(15, 676, __pyx_L1_error)
+  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetScale(__pyx_v_self->pep, __pyx_v_senum, __pyx_v_rval1, __pyx_v_vecl, __pyx_v_vecr, __pyx_v_ival, __pyx_v_rval2)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(16, 710, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":645
+  /* "SLEPc/PEP.pyx":679
  *         return (scale, toReal(alpha), toInt(its), toReal(lbda))
  * 
  *     def setScale(self, scale, alpha=None, Vec Dl=None, Vec Dr=None, its=None, lbda=None):             # <<<<<<<<<<<<<<
@@ -41864,7 +44177,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObje
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":678
+/* "SLEPc/PEP.pyx":712
  *         CHKERR( PEPSetScale(self.pep, senum, rval1, vecl, vecr, ival, rval2) )
  * 
  *     def getBV(self):             # <<<<<<<<<<<<<<
@@ -41873,23 +44186,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_60setScale(struct PySlepcPEPObje
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_63getBV(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_62getBV[] = "PEP.getBV(self)\n\n        Obtain the basis vectors object associated to the eigensolver.\n\n        Returns\n        -------\n        bv: BV\n            The basis vectors context.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_63getBV(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_67getBV(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_66getBV[] = "PEP.getBV(self)\n\n        Obtain the basis vectors object associated to the eigensolver.\n\n        Returns\n        -------\n        bv: BV\n            The basis vectors context.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_67getBV(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getBV (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getBV", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getBV", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_62getBV(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_66getBV(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_62getBV(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_66getBV(struct PySlepcPEPObject *__pyx_v_self) {
   struct PySlepcBVObject *__pyx_v_bv = 0;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -41897,28 +44210,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_62getBV(struct PySlepcPEPObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getBV", 0);
 
-  /* "SLEPc/PEP.pyx":687
+  /* "SLEPc/PEP.pyx":721
  *             The basis vectors context.
  *         """
  *         cdef BV bv = BV()             # <<<<<<<<<<<<<<
  *         CHKERR( PEPGetBV(self.pep, &bv.bv) )
  *         PetscINCREF(bv.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 687, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 721, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bv = ((struct PySlepcBVObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/PEP.pyx":688
+  /* "SLEPc/PEP.pyx":722
  *         """
  *         cdef BV bv = BV()
  *         CHKERR( PEPGetBV(self.pep, &bv.bv) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(bv.obj)
  *         return bv
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetBV(__pyx_v_self->pep, (&__pyx_v_bv->bv))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 688, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetBV(__pyx_v_self->pep, (&__pyx_v_bv->bv))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 722, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":689
+  /* "SLEPc/PEP.pyx":723
  *         cdef BV bv = BV()
  *         CHKERR( PEPGetBV(self.pep, &bv.bv) )
  *         PetscINCREF(bv.obj)             # <<<<<<<<<<<<<<
@@ -41927,19 +44240,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_62getBV(struct PySlepcPEPObject
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_bv->__pyx_base.obj);
 
-  /* "SLEPc/PEP.pyx":690
+  /* "SLEPc/PEP.pyx":724
  *         CHKERR( PEPGetBV(self.pep, &bv.bv) )
  *         PetscINCREF(bv.obj)
  *         return bv             # <<<<<<<<<<<<<<
  * 
- *     def setBV(self, BV bv not None):
+ *     def setBV(self, BV bv):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_bv));
   __pyx_r = ((PyObject *)__pyx_v_bv);
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":678
+  /* "SLEPc/PEP.pyx":712
  *         CHKERR( PEPSetScale(self.pep, senum, rval1, vecl, vecr, ival, rval2) )
  * 
  *     def getBV(self):             # <<<<<<<<<<<<<<
@@ -41959,18 +44272,18 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_62getBV(struct PySlepcPEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":692
+/* "SLEPc/PEP.pyx":726
  *         return bv
  * 
- *     def setBV(self, BV bv not None):             # <<<<<<<<<<<<<<
+ *     def setBV(self, BV bv):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a basis vectors object to the eigensolver.
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_65setBV(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_64setBV[] = "PEP.setBV(self, BV bv)\n\n        Associates a basis vectors object to the eigensolver.\n\n        Parameters\n        ----------\n        bv: BV\n            The basis vectors context.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_65setBV(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_69setBV(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_68setBV[] = "PEP.setBV(self, BV bv)\n\n        Associates a basis vectors object to the eigensolver.\n\n        Parameters\n        ----------\n        bv: BV\n            The basis vectors context.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_69setBV(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   struct PySlepcBVObject *__pyx_v_bv = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -41983,6 +44296,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_65setBV(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -41993,7 +44307,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_65setBV(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBV") < 0)) __PYX_ERR(15, 692, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBV") < 0)) __PYX_ERR(16, 726, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -42004,14 +44318,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_65setBV(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setBV", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 692, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setBV", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 726, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setBV", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bv), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "bv", 0))) __PYX_ERR(15, 692, __pyx_L1_error)
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_64setBV(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_bv);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bv), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "bv", 0))) __PYX_ERR(16, 726, __pyx_L1_error)
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_68setBV(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_bv);
 
   /* function exit code */
   goto __pyx_L0;
@@ -42022,25 +44336,25 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_65setBV(PyObject *__pyx_v_self,
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_64setBV(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcBVObject *__pyx_v_bv) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_68setBV(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcBVObject *__pyx_v_bv) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setBV", 0);
 
-  /* "SLEPc/PEP.pyx":701
+  /* "SLEPc/PEP.pyx":735
  *             The basis vectors context.
  *         """
  *         CHKERR( PEPSetBV(self.pep, bv.bv) )             # <<<<<<<<<<<<<<
  * 
  *     def getRG(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetBV(__pyx_v_self->pep, __pyx_v_bv->bv)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 701, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetBV(__pyx_v_self->pep, __pyx_v_bv->bv)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 735, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":692
+  /* "SLEPc/PEP.pyx":726
  *         return bv
  * 
- *     def setBV(self, BV bv not None):             # <<<<<<<<<<<<<<
+ *     def setBV(self, BV bv):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a basis vectors object to the eigensolver.
  */
@@ -42057,7 +44371,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_64setBV(struct PySlepcPEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":703
+/* "SLEPc/PEP.pyx":737
  *         CHKERR( PEPSetBV(self.pep, bv.bv) )
  * 
  *     def getRG(self):             # <<<<<<<<<<<<<<
@@ -42066,23 +44380,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_64setBV(struct PySlepcPEPObject
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_67getRG(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_66getRG[] = "PEP.getRG(self)\n\n        Obtain the region object associated to the eigensolver.\n\n        Returns\n        -------\n        rg: RG\n            The region context.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_67getRG(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_71getRG(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_70getRG[] = "PEP.getRG(self)\n\n        Obtain the region object associated to the eigensolver.\n\n        Returns\n        -------\n        rg: RG\n            The region context.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_71getRG(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getRG (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getRG", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getRG", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_66getRG(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_70getRG(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_66getRG(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_70getRG(struct PySlepcPEPObject *__pyx_v_self) {
   struct PySlepcRGObject *__pyx_v_rg = 0;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -42090,28 +44404,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_66getRG(struct PySlepcPEPObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getRG", 0);
 
-  /* "SLEPc/PEP.pyx":712
+  /* "SLEPc/PEP.pyx":746
  *             The region context.
  *         """
  *         cdef RG rg = RG()             # <<<<<<<<<<<<<<
  *         CHKERR( PEPGetRG(self.pep, &rg.rg) )
  *         PetscINCREF(rg.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_RG), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 712, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_RG), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 746, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_rg = ((struct PySlepcRGObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/PEP.pyx":713
+  /* "SLEPc/PEP.pyx":747
  *         """
  *         cdef RG rg = RG()
  *         CHKERR( PEPGetRG(self.pep, &rg.rg) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(rg.obj)
  *         return rg
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetRG(__pyx_v_self->pep, (&__pyx_v_rg->rg))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 713, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetRG(__pyx_v_self->pep, (&__pyx_v_rg->rg))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 747, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":714
+  /* "SLEPc/PEP.pyx":748
  *         cdef RG rg = RG()
  *         CHKERR( PEPGetRG(self.pep, &rg.rg) )
  *         PetscINCREF(rg.obj)             # <<<<<<<<<<<<<<
@@ -42120,19 +44434,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_66getRG(struct PySlepcPEPObject
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_rg->__pyx_base.obj);
 
-  /* "SLEPc/PEP.pyx":715
+  /* "SLEPc/PEP.pyx":749
  *         CHKERR( PEPGetRG(self.pep, &rg.rg) )
  *         PetscINCREF(rg.obj)
  *         return rg             # <<<<<<<<<<<<<<
  * 
- *     def setRG(self, RG rg not None):
+ *     def setRG(self, RG rg):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_rg));
   __pyx_r = ((PyObject *)__pyx_v_rg);
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":703
+  /* "SLEPc/PEP.pyx":737
  *         CHKERR( PEPSetBV(self.pep, bv.bv) )
  * 
  *     def getRG(self):             # <<<<<<<<<<<<<<
@@ -42152,18 +44466,18 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_66getRG(struct PySlepcPEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":717
+/* "SLEPc/PEP.pyx":751
  *         return rg
  * 
- *     def setRG(self, RG rg not None):             # <<<<<<<<<<<<<<
+ *     def setRG(self, RG rg):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a region object to the eigensolver.
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_69setRG(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_68setRG[] = "PEP.setRG(self, RG rg)\n\n        Associates a region object to the eigensolver.\n\n        Parameters\n        ----------\n        rg: RG\n            The region context.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_69setRG(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_73setRG(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_72setRG[] = "PEP.setRG(self, RG rg)\n\n        Associates a region object to the eigensolver.\n\n        Parameters\n        ----------\n        rg: RG\n            The region context.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_73setRG(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   struct PySlepcRGObject *__pyx_v_rg = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -42176,6 +44490,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_69setRG(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -42186,7 +44501,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_69setRG(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRG") < 0)) __PYX_ERR(15, 717, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRG") < 0)) __PYX_ERR(16, 751, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -42197,14 +44512,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_69setRG(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setRG", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 717, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setRG", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 751, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setRG", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rg), __pyx_ptype_8slepc4py_5SLEPc_RG, 0, "rg", 0))) __PYX_ERR(15, 717, __pyx_L1_error)
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_68setRG(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_rg);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rg), __pyx_ptype_8slepc4py_5SLEPc_RG, 0, "rg", 0))) __PYX_ERR(16, 751, __pyx_L1_error)
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_72setRG(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_rg);
 
   /* function exit code */
   goto __pyx_L0;
@@ -42215,25 +44530,25 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_69setRG(PyObject *__pyx_v_self,
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_68setRG(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcRGObject *__pyx_v_rg) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_72setRG(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcRGObject *__pyx_v_rg) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setRG", 0);
 
-  /* "SLEPc/PEP.pyx":726
+  /* "SLEPc/PEP.pyx":760
  *             The region context.
  *         """
  *         CHKERR( PEPSetRG(self.pep, rg.rg) )             # <<<<<<<<<<<<<<
  * 
  *     def getOperators(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetRG(__pyx_v_self->pep, __pyx_v_rg->rg)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 726, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetRG(__pyx_v_self->pep, __pyx_v_rg->rg)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 760, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":717
+  /* "SLEPc/PEP.pyx":751
  *         return rg
  * 
- *     def setRG(self, RG rg not None):             # <<<<<<<<<<<<<<
+ *     def setRG(self, RG rg):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a region object to the eigensolver.
  */
@@ -42250,7 +44565,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_68setRG(struct PySlepcPEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":728
+/* "SLEPc/PEP.pyx":762
  *         CHKERR( PEPSetRG(self.pep, rg.rg) )
  * 
  *     def getOperators(self):             # <<<<<<<<<<<<<<
@@ -42259,23 +44574,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_68setRG(struct PySlepcPEPObject
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_71getOperators(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_70getOperators[] = "PEP.getOperators(self)\n\n        Gets the matrices associated with the eigenvalue problem.\n\n        Returns\n        -------\n        operators: tuple of Mat\n           The matrices associated with the eigensystem.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_71getOperators(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_75getOperators(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_74getOperators[] = "PEP.getOperators(self)\n\n        Gets the matrices associated with the eigenvalue problem.\n\n        Returns\n        -------\n        operators: tuple of Mat\n           The matrices associated with the eigensystem.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_75getOperators(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getOperators (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getOperators", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getOperators", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_70getOperators(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_74getOperators(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_70getOperators(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_74getOperators(struct PySlepcPEPObject *__pyx_v_self) {
   struct PyPetscMatObject *__pyx_v_A = 0;
   Mat __pyx_v_mat;
   PetscInt __pyx_v_k;
@@ -42289,7 +44604,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_70getOperators(struct PySlepcPEP
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("getOperators", 0);
 
-  /* "SLEPc/PEP.pyx":738
+  /* "SLEPc/PEP.pyx":772
  *         """
  *         cdef Mat A
  *         cdef PetscMat mat = NULL             # <<<<<<<<<<<<<<
@@ -42298,7 +44613,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_70getOperators(struct PySlepcPEP
  */
   __pyx_v_mat = NULL;
 
-  /* "SLEPc/PEP.pyx":739
+  /* "SLEPc/PEP.pyx":773
  *         cdef Mat A
  *         cdef PetscMat mat = NULL
  *         cdef PetscInt k=0, n=0             # <<<<<<<<<<<<<<
@@ -42308,28 +44623,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_70getOperators(struct PySlepcPEP
   __pyx_v_k = 0;
   __pyx_v_n = 0;
 
-  /* "SLEPc/PEP.pyx":740
+  /* "SLEPc/PEP.pyx":774
  *         cdef PetscMat mat = NULL
  *         cdef PetscInt k=0, n=0
  *         CHKERR( PEPGetNumMatrices(self.pep, &n) )             # <<<<<<<<<<<<<<
  *         cdef object operators = []
  *         for k from 0 <= k < n:
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetNumMatrices(__pyx_v_self->pep, (&__pyx_v_n))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 740, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetNumMatrices(__pyx_v_self->pep, (&__pyx_v_n))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 774, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":741
+  /* "SLEPc/PEP.pyx":775
  *         cdef PetscInt k=0, n=0
  *         CHKERR( PEPGetNumMatrices(self.pep, &n) )
  *         cdef object operators = []             # <<<<<<<<<<<<<<
  *         for k from 0 <= k < n:
  *             CHKERR( PEPGetOperators(self.pep, k, &mat) )
  */
-  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 741, __pyx_L1_error)
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 775, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_operators = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "SLEPc/PEP.pyx":742
+  /* "SLEPc/PEP.pyx":776
  *         CHKERR( PEPGetNumMatrices(self.pep, &n) )
  *         cdef object operators = []
  *         for k from 0 <= k < n:             # <<<<<<<<<<<<<<
@@ -42339,40 +44654,40 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_70getOperators(struct PySlepcPEP
   __pyx_t_3 = __pyx_v_n;
   for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_3; __pyx_v_k++) {
 
-    /* "SLEPc/PEP.pyx":743
+    /* "SLEPc/PEP.pyx":777
  *         cdef object operators = []
  *         for k from 0 <= k < n:
  *             CHKERR( PEPGetOperators(self.pep, k, &mat) )             # <<<<<<<<<<<<<<
  *             A = Mat(); A.mat = mat; PetscINCREF(A.obj)
  *             operators.append(A)
  */
-    __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetOperators(__pyx_v_self->pep, __pyx_v_k, (&__pyx_v_mat))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 743, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetOperators(__pyx_v_self->pep, __pyx_v_k, (&__pyx_v_mat))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 777, __pyx_L1_error)
 
-    /* "SLEPc/PEP.pyx":744
+    /* "SLEPc/PEP.pyx":778
  *         for k from 0 <= k < n:
  *             CHKERR( PEPGetOperators(self.pep, k, &mat) )
  *             A = Mat(); A.mat = mat; PetscINCREF(A.obj)             # <<<<<<<<<<<<<<
  *             operators.append(A)
  *         return tuple(operators)
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 744, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 778, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_XDECREF_SET(__pyx_v_A, ((struct PyPetscMatObject *)__pyx_t_2));
     __pyx_t_2 = 0;
     __pyx_v_A->mat = __pyx_v_mat;
     __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_A->__pyx_base.obj);
 
-    /* "SLEPc/PEP.pyx":745
+    /* "SLEPc/PEP.pyx":779
  *             CHKERR( PEPGetOperators(self.pep, k, &mat) )
  *             A = Mat(); A.mat = mat; PetscINCREF(A.obj)
  *             operators.append(A)             # <<<<<<<<<<<<<<
  *         return tuple(operators)
  * 
  */
-    __pyx_t_4 = __Pyx_PyObject_Append(__pyx_v_operators, ((PyObject *)__pyx_v_A)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(15, 745, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Append(__pyx_v_operators, ((PyObject *)__pyx_v_A)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(16, 779, __pyx_L1_error)
   }
 
-  /* "SLEPc/PEP.pyx":746
+  /* "SLEPc/PEP.pyx":780
  *             A = Mat(); A.mat = mat; PetscINCREF(A.obj)
  *             operators.append(A)
  *         return tuple(operators)             # <<<<<<<<<<<<<<
@@ -42380,13 +44695,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_70getOperators(struct PySlepcPEP
  *     def setOperators(self, operators):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = PySequence_Tuple(__pyx_v_operators); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 746, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_v_operators); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 780, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":728
+  /* "SLEPc/PEP.pyx":762
  *         CHKERR( PEPSetRG(self.pep, rg.rg) )
  * 
  *     def getOperators(self):             # <<<<<<<<<<<<<<
@@ -42407,7 +44722,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_70getOperators(struct PySlepcPEP
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":748
+/* "SLEPc/PEP.pyx":782
  *         return tuple(operators)
  * 
  *     def setOperators(self, operators):             # <<<<<<<<<<<<<<
@@ -42416,9 +44731,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_70getOperators(struct PySlepcPEP
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_73setOperators(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_72setOperators[] = "PEP.setOperators(self, operators)\n\n        Sets the matrices associated with the eigenvalue problem.\n\n        Parameters\n        ----------\n        operators: sequence of Mat\n           The matrices associated with the eigensystem.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_73setOperators(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_77setOperators(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_76setOperators[] = "PEP.setOperators(self, operators)\n\n        Sets the matrices associated with the eigenvalue problem.\n\n        Parameters\n        ----------\n        operators: sequence of Mat\n           The matrices associated with the eigensystem.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_77setOperators(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_operators = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -42431,6 +44746,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_73setOperators(PyObject *__pyx_v
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -42441,7 +44757,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_73setOperators(PyObject *__pyx_v
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOperators") < 0)) __PYX_ERR(15, 748, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOperators") < 0)) __PYX_ERR(16, 782, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -42452,20 +44768,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_73setOperators(PyObject *__pyx_v
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOperators", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 748, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOperators", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 782, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setOperators", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_72setOperators(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_operators);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_76setOperators(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_operators);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_72setOperators(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_operators) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_76setOperators(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_operators) {
   Mat *__pyx_v_mats;
   Py_ssize_t __pyx_v_k;
   Py_ssize_t __pyx_v_n;
@@ -42479,19 +44795,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_72setOperators(struct PySlepcPEP
   __Pyx_RefNannySetupContext("setOperators", 0);
   __Pyx_INCREF(__pyx_v_operators);
 
-  /* "SLEPc/PEP.pyx":757
+  /* "SLEPc/PEP.pyx":791
  *            The matrices associated with the eigensystem.
  *         """
  *         operators = tuple(operators)             # <<<<<<<<<<<<<<
  *         cdef PetscMat *mats = NULL
  *         cdef Py_ssize_t k=0, n = len(operators)
  */
-  __pyx_t_1 = PySequence_Tuple(__pyx_v_operators); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 757, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_operators); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 791, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_operators, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/PEP.pyx":758
+  /* "SLEPc/PEP.pyx":792
  *         """
  *         operators = tuple(operators)
  *         cdef PetscMat *mats = NULL             # <<<<<<<<<<<<<<
@@ -42500,7 +44816,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_72setOperators(struct PySlepcPEP
  */
   __pyx_v_mats = NULL;
 
-  /* "SLEPc/PEP.pyx":759
+  /* "SLEPc/PEP.pyx":793
  *         operators = tuple(operators)
  *         cdef PetscMat *mats = NULL
  *         cdef Py_ssize_t k=0, n = len(operators)             # <<<<<<<<<<<<<<
@@ -42508,22 +44824,22 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_72setOperators(struct PySlepcPEP
  *         for k from 0 <= k < n: mats[k] = (<Mat?>operators[k]).mat
  */
   __pyx_v_k = 0;
-  __pyx_t_2 = PyObject_Length(__pyx_v_operators); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 759, __pyx_L1_error)
+  __pyx_t_2 = PyObject_Length(__pyx_v_operators); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(16, 793, __pyx_L1_error)
   __pyx_v_n = __pyx_t_2;
 
-  /* "SLEPc/PEP.pyx":760
+  /* "SLEPc/PEP.pyx":794
  *         cdef PetscMat *mats = NULL
  *         cdef Py_ssize_t k=0, n = len(operators)
  *         cdef tmp = allocate(<size_t>n*sizeof(PetscMat),<void**>&mats)             # <<<<<<<<<<<<<<
  *         for k from 0 <= k < n: mats[k] = (<Mat?>operators[k]).mat
  *         CHKERR( PEPSetOperators(self.pep, <PetscInt>n, mats) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_n) * (sizeof(Mat))), ((void **)(&__pyx_v_mats))); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 760, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_n) * (sizeof(Mat))), ((void **)(&__pyx_v_mats))); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 794, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_tmp = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "SLEPc/PEP.pyx":761
+  /* "SLEPc/PEP.pyx":795
  *         cdef Py_ssize_t k=0, n = len(operators)
  *         cdef tmp = allocate(<size_t>n*sizeof(PetscMat),<void**>&mats)
  *         for k from 0 <= k < n: mats[k] = (<Mat?>operators[k]).mat             # <<<<<<<<<<<<<<
@@ -42532,24 +44848,24 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_72setOperators(struct PySlepcPEP
  */
   __pyx_t_2 = __pyx_v_n;
   for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_2; __pyx_v_k++) {
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_operators, __pyx_v_k, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 761, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_operators, __pyx_v_k, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 795, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8petsc4py_5PETSc_Mat)))) __PYX_ERR(15, 761, __pyx_L1_error)
+    if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8petsc4py_5PETSc_Mat)))) __PYX_ERR(16, 795, __pyx_L1_error)
     __pyx_t_3 = ((struct PyPetscMatObject *)__pyx_t_1)->mat;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     (__pyx_v_mats[__pyx_v_k]) = __pyx_t_3;
   }
 
-  /* "SLEPc/PEP.pyx":762
+  /* "SLEPc/PEP.pyx":796
  *         cdef tmp = allocate(<size_t>n*sizeof(PetscMat),<void**>&mats)
  *         for k from 0 <= k < n: mats[k] = (<Mat?>operators[k]).mat
  *         CHKERR( PEPSetOperators(self.pep, <PetscInt>n, mats) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetOperators(__pyx_v_self->pep, ((PetscInt)__pyx_v_n), __pyx_v_mats)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(15, 762, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetOperators(__pyx_v_self->pep, ((PetscInt)__pyx_v_n), __pyx_v_mats)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(16, 796, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":748
+  /* "SLEPc/PEP.pyx":782
  *         return tuple(operators)
  * 
  *     def setOperators(self, operators):             # <<<<<<<<<<<<<<
@@ -42572,7 +44888,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_72setOperators(struct PySlepcPEP
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":766
+/* "SLEPc/PEP.pyx":800
  *     #
  * 
  *     def setInitialSpace(self, space):             # <<<<<<<<<<<<<<
@@ -42581,9 +44897,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_72setOperators(struct PySlepcPEP
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_75setInitialSpace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_74setInitialSpace[] = "PEP.setInitialSpace(self, space)\n\n        Sets the initial space from which the eigensolver starts to\n        iterate.\n\n        Parameters\n        ----------\n        space: Vec or sequence of Vec\n           The initial space\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_75setInitialSpace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_79setInitialSpace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_78setInitialSpace[] = "PEP.setInitialSpace(self, space)\n\n        Sets the initial space from which the eigensolver starts to\n        iterate.\n\n        Parameters\n        ----------\n        space: Vec or sequence of Vec\n           The initial space\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_79setInitialSpace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_space = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -42596,6 +44912,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_75setInitialSpace(PyObject *__py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -42606,7 +44923,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_75setInitialSpace(PyObject *__py
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setInitialSpace") < 0)) __PYX_ERR(15, 766, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setInitialSpace") < 0)) __PYX_ERR(16, 800, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -42617,20 +44934,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_75setInitialSpace(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setInitialSpace", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 766, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setInitialSpace", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 800, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setInitialSpace", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_74setInitialSpace(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_space);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_78setInitialSpace(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_space);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_74setInitialSpace(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_space) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_78setInitialSpace(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_space) {
   Vec *__pyx_v_vs;
   Py_ssize_t __pyx_v_i;
   Py_ssize_t __pyx_v_ns;
@@ -42647,7 +44964,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_74setInitialSpace(struct PySlepc
   __Pyx_RefNannySetupContext("setInitialSpace", 0);
   __Pyx_INCREF(__pyx_v_space);
 
-  /* "SLEPc/PEP.pyx":776
+  /* "SLEPc/PEP.pyx":810
  *            The initial space
  *         """
  *         if isinstance(space, Vec): space = [space]             # <<<<<<<<<<<<<<
@@ -42657,7 +44974,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_74setInitialSpace(struct PySlepc
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_space, __pyx_ptype_8petsc4py_5PETSc_Vec); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 776, __pyx_L1_error)
+    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 810, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_space);
     __Pyx_GIVEREF(__pyx_v_space);
@@ -42666,7 +44983,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_74setInitialSpace(struct PySlepc
     __pyx_t_3 = 0;
   }
 
-  /* "SLEPc/PEP.pyx":777
+  /* "SLEPc/PEP.pyx":811
  *         """
  *         if isinstance(space, Vec): space = [space]
  *         cdef PetscVec *vs = NULL             # <<<<<<<<<<<<<<
@@ -42675,7 +44992,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_74setInitialSpace(struct PySlepc
  */
   __pyx_v_vs = NULL;
 
-  /* "SLEPc/PEP.pyx":778
+  /* "SLEPc/PEP.pyx":812
  *         if isinstance(space, Vec): space = [space]
  *         cdef PetscVec *vs = NULL
  *         cdef Py_ssize_t i = 0, ns = len(space)             # <<<<<<<<<<<<<<
@@ -42683,22 +45000,22 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_74setInitialSpace(struct PySlepc
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
  */
   __pyx_v_i = 0;
-  __pyx_t_4 = PyObject_Length(__pyx_v_space); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(15, 778, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_space); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(16, 812, __pyx_L1_error)
   __pyx_v_ns = __pyx_t_4;
 
-  /* "SLEPc/PEP.pyx":779
+  /* "SLEPc/PEP.pyx":813
  *         cdef PetscVec *vs = NULL
  *         cdef Py_ssize_t i = 0, ns = len(space)
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)             # <<<<<<<<<<<<<<
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
  *         CHKERR( PEPSetInitialSpace(self.pep, <PetscInt>ns, vs) )
  */
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_ns) * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_vs))); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 779, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_ns) * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_vs))); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 813, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_tmp = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "SLEPc/PEP.pyx":780
+  /* "SLEPc/PEP.pyx":814
  *         cdef Py_ssize_t i = 0, ns = len(space)
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec             # <<<<<<<<<<<<<<
@@ -42708,24 +45025,24 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_74setInitialSpace(struct PySlepc
   __pyx_t_4 = __pyx_v_ns;
   for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
     __pyx_v_i = __pyx_t_5;
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_space, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 780, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_space, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 814, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Vec)))) __PYX_ERR(15, 780, __pyx_L1_error)
+    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Vec)))) __PYX_ERR(16, 814, __pyx_L1_error)
     __pyx_t_6 = ((struct PyPetscVecObject *)__pyx_t_3)->vec;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     (__pyx_v_vs[__pyx_v_i]) = __pyx_t_6;
   }
 
-  /* "SLEPc/PEP.pyx":781
+  /* "SLEPc/PEP.pyx":815
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
  *         CHKERR( PEPSetInitialSpace(self.pep, <PetscInt>ns, vs) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetInitialSpace(__pyx_v_self->pep, ((PetscInt)__pyx_v_ns), __pyx_v_vs)); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(15, 781, __pyx_L1_error)
+  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetInitialSpace(__pyx_v_self->pep, ((PetscInt)__pyx_v_ns), __pyx_v_vs)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(16, 815, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":766
+  /* "SLEPc/PEP.pyx":800
  *     #
  * 
  *     def setInitialSpace(self, space):             # <<<<<<<<<<<<<<
@@ -42748,7 +45065,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_74setInitialSpace(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":785
+/* "SLEPc/PEP.pyx":819
  *     #
  * 
  *     def cancelMonitor(self):             # <<<<<<<<<<<<<<
@@ -42757,38 +45074,38 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_74setInitialSpace(struct PySlepc
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_77cancelMonitor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_76cancelMonitor[] = "PEP.cancelMonitor(self)\n\n        Clears all monitors for a PEP object.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_77cancelMonitor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_81cancelMonitor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_80cancelMonitor[] = "PEP.cancelMonitor(self)\n\n        Clears all monitors for a PEP object.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_81cancelMonitor(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("cancelMonitor (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("cancelMonitor", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "cancelMonitor", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_76cancelMonitor(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_80cancelMonitor(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_76cancelMonitor(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_80cancelMonitor(struct PySlepcPEPObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("cancelMonitor", 0);
 
-  /* "SLEPc/PEP.pyx":789
+  /* "SLEPc/PEP.pyx":823
  *         Clears all monitors for a PEP object.
  *         """
  *         CHKERR( PEPMonitorCancel(self.pep) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPMonitorCancel(__pyx_v_self->pep)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 789, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPMonitorCancel(__pyx_v_self->pep)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 823, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":785
+  /* "SLEPc/PEP.pyx":819
  *     #
  * 
  *     def cancelMonitor(self):             # <<<<<<<<<<<<<<
@@ -42808,7 +45125,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_76cancelMonitor(struct PySlepcPE
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":793
+/* "SLEPc/PEP.pyx":827
  *     #
  * 
  *     def setUp(self):             # <<<<<<<<<<<<<<
@@ -42817,38 +45134,38 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_76cancelMonitor(struct PySlepcPE
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_79setUp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_78setUp[] = "PEP.setUp(self)\n\n        Sets up all the internal data structures necessary for the\n        execution of the eigensolver.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_79setUp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_83setUp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_82setUp[] = "PEP.setUp(self)\n\n        Sets up all the internal data structures necessary for the\n        execution of the eigensolver.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_83setUp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("setUp (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("setUp", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "setUp", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_78setUp(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_82setUp(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_78setUp(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_82setUp(struct PySlepcPEPObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setUp", 0);
 
-  /* "SLEPc/PEP.pyx":798
+  /* "SLEPc/PEP.pyx":832
  *         execution of the eigensolver.
  *         """
  *         CHKERR( PEPSetUp(self.pep) )             # <<<<<<<<<<<<<<
  * 
  *     def solve(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetUp(__pyx_v_self->pep)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 798, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSetUp(__pyx_v_self->pep)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 832, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":793
+  /* "SLEPc/PEP.pyx":827
  *     #
  * 
  *     def setUp(self):             # <<<<<<<<<<<<<<
@@ -42868,7 +45185,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_78setUp(struct PySlepcPEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":800
+/* "SLEPc/PEP.pyx":834
  *         CHKERR( PEPSetUp(self.pep) )
  * 
  *     def solve(self):             # <<<<<<<<<<<<<<
@@ -42877,38 +45194,38 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_78setUp(struct PySlepcPEPObject
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_81solve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_80solve[] = "PEP.solve(self)\n\n        Solves the eigensystem.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_81solve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_85solve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_84solve[] = "PEP.solve(self)\n\n        Solves the eigensystem.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_85solve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("solve (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("solve", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "solve", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_80solve(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_84solve(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_80solve(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_84solve(struct PySlepcPEPObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("solve", 0);
 
-  /* "SLEPc/PEP.pyx":804
+  /* "SLEPc/PEP.pyx":838
  *         Solves the eigensystem.
  *         """
  *         CHKERR( PEPSolve(self.pep) )             # <<<<<<<<<<<<<<
  * 
  *     def getIterationNumber(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSolve(__pyx_v_self->pep)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 804, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPSolve(__pyx_v_self->pep)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 838, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":800
+  /* "SLEPc/PEP.pyx":834
  *         CHKERR( PEPSetUp(self.pep) )
  * 
  *     def solve(self):             # <<<<<<<<<<<<<<
@@ -42928,7 +45245,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_80solve(struct PySlepcPEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":806
+/* "SLEPc/PEP.pyx":840
  *         CHKERR( PEPSolve(self.pep) )
  * 
  *     def getIterationNumber(self):             # <<<<<<<<<<<<<<
@@ -42937,23 +45254,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_80solve(struct PySlepcPEPObject
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_83getIterationNumber(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_82getIterationNumber[] = "PEP.getIterationNumber(self)\n\n        Gets the current iteration number. If the call to `solve()` is\n        complete, then it returns the number of iterations carried out\n        by the solution method.\n\n        Returns\n        -------\n        its: int\n             Iteration number.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_83getIterationNumber(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_87getIterationNumber(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_86getIterationNumber[] = "PEP.getIterationNumber(self)\n\n        Gets the current iteration number. If the call to `solve()` is\n        complete, then it returns the number of iterations carried out\n        by the solution method.\n\n        Returns\n        -------\n        its: int\n             Iteration number.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_87getIterationNumber(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getIterationNumber (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getIterationNumber", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getIterationNumber", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_82getIterationNumber(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_86getIterationNumber(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_82getIterationNumber(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_86getIterationNumber(struct PySlepcPEPObject *__pyx_v_self) {
   PetscInt __pyx_v_ival;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -42961,7 +45278,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_82getIterationNumber(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getIterationNumber", 0);
 
-  /* "SLEPc/PEP.pyx":817
+  /* "SLEPc/PEP.pyx":851
  *              Iteration number.
  *         """
  *         cdef PetscInt ival = 0             # <<<<<<<<<<<<<<
@@ -42970,16 +45287,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_82getIterationNumber(struct PySl
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/PEP.pyx":818
+  /* "SLEPc/PEP.pyx":852
  *         """
  *         cdef PetscInt ival = 0
  *         CHKERR( PEPGetIterationNumber(self.pep, &ival) )             # <<<<<<<<<<<<<<
  *         return toInt(ival)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetIterationNumber(__pyx_v_self->pep, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 818, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetIterationNumber(__pyx_v_self->pep, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 852, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":819
+  /* "SLEPc/PEP.pyx":853
  *         cdef PetscInt ival = 0
  *         CHKERR( PEPGetIterationNumber(self.pep, &ival) )
  *         return toInt(ival)             # <<<<<<<<<<<<<<
@@ -42987,13 +45304,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_82getIterationNumber(struct PySl
  *     def getConvergedReason(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 819, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 853, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":806
+  /* "SLEPc/PEP.pyx":840
  *         CHKERR( PEPSolve(self.pep) )
  * 
  *     def getIterationNumber(self):             # <<<<<<<<<<<<<<
@@ -43012,7 +45329,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_82getIterationNumber(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":821
+/* "SLEPc/PEP.pyx":855
  *         return toInt(ival)
  * 
  *     def getConvergedReason(self):             # <<<<<<<<<<<<<<
@@ -43021,23 +45338,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_82getIterationNumber(struct PySl
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_85getConvergedReason(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_84getConvergedReason[] = "PEP.getConvergedReason(self)\n\n        Gets the reason why the `solve()` iteration was stopped.\n\n        Returns\n        -------\n        reason: `PEP.ConvergedReason` enumerate\n            Negative value indicates diverged, positive value\n            converged.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_85getConvergedReason(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_89getConvergedReason(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_88getConvergedReason[] = "PEP.getConvergedReason(self)\n\n        Gets the reason why the `solve()` iteration was stopped.\n\n        Returns\n        -------\n        reason: `PEP.ConvergedReason` enumerate\n            Negative value indicates diverged, positive value\n            converged.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_89getConvergedReason(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getConvergedReason (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getConvergedReason", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getConvergedReason", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_84getConvergedReason(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_88getConvergedReason(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_84getConvergedReason(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_88getConvergedReason(struct PySlepcPEPObject *__pyx_v_self) {
   PEPConvergedReason __pyx_v_val;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -43045,7 +45362,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_84getConvergedReason(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getConvergedReason", 0);
 
-  /* "SLEPc/PEP.pyx":831
+  /* "SLEPc/PEP.pyx":865
  *             converged.
  *         """
  *         cdef SlepcPEPConvergedReason val = PEP_CONVERGED_ITERATING             # <<<<<<<<<<<<<<
@@ -43054,16 +45371,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_84getConvergedReason(struct PySl
  */
   __pyx_v_val = PEP_CONVERGED_ITERATING;
 
-  /* "SLEPc/PEP.pyx":832
+  /* "SLEPc/PEP.pyx":866
  *         """
  *         cdef SlepcPEPConvergedReason val = PEP_CONVERGED_ITERATING
  *         CHKERR( PEPGetConvergedReason(self.pep, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetConvergedReason(__pyx_v_self->pep, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 832, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetConvergedReason(__pyx_v_self->pep, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 866, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":833
+  /* "SLEPc/PEP.pyx":867
  *         cdef SlepcPEPConvergedReason val = PEP_CONVERGED_ITERATING
  *         CHKERR( PEPGetConvergedReason(self.pep, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -43071,13 +45388,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_84getConvergedReason(struct PySl
  * 
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PEPConvergedReason(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 833, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PEPConvergedReason(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 867, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":821
+  /* "SLEPc/PEP.pyx":855
  *         return toInt(ival)
  * 
  *     def getConvergedReason(self):             # <<<<<<<<<<<<<<
@@ -43096,7 +45413,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_84getConvergedReason(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":836
+/* "SLEPc/PEP.pyx":870
  * 
  * 
  *     def getConverged(self):             # <<<<<<<<<<<<<<
@@ -43105,23 +45422,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_84getConvergedReason(struct PySl
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_87getConverged(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_86getConverged[] = "PEP.getConverged(self)\n\n        Gets the number of converged eigenpairs.\n\n        Returns\n        -------\n        nconv: int\n            Number of converged eigenpairs.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_87getConverged(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_91getConverged(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_90getConverged[] = "PEP.getConverged(self)\n\n        Gets the number of converged eigenpairs.\n\n        Returns\n        -------\n        nconv: int\n            Number of converged eigenpairs.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_91getConverged(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getConverged (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getConverged", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getConverged", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_86getConverged(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_90getConverged(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_86getConverged(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_90getConverged(struct PySlepcPEPObject *__pyx_v_self) {
   PetscInt __pyx_v_ival;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -43129,7 +45446,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_86getConverged(struct PySlepcPEP
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getConverged", 0);
 
-  /* "SLEPc/PEP.pyx":845
+  /* "SLEPc/PEP.pyx":879
  *             Number of converged eigenpairs.
  *         """
  *         cdef PetscInt ival = 0             # <<<<<<<<<<<<<<
@@ -43138,16 +45455,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_86getConverged(struct PySlepcPEP
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/PEP.pyx":846
+  /* "SLEPc/PEP.pyx":880
  *         """
  *         cdef PetscInt ival = 0
  *         CHKERR( PEPGetConverged(self.pep, &ival) )             # <<<<<<<<<<<<<<
  *         return toInt(ival)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetConverged(__pyx_v_self->pep, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 846, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetConverged(__pyx_v_self->pep, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 880, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":847
+  /* "SLEPc/PEP.pyx":881
  *         cdef PetscInt ival = 0
  *         CHKERR( PEPGetConverged(self.pep, &ival) )
  *         return toInt(ival)             # <<<<<<<<<<<<<<
@@ -43155,13 +45472,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_86getConverged(struct PySlepcPEP
  *     def getEigenpair(self, int i, Vec Vr=None, Vec Vi=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 847, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 881, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":836
+  /* "SLEPc/PEP.pyx":870
  * 
  * 
  *     def getConverged(self):             # <<<<<<<<<<<<<<
@@ -43180,7 +45497,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_86getConverged(struct PySlepcPEP
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":849
+/* "SLEPc/PEP.pyx":883
  *         return toInt(ival)
  * 
  *     def getEigenpair(self, int i, Vec Vr=None, Vec Vi=None):             # <<<<<<<<<<<<<<
@@ -43189,9 +45506,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_86getConverged(struct PySlepcPEP
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_89getEigenpair(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_88getEigenpair[] = "PEP.getEigenpair(self, int i, Vec Vr=None, Vec Vi=None)\n\n        Gets the i-th solution of the eigenproblem as computed by\n        `solve()`.  The solution consists of both the eigenvalue and\n        the eigenvector.\n\n        Parameters\n        ----------\n        i: int\n            Index of the solution to be obtained.\n        Vr: Vec, optional\n            Placeholder for the returned eigenvector (real part).\n    [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_89getEigenpair(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_93getEigenpair(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_92getEigenpair[] = "PEP.getEigenpair(self, int i, Vec Vr=None, Vec Vi=None)\n\n        Gets the i-th solution of the eigenproblem as computed by\n        `solve()`.  The solution consists of both the eigenvalue and\n        the eigenvector.\n\n        Parameters\n        ----------\n        i: int\n            Index of the solution to be obtained.\n        Vr: Vec, optional\n            Placeholder for the returned eigenvector (real part).\n    [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_93getEigenpair(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int __pyx_v_i;
   struct PyPetscVecObject *__pyx_v_Vr = 0;
   struct PyPetscVecObject *__pyx_v_Vi = 0;
@@ -43208,8 +45525,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_89getEigenpair(PyObject *__pyx_v
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -43218,11 +45538,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_89getEigenpair(PyObject *__pyx_v
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Vr);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Vi);
@@ -43230,32 +45552,34 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_89getEigenpair(PyObject *__pyx_v
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getEigenpair") < 0)) __PYX_ERR(15, 849, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getEigenpair") < 0)) __PYX_ERR(16, 883, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(15, 849, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 883, __pyx_L3_error)
     __pyx_v_Vr = ((struct PyPetscVecObject *)values[1]);
     __pyx_v_Vi = ((struct PyPetscVecObject *)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getEigenpair", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 849, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getEigenpair", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 883, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.getEigenpair", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vr), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vr", 0))) __PYX_ERR(15, 849, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vi), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vi", 0))) __PYX_ERR(15, 849, __pyx_L1_error)
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_88getEigenpair(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_i, __pyx_v_Vr, __pyx_v_Vi);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vr), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vr", 0))) __PYX_ERR(16, 883, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vi), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vi", 0))) __PYX_ERR(16, 883, __pyx_L1_error)
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_92getEigenpair(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_i, __pyx_v_Vr, __pyx_v_Vi);
 
   /* function exit code */
   goto __pyx_L0;
@@ -43266,123 +45590,91 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_89getEigenpair(PyObject *__pyx_v
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_88getEigenpair(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_Vr, struct PyPetscVecObject *__pyx_v_Vi) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_92getEigenpair(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_i, struct PyPetscVecObject *__pyx_v_Vr, struct PyPetscVecObject *__pyx_v_Vi) {
   PetscScalar __pyx_v_sval1;
   PetscScalar __pyx_v_sval2;
   Vec __pyx_v_vecr;
   Vec __pyx_v_veci;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
+  Vec __pyx_t_1;
   int __pyx_t_2;
-  Vec __pyx_t_3;
-  int __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getEigenpair", 0);
 
-  /* "SLEPc/PEP.pyx":869
+  /* "SLEPc/PEP.pyx":903
  *             The computed eigenvalue.
  *         """
  *         cdef PetscScalar sval1 = 0             # <<<<<<<<<<<<<<
  *         cdef PetscScalar sval2 = 0
- *         cdef PetscVec vecr = NULL
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
  */
   __pyx_v_sval1 = 0.0;
 
-  /* "SLEPc/PEP.pyx":870
+  /* "SLEPc/PEP.pyx":904
  *         """
  *         cdef PetscScalar sval1 = 0
  *         cdef PetscScalar sval2 = 0             # <<<<<<<<<<<<<<
- *         cdef PetscVec vecr = NULL
- *         cdef PetscVec veci = NULL
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  */
   __pyx_v_sval2 = 0.0;
 
-  /* "SLEPc/PEP.pyx":871
+  /* "SLEPc/PEP.pyx":905
  *         cdef PetscScalar sval1 = 0
  *         cdef PetscScalar sval2 = 0
- *         cdef PetscVec vecr = NULL             # <<<<<<<<<<<<<<
- *         cdef PetscVec veci = NULL
- *         if Vr is not None: vecr = Vr.vec
- */
-  __pyx_v_vecr = NULL;
-
-  /* "SLEPc/PEP.pyx":872
- *         cdef PetscScalar sval2 = 0
- *         cdef PetscVec vecr = NULL
- *         cdef PetscVec veci = NULL             # <<<<<<<<<<<<<<
- *         if Vr is not None: vecr = Vr.vec
- *         if Vi is not None: veci = Vi.vec
- */
-  __pyx_v_veci = NULL;
-
-  /* "SLEPc/PEP.pyx":873
- *         cdef PetscVec vecr = NULL
- *         cdef PetscVec veci = NULL
- *         if Vr is not None: vecr = Vr.vec             # <<<<<<<<<<<<<<
- *         if Vi is not None: veci = Vi.vec
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL             # <<<<<<<<<<<<<<
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  *         CHKERR( PEPGetEigenpair(self.pep, i, &sval1, &sval2, vecr, veci) )
  */
-  __pyx_t_1 = (((PyObject *)__pyx_v_Vr) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_Vr->vec;
-    __pyx_v_vecr = __pyx_t_3;
+  __pyx_t_2 = (((PyObject *)__pyx_v_Vr) != Py_None);
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_Vr->vec;
+  } else {
+    __pyx_t_1 = ((Vec)NULL);
   }
+  __pyx_v_vecr = __pyx_t_1;
 
-  /* "SLEPc/PEP.pyx":874
- *         cdef PetscVec veci = NULL
- *         if Vr is not None: vecr = Vr.vec
- *         if Vi is not None: veci = Vi.vec             # <<<<<<<<<<<<<<
+  /* "SLEPc/PEP.pyx":906
+ *         cdef PetscScalar sval2 = 0
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL             # <<<<<<<<<<<<<<
  *         CHKERR( PEPGetEigenpair(self.pep, i, &sval1, &sval2, vecr, veci) )
- *         return complex(toScalar(sval1), toScalar(sval2))
+ *         return toComplex(sval1, sval2)
  */
   __pyx_t_2 = (((PyObject *)__pyx_v_Vi) != Py_None);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_v_Vi->vec;
-    __pyx_v_veci = __pyx_t_3;
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_Vi->vec;
+  } else {
+    __pyx_t_1 = ((Vec)NULL);
   }
+  __pyx_v_veci = __pyx_t_1;
 
-  /* "SLEPc/PEP.pyx":875
- *         if Vr is not None: vecr = Vr.vec
- *         if Vi is not None: veci = Vi.vec
+  /* "SLEPc/PEP.pyx":907
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  *         CHKERR( PEPGetEigenpair(self.pep, i, &sval1, &sval2, vecr, veci) )             # <<<<<<<<<<<<<<
- *         return complex(toScalar(sval1), toScalar(sval2))
+ *         return toComplex(sval1, sval2)
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetEigenpair(__pyx_v_self->pep, __pyx_v_i, (&__pyx_v_sval1), (&__pyx_v_sval2), __pyx_v_vecr, __pyx_v_veci)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(15, 875, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetEigenpair(__pyx_v_self->pep, __pyx_v_i, (&__pyx_v_sval1), (&__pyx_v_sval2), __pyx_v_vecr, __pyx_v_veci)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(16, 907, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":876
- *         if Vi is not None: veci = Vi.vec
+  /* "SLEPc/PEP.pyx":908
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  *         CHKERR( PEPGetEigenpair(self.pep, i, &sval1, &sval2, vecr, veci) )
- *         return complex(toScalar(sval1), toScalar(sval2))             # <<<<<<<<<<<<<<
+ *         return toComplex(sval1, sval2)             # <<<<<<<<<<<<<<
  * 
  *     def getErrorEstimate(self, int i):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 876, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval2); if (unlikely(!__pyx_t_6)) __PYX_ERR(15, 876, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 876, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
-  __pyx_t_5 = 0;
-  __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyComplex_Type)), __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(15, 876, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_r = __pyx_t_6;
-  __pyx_t_6 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toComplex(__pyx_v_sval1, __pyx_v_sval2); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 908, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":849
+  /* "SLEPc/PEP.pyx":883
  *         return toInt(ival)
  * 
  *     def getEigenpair(self, int i, Vec Vr=None, Vec Vi=None):             # <<<<<<<<<<<<<<
@@ -43392,9 +45684,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_88getEigenpair(struct PySlepcPEP
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_4);
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.getEigenpair", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
@@ -43403,8 +45693,8 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_88getEigenpair(struct PySlepcPEP
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":878
- *         return complex(toScalar(sval1), toScalar(sval2))
+/* "SLEPc/PEP.pyx":910
+ *         return toComplex(sval1, sval2)
  * 
  *     def getErrorEstimate(self, int i):             # <<<<<<<<<<<<<<
  *         """
@@ -43412,9 +45702,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_88getEigenpair(struct PySlepcPEP
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_91getErrorEstimate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_90getErrorEstimate[] = "PEP.getErrorEstimate(self, int i)\n\n        Returns the error estimate associated to the i-th computed\n        eigenpair.\n\n        Parameters\n        ----------\n        i: int\n            Index of the solution to be considered.\n\n        Returns\n        -------\n        error: real\n            Error estimate.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_91getErrorEstimate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_95getErrorEstimate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_94getErrorEstimate[] = "PEP.getErrorEstimate(self, int i)\n\n        Returns the error estimate associated to the i-th computed\n        eigenpair.\n\n        Parameters\n        ----------\n        i: int\n            Index of the solution to be considered.\n\n        Returns\n        -------\n        error: real\n            Error estimate.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_95getErrorEstimate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int __pyx_v_i;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -43427,6 +45717,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_91getErrorEstimate(PyObject *__p
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -43437,31 +45728,31 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_91getErrorEstimate(PyObject *__p
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getErrorEstimate") < 0)) __PYX_ERR(15, 878, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getErrorEstimate") < 0)) __PYX_ERR(16, 910, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
     } else {
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(15, 878, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 910, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getErrorEstimate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 878, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getErrorEstimate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 910, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.getErrorEstimate", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_90getErrorEstimate(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_i);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_94getErrorEstimate(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_i);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_90getErrorEstimate(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_i) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_94getErrorEstimate(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_i) {
   PetscReal __pyx_v_rval;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -43469,7 +45760,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_90getErrorEstimate(struct PySlep
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getErrorEstimate", 0);
 
-  /* "SLEPc/PEP.pyx":893
+  /* "SLEPc/PEP.pyx":925
  *             Error estimate.
  *         """
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -43478,16 +45769,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_90getErrorEstimate(struct PySlep
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/PEP.pyx":894
+  /* "SLEPc/PEP.pyx":926
  *         """
  *         cdef PetscReal rval = 0
  *         CHKERR( PEPGetErrorEstimate(self.pep, i, &rval) )             # <<<<<<<<<<<<<<
  *         return toReal(rval)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetErrorEstimate(__pyx_v_self->pep, __pyx_v_i, (&__pyx_v_rval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 894, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPGetErrorEstimate(__pyx_v_self->pep, __pyx_v_i, (&__pyx_v_rval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 926, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":895
+  /* "SLEPc/PEP.pyx":927
  *         cdef PetscReal rval = 0
  *         CHKERR( PEPGetErrorEstimate(self.pep, i, &rval) )
  *         return toReal(rval)             # <<<<<<<<<<<<<<
@@ -43495,14 +45786,14 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_90getErrorEstimate(struct PySlep
  *     def computeError(self, int i, etype=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 895, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 927, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":878
- *         return complex(toScalar(sval1), toScalar(sval2))
+  /* "SLEPc/PEP.pyx":910
+ *         return toComplex(sval1, sval2)
  * 
  *     def getErrorEstimate(self, int i):             # <<<<<<<<<<<<<<
  *         """
@@ -43520,7 +45811,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_90getErrorEstimate(struct PySlep
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":897
+/* "SLEPc/PEP.pyx":929
  *         return toReal(rval)
  * 
  *     def computeError(self, int i, etype=None):             # <<<<<<<<<<<<<<
@@ -43529,9 +45820,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_90getErrorEstimate(struct PySlep
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_93computeError(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_92computeError[] = "PEP.computeError(self, int i, etype=None)\n\n        Computes the error (based on the residual norm) associated with the i-th\n        computed eigenpair.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be considered.\n        etype: `PEP.ErrorType` enumerate\n           The error type to compute.\n\n        Returns\n        -------\n        error: real\n           The error bou [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_93computeError(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_97computeError(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_96computeError[] = "PEP.computeError(self, int i, etype=None)\n\n        Computes the error (based on the residual norm) associated with the i-th\n        computed eigenpair.\n\n        Parameters\n        ----------\n        i: int\n           Index of the solution to be considered.\n        etype: `PEP.ErrorType` enumerate\n           The error type to compute.\n\n        Returns\n        -------\n        error: real\n           The error bou [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_97computeError(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int __pyx_v_i;
   PyObject *__pyx_v_etype = 0;
   PyObject *__pyx_r = 0;
@@ -43546,7 +45837,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_93computeError(PyObject *__pyx_v
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -43555,6 +45848,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_93computeError(PyObject *__pyx_v
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_etype);
@@ -43562,35 +45856,36 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_93computeError(PyObject *__pyx_v
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "computeError") < 0)) __PYX_ERR(15, 897, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "computeError") < 0)) __PYX_ERR(16, 929, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(15, 897, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 929, __pyx_L3_error)
     __pyx_v_etype = values[1];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("computeError", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 897, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("computeError", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 929, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.computeError", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_92computeError(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_i, __pyx_v_etype);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_96computeError(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_i, __pyx_v_etype);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_92computeError(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_i, PyObject *__pyx_v_etype) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_96computeError(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_i, PyObject *__pyx_v_etype) {
   PEPErrorType __pyx_v_et;
   PetscReal __pyx_v_rval;
   PyObject *__pyx_r = NULL;
@@ -43602,7 +45897,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_92computeError(struct PySlepcPEP
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("computeError", 0);
 
-  /* "SLEPc/PEP.pyx":921
+  /* "SLEPc/PEP.pyx":953
  *         ``nconv-1`` (see `getConverged()`).
  *         """
  *         cdef SlepcPEPErrorType et = PEP_ERROR_BACKWARD             # <<<<<<<<<<<<<<
@@ -43611,7 +45906,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_92computeError(struct PySlepcPEP
  */
   __pyx_v_et = PEP_ERROR_BACKWARD;
 
-  /* "SLEPc/PEP.pyx":922
+  /* "SLEPc/PEP.pyx":954
  *         """
  *         cdef SlepcPEPErrorType et = PEP_ERROR_BACKWARD
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -43620,7 +45915,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_92computeError(struct PySlepcPEP
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/PEP.pyx":923
+  /* "SLEPc/PEP.pyx":955
  *         cdef SlepcPEPErrorType et = PEP_ERROR_BACKWARD
  *         cdef PetscReal rval = 0
  *         if etype is not None: et = etype             # <<<<<<<<<<<<<<
@@ -43630,20 +45925,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_92computeError(struct PySlepcPEP
   __pyx_t_1 = (__pyx_v_etype != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = ((PEPErrorType)__Pyx_PyInt_As_PEPErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 923, __pyx_L1_error)
+    __pyx_t_3 = ((PEPErrorType)__Pyx_PyInt_As_PEPErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 955, __pyx_L1_error)
     __pyx_v_et = __pyx_t_3;
   }
 
-  /* "SLEPc/PEP.pyx":924
+  /* "SLEPc/PEP.pyx":956
  *         cdef PetscReal rval = 0
  *         if etype is not None: et = etype
  *         CHKERR( PEPComputeError(self.pep, i, et, &rval) )             # <<<<<<<<<<<<<<
  *         return toReal(rval)
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPComputeError(__pyx_v_self->pep, __pyx_v_i, __pyx_v_et, (&__pyx_v_rval))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(15, 924, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPComputeError(__pyx_v_self->pep, __pyx_v_i, __pyx_v_et, (&__pyx_v_rval))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(16, 956, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":925
+  /* "SLEPc/PEP.pyx":957
  *         if etype is not None: et = etype
  *         CHKERR( PEPComputeError(self.pep, i, et, &rval) )
  *         return toReal(rval)             # <<<<<<<<<<<<<<
@@ -43651,13 +45946,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_92computeError(struct PySlepcPEP
  *     def errorView(self, etype=None, Viewer viewer=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 925, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 957, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_r = __pyx_t_5;
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":897
+  /* "SLEPc/PEP.pyx":929
  *         return toReal(rval)
  * 
  *     def computeError(self, int i, etype=None):             # <<<<<<<<<<<<<<
@@ -43676,7 +45971,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_92computeError(struct PySlepcPEP
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":927
+/* "SLEPc/PEP.pyx":959
  *         return toReal(rval)
  * 
  *     def errorView(self, etype=None, Viewer viewer=None):             # <<<<<<<<<<<<<<
@@ -43685,9 +45980,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_92computeError(struct PySlepcPEP
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_95errorView(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_94errorView[] = "PEP.errorView(self, etype=None, Viewer viewer=None)\n\n        Displays the errors associated with the computed solution\n        (as well as the eigenvalues).\n\n        Parameters\n        ----------\n        etype: `PEP.ErrorType` enumerate, optional\n           The error type to compute.\n        viewer: Viewer, optional.\n                Visualization context; if not provided, the standard\n                output is used.\ [...]
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_95errorView(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_99errorView(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_98errorView[] = "PEP.errorView(self, etype=None, Viewer viewer=None)\n\n        Displays the errors associated with the computed solution\n        (as well as the eigenvalues).\n\n        Parameters\n        ----------\n        etype: `PEP.ErrorType` enumerate, optional\n           The error type to compute.\n        viewer: Viewer, optional.\n                Visualization context; if not provided, the standard\n                output is used.\ [...]
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_99errorView(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_etype = 0;
   struct PyPetscViewerObject *__pyx_v_viewer = 0;
   PyObject *__pyx_r = 0;
@@ -43703,7 +45998,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_95errorView(PyObject *__pyx_v_se
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -43714,6 +46011,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_95errorView(PyObject *__pyx_v_se
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_etype);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_viewer);
@@ -43721,12 +46019,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_95errorView(PyObject *__pyx_v_se
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "errorView") < 0)) __PYX_ERR(15, 927, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "errorView") < 0)) __PYX_ERR(16, 959, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -43736,14 +46036,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_95errorView(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("errorView", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 927, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("errorView", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 959, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.errorView", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(15, 927, __pyx_L1_error)
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_94errorView(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_etype, __pyx_v_viewer);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(16, 959, __pyx_L1_error)
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_98errorView(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_etype, __pyx_v_viewer);
 
   /* function exit code */
   goto __pyx_L0;
@@ -43754,7 +46054,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_95errorView(PyObject *__pyx_v_se
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_94errorView(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_etype, struct PyPetscViewerObject *__pyx_v_viewer) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_98errorView(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_etype, struct PyPetscViewerObject *__pyx_v_viewer) {
   PEPErrorType __pyx_v_et;
   PetscViewer __pyx_v_vwr;
   PyObject *__pyx_r = NULL;
@@ -43762,66 +46062,51 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_94errorView(struct PySlepcPEPObj
   int __pyx_t_1;
   int __pyx_t_2;
   PEPErrorType __pyx_t_3;
-  PetscViewer __pyx_t_4;
-  int __pyx_t_5;
+  int __pyx_t_4;
   __Pyx_RefNannySetupContext("errorView", 0);
 
-  /* "SLEPc/PEP.pyx":948
+  /* "SLEPc/PEP.pyx":980
  * 
  *         """
  *         cdef SlepcPEPErrorType et = PEP_ERROR_RELATIVE             # <<<<<<<<<<<<<<
  *         if etype is not None: et = etype
- *         cdef PetscViewer vwr = NULL
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  */
   __pyx_v_et = PEP_ERROR_RELATIVE;
 
-  /* "SLEPc/PEP.pyx":949
+  /* "SLEPc/PEP.pyx":981
  *         """
  *         cdef SlepcPEPErrorType et = PEP_ERROR_RELATIVE
  *         if etype is not None: et = etype             # <<<<<<<<<<<<<<
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
+ *         CHKERR( PEPErrorView(self.pep, et, vwr) )
  */
   __pyx_t_1 = (__pyx_v_etype != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = ((PEPErrorType)__Pyx_PyInt_As_PEPErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 949, __pyx_L1_error)
+    __pyx_t_3 = ((PEPErrorType)__Pyx_PyInt_As_PEPErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 981, __pyx_L1_error)
     __pyx_v_et = __pyx_t_3;
   }
 
-  /* "SLEPc/PEP.pyx":950
+  /* "SLEPc/PEP.pyx":982
  *         cdef SlepcPEPErrorType et = PEP_ERROR_RELATIVE
  *         if etype is not None: et = etype
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
- *         CHKERR( PEPErrorView(self.pep, et, vwr) )
- */
-  __pyx_v_vwr = NULL;
-
-  /* "SLEPc/PEP.pyx":951
- *         if etype is not None: et = etype
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( PEPErrorView(self.pep, et, vwr) )
  * 
  */
-  __pyx_t_2 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-    __pyx_t_4 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_4;
-  }
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
-  /* "SLEPc/PEP.pyx":952
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+  /* "SLEPc/PEP.pyx":983
+ *         if etype is not None: et = etype
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( PEPErrorView(self.pep, et, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPErrorView(__pyx_v_self->pep, __pyx_v_et, __pyx_v_vwr)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(15, 952, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPErrorView(__pyx_v_self->pep, __pyx_v_et, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(16, 983, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":927
+  /* "SLEPc/PEP.pyx":959
  *         return toReal(rval)
  * 
  *     def errorView(self, etype=None, Viewer viewer=None):             # <<<<<<<<<<<<<<
@@ -43841,18 +46126,18 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_94errorView(struct PySlepcPEPObj
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":956
+/* "SLEPc/PEP.pyx":987
  *     #
  * 
- *     def setLinearEPS(self, EPS eps not None):             # <<<<<<<<<<<<<<
+ *     def setLinearEPS(self, EPS eps):             # <<<<<<<<<<<<<<
  *         """
  *         Associate an eigensolver object (EPS) to the polynomial eigenvalue solver.
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_97setLinearEPS(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_96setLinearEPS[] = "PEP.setLinearEPS(self, EPS eps)\n\n        Associate an eigensolver object (EPS) to the polynomial eigenvalue solver.\n\n        Parameters\n        ----------\n        eps: EPS\n            The linear eigensolver.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_97setLinearEPS(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_101setLinearEPS(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_100setLinearEPS[] = "PEP.setLinearEPS(self, EPS eps)\n\n        Associate an eigensolver object (EPS) to the polynomial eigenvalue solver.\n\n        Parameters\n        ----------\n        eps: EPS\n            The linear eigensolver.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_101setLinearEPS(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   struct PySlepcEPSObject *__pyx_v_eps = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -43865,6 +46150,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_97setLinearEPS(PyObject *__pyx_v
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -43875,7 +46161,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_97setLinearEPS(PyObject *__pyx_v
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setLinearEPS") < 0)) __PYX_ERR(15, 956, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setLinearEPS") < 0)) __PYX_ERR(16, 987, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -43886,14 +46172,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_97setLinearEPS(PyObject *__pyx_v
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setLinearEPS", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 956, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setLinearEPS", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 987, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setLinearEPS", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_eps), __pyx_ptype_8slepc4py_5SLEPc_EPS, 0, "eps", 0))) __PYX_ERR(15, 956, __pyx_L1_error)
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_96setLinearEPS(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_eps);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_eps), __pyx_ptype_8slepc4py_5SLEPc_EPS, 0, "eps", 0))) __PYX_ERR(16, 987, __pyx_L1_error)
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_100setLinearEPS(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_eps);
 
   /* function exit code */
   goto __pyx_L0;
@@ -43904,25 +46190,25 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_97setLinearEPS(PyObject *__pyx_v
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_96setLinearEPS(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcEPSObject *__pyx_v_eps) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_100setLinearEPS(struct PySlepcPEPObject *__pyx_v_self, struct PySlepcEPSObject *__pyx_v_eps) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setLinearEPS", 0);
 
-  /* "SLEPc/PEP.pyx":965
+  /* "SLEPc/PEP.pyx":996
  *             The linear eigensolver.
  *         """
  *         CHKERR( PEPLinearSetEPS(self.pep, eps.eps) )             # <<<<<<<<<<<<<<
  * 
  *     def getLinearEPS(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPLinearSetEPS(__pyx_v_self->pep, __pyx_v_eps->eps)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 965, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPLinearSetEPS(__pyx_v_self->pep, __pyx_v_eps->eps)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 996, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":956
+  /* "SLEPc/PEP.pyx":987
  *     #
  * 
- *     def setLinearEPS(self, EPS eps not None):             # <<<<<<<<<<<<<<
+ *     def setLinearEPS(self, EPS eps):             # <<<<<<<<<<<<<<
  *         """
  *         Associate an eigensolver object (EPS) to the polynomial eigenvalue solver.
  */
@@ -43939,7 +46225,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_96setLinearEPS(struct PySlepcPEP
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":967
+/* "SLEPc/PEP.pyx":998
  *         CHKERR( PEPLinearSetEPS(self.pep, eps.eps) )
  * 
  *     def getLinearEPS(self):             # <<<<<<<<<<<<<<
@@ -43948,23 +46234,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_96setLinearEPS(struct PySlepcPEP
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_99getLinearEPS(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_98getLinearEPS[] = "PEP.getLinearEPS(self)\n\n        Retrieve the eigensolver object (EPS) associated to the polynomial\n        eigenvalue solver.\n \n        Returns\n        -------\n        eps: EPS\n            The linear eigensolver.\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_99getLinearEPS(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_103getLinearEPS(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_102getLinearEPS[] = "PEP.getLinearEPS(self)\n\n        Retrieve the eigensolver object (EPS) associated to the polynomial\n        eigenvalue solver.\n \n        Returns\n        -------\n        eps: EPS\n            The linear eigensolver.\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_103getLinearEPS(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getLinearEPS (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getLinearEPS", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getLinearEPS", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_98getLinearEPS(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_102getLinearEPS(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_98getLinearEPS(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_102getLinearEPS(struct PySlepcPEPObject *__pyx_v_self) {
   struct PySlepcEPSObject *__pyx_v_eps = 0;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -43972,28 +46258,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_98getLinearEPS(struct PySlepcPEP
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getLinearEPS", 0);
 
-  /* "SLEPc/PEP.pyx":977
+  /* "SLEPc/PEP.pyx":1008
  *             The linear eigensolver.
  *         """
  *         cdef EPS eps = EPS()             # <<<<<<<<<<<<<<
  *         CHKERR( PEPLinearGetEPS(self.pep, &eps.eps) )
  *         PetscINCREF(eps.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 977, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 1008, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_eps = ((struct PySlepcEPSObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/PEP.pyx":978
+  /* "SLEPc/PEP.pyx":1009
  *         """
  *         cdef EPS eps = EPS()
  *         CHKERR( PEPLinearGetEPS(self.pep, &eps.eps) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(eps.obj)
  *         return eps
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPLinearGetEPS(__pyx_v_self->pep, (&__pyx_v_eps->eps))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 978, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPLinearGetEPS(__pyx_v_self->pep, (&__pyx_v_eps->eps))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 1009, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":979
+  /* "SLEPc/PEP.pyx":1010
  *         cdef EPS eps = EPS()
  *         CHKERR( PEPLinearGetEPS(self.pep, &eps.eps) )
  *         PetscINCREF(eps.obj)             # <<<<<<<<<<<<<<
@@ -44002,19 +46288,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_98getLinearEPS(struct PySlepcPEP
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_eps->__pyx_base.obj);
 
-  /* "SLEPc/PEP.pyx":980
+  /* "SLEPc/PEP.pyx":1011
  *         CHKERR( PEPLinearGetEPS(self.pep, &eps.eps) )
  *         PetscINCREF(eps.obj)
  *         return eps             # <<<<<<<<<<<<<<
  * 
- *     def setLinearCompanionForm(self, cform not None):
+ *     def setLinearCompanionForm(self, int cform):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_eps));
   __pyx_r = ((PyObject *)__pyx_v_eps);
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":967
+  /* "SLEPc/PEP.pyx":998
  *         CHKERR( PEPLinearSetEPS(self.pep, eps.eps) )
  * 
  *     def getLinearEPS(self):             # <<<<<<<<<<<<<<
@@ -44034,19 +46320,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_98getLinearEPS(struct PySlepcPEP
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":982
+/* "SLEPc/PEP.pyx":1013
  *         return eps
  * 
- *     def setLinearCompanionForm(self, cform not None):             # <<<<<<<<<<<<<<
+ *     def setLinearCompanionForm(self, int cform):             # <<<<<<<<<<<<<<
  *         """
  *         Choose between the two companion forms available for the linearization of
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_101setLinearCompanionForm(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_100setLinearCompanionForm[] = "PEP.setLinearCompanionForm(self, cform)\n\n        Choose between the two companion forms available for the linearization of\n        a quadratic eigenproblem.\n\n        Parameters\n        ----------\n        cform: integer\n            1 or 2 (first or second companion form).\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_101setLinearCompanionForm(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_cform = 0;
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_105setLinearCompanionForm(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_104setLinearCompanionForm[] = "PEP.setLinearCompanionForm(self, int cform)\n\n        Choose between the two companion forms available for the linearization of\n        a quadratic eigenproblem.\n\n        Parameters\n        ----------\n        cform: integer\n            1 or 2 (first or second companion form).\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_105setLinearCompanionForm(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_cform;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("setLinearCompanionForm (wrapper)", 0);
@@ -44058,6 +46344,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_101setLinearCompanionForm(PyObje
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -44068,58 +46355,49 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_101setLinearCompanionForm(PyObje
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setLinearCompanionForm") < 0)) __PYX_ERR(15, 982, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setLinearCompanionForm") < 0)) __PYX_ERR(16, 1013, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
     } else {
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
     }
-    __pyx_v_cform = values[0];
+    __pyx_v_cform = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_cform == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 1013, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setLinearCompanionForm", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 982, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setLinearCompanionForm", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 1013, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setLinearCompanionForm", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(((PyObject *)__pyx_v_cform) == Py_None)) {
-    PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "cform"); __PYX_ERR(15, 982, __pyx_L1_error)
-  }
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_100setLinearCompanionForm(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_cform);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_104setLinearCompanionForm(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_cform);
 
   /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_100setLinearCompanionForm(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_cform) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_104setLinearCompanionForm(struct PySlepcPEPObject *__pyx_v_self, int __pyx_v_cform) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  PetscInt __pyx_t_1;
-  int __pyx_t_2;
+  int __pyx_t_1;
   __Pyx_RefNannySetupContext("setLinearCompanionForm", 0);
 
-  /* "SLEPc/PEP.pyx":992
+  /* "SLEPc/PEP.pyx":1023
  *             1 or 2 (first or second companion form).
  *         """
  *         CHKERR( PEPLinearSetCompanionForm(self.pep, cform) )             # <<<<<<<<<<<<<<
  * 
  *     def getLinearCompanionForm(self):
  */
-  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_cform); if (unlikely((__pyx_t_1 == (PetscInt)-1) && PyErr_Occurred())) __PYX_ERR(15, 992, __pyx_L1_error)
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPLinearSetCompanionForm(__pyx_v_self->pep, __pyx_t_1)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 992, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPLinearSetCompanionForm(__pyx_v_self->pep, __pyx_v_cform)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 1023, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":982
+  /* "SLEPc/PEP.pyx":1013
  *         return eps
  * 
- *     def setLinearCompanionForm(self, cform not None):             # <<<<<<<<<<<<<<
+ *     def setLinearCompanionForm(self, int cform):             # <<<<<<<<<<<<<<
  *         """
  *         Choose between the two companion forms available for the linearization of
  */
@@ -44136,7 +46414,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_100setLinearCompanionForm(struct
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":994
+/* "SLEPc/PEP.pyx":1025
  *         CHKERR( PEPLinearSetCompanionForm(self.pep, cform) )
  * 
  *     def getLinearCompanionForm(self):             # <<<<<<<<<<<<<<
@@ -44145,23 +46423,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_100setLinearCompanionForm(struct
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_103getLinearCompanionForm(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_102getLinearCompanionForm[] = "PEP.getLinearCompanionForm(self)\n\n        Returns the number of the companion form that will be used for the\n        linearization of a quadratic eigenproblem. \n \n        Returns\n        -------\n        cform: integer\n            1 or 2 (first or second companion form).\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_103getLinearCompanionForm(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_107getLinearCompanionForm(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_106getLinearCompanionForm[] = "PEP.getLinearCompanionForm(self)\n\n        Returns the number of the companion form that will be used for the\n        linearization of a quadratic eigenproblem. \n \n        Returns\n        -------\n        cform: integer\n            1 or 2 (first or second companion form).\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_107getLinearCompanionForm(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getLinearCompanionForm (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getLinearCompanionForm", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getLinearCompanionForm", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_102getLinearCompanionForm(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_106getLinearCompanionForm(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_102getLinearCompanionForm(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_106getLinearCompanionForm(struct PySlepcPEPObject *__pyx_v_self) {
   PetscInt __pyx_v_cform;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -44169,7 +46447,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_102getLinearCompanionForm(struct
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getLinearCompanionForm", 0);
 
-  /* "SLEPc/PEP.pyx":1004
+  /* "SLEPc/PEP.pyx":1035
  *             1 or 2 (first or second companion form).
  *         """
  *         cdef PetscInt cform = 0             # <<<<<<<<<<<<<<
@@ -44178,30 +46456,30 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_102getLinearCompanionForm(struct
  */
   __pyx_v_cform = 0;
 
-  /* "SLEPc/PEP.pyx":1005
+  /* "SLEPc/PEP.pyx":1036
  *         """
  *         cdef PetscInt cform = 0
  *         CHKERR( PEPLinearGetCompanionForm(self.pep, &cform) )             # <<<<<<<<<<<<<<
  *         return cform
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPLinearGetCompanionForm(__pyx_v_self->pep, (&__pyx_v_cform))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 1005, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPLinearGetCompanionForm(__pyx_v_self->pep, (&__pyx_v_cform))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 1036, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":1006
+  /* "SLEPc/PEP.pyx":1037
  *         cdef PetscInt cform = 0
  *         CHKERR( PEPLinearGetCompanionForm(self.pep, &cform) )
  *         return cform             # <<<<<<<<<<<<<<
  * 
- *     def setLinearExplicitMatrix(self, flag not None):
+ *     def setLinearExplicitMatrix(self, flag):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscInt(__pyx_v_cform); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 1006, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscInt(__pyx_v_cform); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 1037, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":994
+  /* "SLEPc/PEP.pyx":1025
  *         CHKERR( PEPLinearSetCompanionForm(self.pep, cform) )
  * 
  *     def getLinearCompanionForm(self):             # <<<<<<<<<<<<<<
@@ -44220,18 +46498,18 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_102getLinearCompanionForm(struct
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":1008
+/* "SLEPc/PEP.pyx":1039
  *         return cform
  * 
- *     def setLinearExplicitMatrix(self, flag not None):             # <<<<<<<<<<<<<<
+ *     def setLinearExplicitMatrix(self, flag):             # <<<<<<<<<<<<<<
  *         """
  *         Indicate if the matrices A and B for the linearization of the problem
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_105setLinearExplicitMatrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_104setLinearExplicitMatrix[] = "PEP.setLinearExplicitMatrix(self, flag)\n\n        Indicate if the matrices A and B for the linearization of the problem\n        must be built explicitly.\n\n        Parameters\n        ----------\n        flag: boolean\n            boolean flag indicating if the matrices are built explicitly .\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_105setLinearExplicitMatrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_109setLinearExplicitMatrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_108setLinearExplicitMatrix[] = "PEP.setLinearExplicitMatrix(self, flag)\n\n        Indicate if the matrices A and B for the linearization of the problem\n        must be built explicitly.\n\n        Parameters\n        ----------\n        flag: boolean\n            boolean flag indicating if the matrices are built explicitly .\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_109setLinearExplicitMatrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_flag = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -44244,6 +46522,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_105setLinearExplicitMatrix(PyObj
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -44254,7 +46533,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_105setLinearExplicitMatrix(PyObj
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setLinearExplicitMatrix") < 0)) __PYX_ERR(15, 1008, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setLinearExplicitMatrix") < 0)) __PYX_ERR(16, 1039, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -44265,27 +46544,20 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_105setLinearExplicitMatrix(PyObj
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setLinearExplicitMatrix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 1008, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setLinearExplicitMatrix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 1039, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.PEP.setLinearExplicitMatrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(((PyObject *)__pyx_v_flag) == Py_None)) {
-    PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "flag"); __PYX_ERR(15, 1008, __pyx_L1_error)
-  }
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_104setLinearExplicitMatrix(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_flag);
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_108setLinearExplicitMatrix(((struct PySlepcPEPObject *)__pyx_v_self), __pyx_v_flag);
 
   /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_104setLinearExplicitMatrix(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_flag) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_108setLinearExplicitMatrix(struct PySlepcPEPObject *__pyx_v_self, PyObject *__pyx_v_flag) {
   PetscBool __pyx_v_sval;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -44293,29 +46565,29 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_104setLinearExplicitMatrix(struc
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setLinearExplicitMatrix", 0);
 
-  /* "SLEPc/PEP.pyx":1018
+  /* "SLEPc/PEP.pyx":1049
  *             boolean flag indicating if the matrices are built explicitly .
  *         """
  *         cdef PetscBool sval = flag             # <<<<<<<<<<<<<<
  *         CHKERR( PEPLinearSetExplicitMatrix(self.pep, sval) )
  * 
  */
-  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_flag)); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 1018, __pyx_L1_error)
+  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_flag)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 1049, __pyx_L1_error)
   __pyx_v_sval = __pyx_t_1;
 
-  /* "SLEPc/PEP.pyx":1019
+  /* "SLEPc/PEP.pyx":1050
  *         """
  *         cdef PetscBool sval = flag
  *         CHKERR( PEPLinearSetExplicitMatrix(self.pep, sval) )             # <<<<<<<<<<<<<<
  * 
  *     def getLinearExplicitMatrix(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPLinearSetExplicitMatrix(__pyx_v_self->pep, __pyx_v_sval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(15, 1019, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPLinearSetExplicitMatrix(__pyx_v_self->pep, __pyx_v_sval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 1050, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":1008
+  /* "SLEPc/PEP.pyx":1039
  *         return cform
  * 
- *     def setLinearExplicitMatrix(self, flag not None):             # <<<<<<<<<<<<<<
+ *     def setLinearExplicitMatrix(self, flag):             # <<<<<<<<<<<<<<
  *         """
  *         Indicate if the matrices A and B for the linearization of the problem
  */
@@ -44332,7 +46604,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_104setLinearExplicitMatrix(struc
   return __pyx_r;
 }
 
-/* "SLEPc/PEP.pyx":1021
+/* "SLEPc/PEP.pyx":1052
  *         CHKERR( PEPLinearSetExplicitMatrix(self.pep, sval) )
  * 
  *     def getLinearExplicitMatrix(self):             # <<<<<<<<<<<<<<
@@ -44341,23 +46613,23 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_104setLinearExplicitMatrix(struc
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_107getLinearExplicitMatrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_8slepc4py_5SLEPc_3PEP_106getLinearExplicitMatrix[] = "PEP.getLinearExplicitMatrix(self)\n\n        Returns the flag indicating if the matrices A and B for the linearization\n        are built explicitly.\n \n        Returns\n        -------\n        flag: boolean\n        ";
-static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_107getLinearExplicitMatrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_111getLinearExplicitMatrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_8slepc4py_5SLEPc_3PEP_110getLinearExplicitMatrix[] = "PEP.getLinearExplicitMatrix(self)\n\n        Returns the flag indicating if the matrices A and B for the linearization\n        are built explicitly.\n \n        Returns\n        -------\n        flag: boolean\n        ";
+static PyObject *__pyx_pw_8slepc4py_5SLEPc_3PEP_111getLinearExplicitMatrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getLinearExplicitMatrix (wrapper)", 0);
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("getLinearExplicitMatrix", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getLinearExplicitMatrix", 0))) return NULL;
-  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_106getLinearExplicitMatrix(((struct PySlepcPEPObject *)__pyx_v_self));
+  __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3PEP_110getLinearExplicitMatrix(((struct PySlepcPEPObject *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_106getLinearExplicitMatrix(struct PySlepcPEPObject *__pyx_v_self) {
+static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_110getLinearExplicitMatrix(struct PySlepcPEPObject *__pyx_v_self) {
   PetscBool __pyx_v_sval;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -44365,7 +46637,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_106getLinearExplicitMatrix(struc
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getLinearExplicitMatrix", 0);
 
-  /* "SLEPc/PEP.pyx":1030
+  /* "SLEPc/PEP.pyx":1061
  *         flag: boolean
  *         """
  *         cdef PetscBool sval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -44374,16 +46646,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_106getLinearExplicitMatrix(struc
  */
   __pyx_v_sval = PETSC_FALSE;
 
-  /* "SLEPc/PEP.pyx":1031
+  /* "SLEPc/PEP.pyx":1062
  *         """
  *         cdef PetscBool sval = PETSC_FALSE
  *         CHKERR( PEPLinearGetExplicitMatrix(self.pep, &sval) )             # <<<<<<<<<<<<<<
  *         return sval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPLinearGetExplicitMatrix(__pyx_v_self->pep, (&__pyx_v_sval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(15, 1031, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(PEPLinearGetExplicitMatrix(__pyx_v_self->pep, (&__pyx_v_sval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 1062, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":1032
+  /* "SLEPc/PEP.pyx":1063
  *         cdef PetscBool sval = PETSC_FALSE
  *         CHKERR( PEPLinearGetExplicitMatrix(self.pep, &sval) )
  *         return sval             # <<<<<<<<<<<<<<
@@ -44391,13 +46663,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3PEP_106getLinearExplicitMatrix(struc
  * # -----------------------------------------------------------------------------
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_sval); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 1032, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_sval); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 1063, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/PEP.pyx":1021
+  /* "SLEPc/PEP.pyx":1052
  *         CHKERR( PEPLinearSetExplicitMatrix(self.pep, sval) )
  * 
  *     def getLinearExplicitMatrix(self):             # <<<<<<<<<<<<<<
@@ -44502,6 +46774,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_3view(PyObject *__pyx_v_self, Py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -44514,11 +46787,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_3view(PyObject *__pyx_v_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(16, 100, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(17, 100, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -44527,13 +46801,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_3view(PyObject *__pyx_v_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 100, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 100, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.view", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(16, 100, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(17, 100, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3NEP_2view(((struct PySlepcNEPObject *)__pyx_v_self), __pyx_v_viewer);
 
   /* function exit code */
@@ -44550,42 +46824,25 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_2view(struct PySlepcNEPObject *_
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
-  PetscViewer __pyx_t_3;
-  int __pyx_t_4;
   __Pyx_RefNannySetupContext("view", 0);
 
   /* "SLEPc/NEP.pyx":110
  *             output is used.
  *         """
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( NEPView(self.nep, vwr) )
+ * 
  */
-  __pyx_v_vwr = NULL;
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
   /* "SLEPc/NEP.pyx":111
  *         """
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
- *         CHKERR( NEPView(self.nep, vwr) )
- * 
- */
-  __pyx_t_1 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_3;
-  }
-
-  /* "SLEPc/NEP.pyx":112
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( NEPView(self.nep, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     def destroy(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPView(__pyx_v_self->nep, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(16, 112, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPView(__pyx_v_self->nep, __pyx_v_vwr)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 111, __pyx_L1_error)
 
   /* "SLEPc/NEP.pyx":100
  *         self.nep = NULL
@@ -44607,7 +46864,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_2view(struct PySlepcNEPObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":114
+/* "SLEPc/NEP.pyx":113
  *         CHKERR( NEPView(self.nep, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -44638,16 +46895,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_4destroy(struct PySlepcNEPObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("destroy", 0);
 
-  /* "SLEPc/NEP.pyx":118
+  /* "SLEPc/NEP.pyx":117
  *         Destroys the NEP object.
  *         """
  *         CHKERR( NEPDestroy(&self.nep) )             # <<<<<<<<<<<<<<
  *         self.nep = NULL
  *         return self
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPDestroy((&__pyx_v_self->nep))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 118, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPDestroy((&__pyx_v_self->nep))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 117, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":119
+  /* "SLEPc/NEP.pyx":118
  *         """
  *         CHKERR( NEPDestroy(&self.nep) )
  *         self.nep = NULL             # <<<<<<<<<<<<<<
@@ -44656,7 +46913,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_4destroy(struct PySlepcNEPObject
  */
   __pyx_v_self->nep = NULL;
 
-  /* "SLEPc/NEP.pyx":120
+  /* "SLEPc/NEP.pyx":119
  *         CHKERR( NEPDestroy(&self.nep) )
  *         self.nep = NULL
  *         return self             # <<<<<<<<<<<<<<
@@ -44668,7 +46925,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_4destroy(struct PySlepcNEPObject
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":114
+  /* "SLEPc/NEP.pyx":113
  *         CHKERR( NEPView(self.nep, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -44686,7 +46943,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_4destroy(struct PySlepcNEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":122
+/* "SLEPc/NEP.pyx":121
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -44717,16 +46974,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_6reset(struct PySlepcNEPObject *
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("reset", 0);
 
-  /* "SLEPc/NEP.pyx":126
+  /* "SLEPc/NEP.pyx":125
  *         Resets the NEP object.
  *         """
  *         CHKERR( NEPReset(self.nep) )             # <<<<<<<<<<<<<<
  * 
  *     def create(self, comm=None):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPReset(__pyx_v_self->nep)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 126, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPReset(__pyx_v_self->nep)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 125, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":122
+  /* "SLEPc/NEP.pyx":121
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -44746,7 +47003,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_6reset(struct PySlepcNEPObject *
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":128
+/* "SLEPc/NEP.pyx":127
  *         CHKERR( NEPReset(self.nep) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -44771,6 +47028,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_9create(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -44783,11 +47041,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_9create(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(16, 128, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(17, 127, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -44796,7 +47055,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_9create(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 128, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 127, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -44818,17 +47077,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_8create(struct PySlepcNEPObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("create", 0);
 
-  /* "SLEPc/NEP.pyx":138
+  /* "SLEPc/NEP.pyx":137
  *             processes.
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())             # <<<<<<<<<<<<<<
  *         cdef SlepcNEP newnep = NULL
  *         CHKERR( NEPCreate(ccomm, &newnep) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 138, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 137, __pyx_L1_error)
   __pyx_v_ccomm = __pyx_t_1;
 
-  /* "SLEPc/NEP.pyx":139
+  /* "SLEPc/NEP.pyx":138
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcNEP newnep = NULL             # <<<<<<<<<<<<<<
@@ -44837,16 +47096,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_8create(struct PySlepcNEPObject
  */
   __pyx_v_newnep = NULL;
 
-  /* "SLEPc/NEP.pyx":140
+  /* "SLEPc/NEP.pyx":139
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcNEP newnep = NULL
  *         CHKERR( NEPCreate(ccomm, &newnep) )             # <<<<<<<<<<<<<<
  *         SlepcCLEAR(self.obj); self.nep = newnep
  *         return self
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPCreate(__pyx_v_ccomm, (&__pyx_v_newnep))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(16, 140, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPCreate(__pyx_v_ccomm, (&__pyx_v_newnep))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 139, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":141
+  /* "SLEPc/NEP.pyx":140
  *         cdef SlepcNEP newnep = NULL
  *         CHKERR( NEPCreate(ccomm, &newnep) )
  *         SlepcCLEAR(self.obj); self.nep = newnep             # <<<<<<<<<<<<<<
@@ -44856,7 +47115,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_8create(struct PySlepcNEPObject
   __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(__pyx_v_self->__pyx_base.obj);
   __pyx_v_self->nep = __pyx_v_newnep;
 
-  /* "SLEPc/NEP.pyx":142
+  /* "SLEPc/NEP.pyx":141
  *         CHKERR( NEPCreate(ccomm, &newnep) )
  *         SlepcCLEAR(self.obj); self.nep = newnep
  *         return self             # <<<<<<<<<<<<<<
@@ -44868,7 +47127,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_8create(struct PySlepcNEPObject
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":128
+  /* "SLEPc/NEP.pyx":127
  *         CHKERR( NEPReset(self.nep) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -44886,7 +47145,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_8create(struct PySlepcNEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":144
+/* "SLEPc/NEP.pyx":143
  *         return self
  * 
  *     def setType(self, nep_type):             # <<<<<<<<<<<<<<
@@ -44910,6 +47169,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_11setType(PyObject *__pyx_v_self
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -44920,7 +47180,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_11setType(PyObject *__pyx_v_self
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(16, 144, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(17, 143, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -44931,7 +47191,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_11setType(PyObject *__pyx_v_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 144, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 143, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.setType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -44953,7 +47213,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_10setType(struct PySlepcNEPObjec
   __Pyx_RefNannySetupContext("setType", 0);
   __Pyx_INCREF(__pyx_v_nep_type);
 
-  /* "SLEPc/NEP.pyx":153
+  /* "SLEPc/NEP.pyx":152
  *             The solver to be used.
  *         """
  *         cdef SlepcNEPType cval = NULL             # <<<<<<<<<<<<<<
@@ -44962,28 +47222,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_10setType(struct PySlepcNEPObjec
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/NEP.pyx":154
+  /* "SLEPc/NEP.pyx":153
  *         """
  *         cdef SlepcNEPType cval = NULL
  *         nep_type = str2bytes(nep_type, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( NEPSetType(self.nep, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_nep_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 154, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_nep_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 153, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_nep_type, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/NEP.pyx":155
+  /* "SLEPc/NEP.pyx":154
  *         cdef SlepcNEPType cval = NULL
  *         nep_type = str2bytes(nep_type, &cval)
  *         CHKERR( NEPSetType(self.nep, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getType(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetType(__pyx_v_self->nep, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(16, 155, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetType(__pyx_v_self->nep, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 154, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":144
+  /* "SLEPc/NEP.pyx":143
  *         return self
  * 
  *     def setType(self, nep_type):             # <<<<<<<<<<<<<<
@@ -45005,7 +47265,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_10setType(struct PySlepcNEPObjec
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":157
+/* "SLEPc/NEP.pyx":156
  *         CHKERR( NEPSetType(self.nep, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -45038,7 +47298,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_12getType(struct PySlepcNEPObjec
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getType", 0);
 
-  /* "SLEPc/NEP.pyx":166
+  /* "SLEPc/NEP.pyx":165
  *             The solver currently being used.
  *         """
  *         cdef SlepcNEPType nep_type = NULL             # <<<<<<<<<<<<<<
@@ -45047,16 +47307,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_12getType(struct PySlepcNEPObjec
  */
   __pyx_v_nep_type = NULL;
 
-  /* "SLEPc/NEP.pyx":167
+  /* "SLEPc/NEP.pyx":166
  *         """
  *         cdef SlepcNEPType nep_type = NULL
  *         CHKERR( NEPGetType(self.nep, &nep_type) )             # <<<<<<<<<<<<<<
  *         return bytes2str(nep_type)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetType(__pyx_v_self->nep, (&__pyx_v_nep_type))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 167, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetType(__pyx_v_self->nep, (&__pyx_v_nep_type))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 166, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":168
+  /* "SLEPc/NEP.pyx":167
  *         cdef SlepcNEPType nep_type = NULL
  *         CHKERR( NEPGetType(self.nep, &nep_type) )
  *         return bytes2str(nep_type)             # <<<<<<<<<<<<<<
@@ -45064,13 +47324,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_12getType(struct PySlepcNEPObjec
  *     def getOptionsPrefix(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_nep_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 168, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_nep_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 167, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":157
+  /* "SLEPc/NEP.pyx":156
  *         CHKERR( NEPSetType(self.nep, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -45089,7 +47349,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_12getType(struct PySlepcNEPObjec
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":170
+/* "SLEPc/NEP.pyx":169
  *         return bytes2str(nep_type)
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -45122,7 +47382,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_14getOptionsPrefix(struct PySlep
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getOptionsPrefix", 0);
 
-  /* "SLEPc/NEP.pyx":180
+  /* "SLEPc/NEP.pyx":179
  *             The prefix string set for this NEP object.
  *         """
  *         cdef const_char *prefix = NULL             # <<<<<<<<<<<<<<
@@ -45131,16 +47391,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_14getOptionsPrefix(struct PySlep
  */
   __pyx_v_prefix = NULL;
 
-  /* "SLEPc/NEP.pyx":181
+  /* "SLEPc/NEP.pyx":180
  *         """
  *         cdef const_char *prefix = NULL
  *         CHKERR( NEPGetOptionsPrefix(self.nep, &prefix) )             # <<<<<<<<<<<<<<
  *         return bytes2str(prefix)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetOptionsPrefix(__pyx_v_self->nep, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 181, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetOptionsPrefix(__pyx_v_self->nep, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 180, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":182
+  /* "SLEPc/NEP.pyx":181
  *         cdef const_char *prefix = NULL
  *         CHKERR( NEPGetOptionsPrefix(self.nep, &prefix) )
  *         return bytes2str(prefix)             # <<<<<<<<<<<<<<
@@ -45148,13 +47408,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_14getOptionsPrefix(struct PySlep
  *     def setOptionsPrefix(self, prefix):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 182, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 181, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":170
+  /* "SLEPc/NEP.pyx":169
  *         return bytes2str(nep_type)
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -45173,7 +47433,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_14getOptionsPrefix(struct PySlep
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":184
+/* "SLEPc/NEP.pyx":183
  *         return bytes2str(prefix)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -45197,6 +47457,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_17setOptionsPrefix(PyObject *__p
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -45207,7 +47468,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_17setOptionsPrefix(PyObject *__p
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(16, 184, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(17, 183, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -45218,7 +47479,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_17setOptionsPrefix(PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 184, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 183, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.setOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -45240,7 +47501,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_16setOptionsPrefix(struct PySlep
   __Pyx_RefNannySetupContext("setOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/NEP.pyx":194
+  /* "SLEPc/NEP.pyx":193
  *             The prefix string to prepend to all NEP option requests.
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -45249,28 +47510,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_16setOptionsPrefix(struct PySlep
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/NEP.pyx":195
+  /* "SLEPc/NEP.pyx":194
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( NEPSetOptionsPrefix(self.nep, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 195, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 194, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/NEP.pyx":196
+  /* "SLEPc/NEP.pyx":195
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( NEPSetOptionsPrefix(self.nep, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def appendOptionsPrefix(self, prefix):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetOptionsPrefix(__pyx_v_self->nep, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(16, 196, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetOptionsPrefix(__pyx_v_self->nep, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 195, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":184
+  /* "SLEPc/NEP.pyx":183
  *         return bytes2str(prefix)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -45292,7 +47553,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_16setOptionsPrefix(struct PySlep
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":198
+/* "SLEPc/NEP.pyx":197
  *         CHKERR( NEPSetOptionsPrefix(self.nep, cval) )
  * 
  *     def appendOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -45316,6 +47577,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_19appendOptionsPrefix(PyObject *
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -45326,7 +47588,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_19appendOptionsPrefix(PyObject *
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "appendOptionsPrefix") < 0)) __PYX_ERR(16, 198, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "appendOptionsPrefix") < 0)) __PYX_ERR(17, 197, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -45337,7 +47599,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_19appendOptionsPrefix(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("appendOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 198, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("appendOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 197, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.appendOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -45359,7 +47621,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_18appendOptionsPrefix(struct PyS
   __Pyx_RefNannySetupContext("appendOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/NEP.pyx":208
+  /* "SLEPc/NEP.pyx":207
  *             The prefix string to prepend to all NEP option requests.
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -45368,28 +47630,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_18appendOptionsPrefix(struct PyS
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/NEP.pyx":209
+  /* "SLEPc/NEP.pyx":208
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( NEPAppendOptionsPrefix(self.nep, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 209, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 208, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/NEP.pyx":210
+  /* "SLEPc/NEP.pyx":209
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( NEPAppendOptionsPrefix(self.nep, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def setFromOptions(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPAppendOptionsPrefix(__pyx_v_self->nep, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(16, 210, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPAppendOptionsPrefix(__pyx_v_self->nep, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 209, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":198
+  /* "SLEPc/NEP.pyx":197
  *         CHKERR( NEPSetOptionsPrefix(self.nep, cval) )
  * 
  *     def appendOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -45411,7 +47673,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_18appendOptionsPrefix(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":212
+/* "SLEPc/NEP.pyx":211
  *         CHKERR( NEPAppendOptionsPrefix(self.nep, cval) )
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -45442,16 +47704,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_20setFromOptions(struct PySlepcN
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setFromOptions", 0);
 
-  /* "SLEPc/NEP.pyx":218
+  /* "SLEPc/NEP.pyx":217
  *         the solver type.
  *         """
  *         CHKERR( NEPSetFromOptions(self.nep) )             # <<<<<<<<<<<<<<
  * 
  *     def getWhichEigenpairs(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetFromOptions(__pyx_v_self->nep)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 218, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetFromOptions(__pyx_v_self->nep)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 217, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":212
+  /* "SLEPc/NEP.pyx":211
  *         CHKERR( NEPAppendOptionsPrefix(self.nep, cval) )
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -45471,7 +47733,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_20setFromOptions(struct PySlepcN
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":220
+/* "SLEPc/NEP.pyx":219
  *         CHKERR( NEPSetFromOptions(self.nep) )
  * 
  *     def getWhichEigenpairs(self):             # <<<<<<<<<<<<<<
@@ -45504,7 +47766,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_22getWhichEigenpairs(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getWhichEigenpairs", 0);
 
-  /* "SLEPc/NEP.pyx":229
+  /* "SLEPc/NEP.pyx":228
  *             The portion of the spectrum to be sought by the solver.
  *         """
  *         cdef SlepcNEPWhich val = NEP_LARGEST_MAGNITUDE             # <<<<<<<<<<<<<<
@@ -45513,16 +47775,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_22getWhichEigenpairs(struct PySl
  */
   __pyx_v_val = NEP_LARGEST_MAGNITUDE;
 
-  /* "SLEPc/NEP.pyx":230
+  /* "SLEPc/NEP.pyx":229
  *         """
  *         cdef SlepcNEPWhich val = NEP_LARGEST_MAGNITUDE
  *         CHKERR( NEPGetWhichEigenpairs(self.nep, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetWhichEigenpairs(__pyx_v_self->nep, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 230, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetWhichEigenpairs(__pyx_v_self->nep, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 229, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":231
+  /* "SLEPc/NEP.pyx":230
  *         cdef SlepcNEPWhich val = NEP_LARGEST_MAGNITUDE
  *         CHKERR( NEPGetWhichEigenpairs(self.nep, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -45530,13 +47792,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_22getWhichEigenpairs(struct PySl
  *     def setWhichEigenpairs(self, which):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_NEPWhich(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 231, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_NEPWhich(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 230, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":220
+  /* "SLEPc/NEP.pyx":219
  *         CHKERR( NEPSetFromOptions(self.nep) )
  * 
  *     def getWhichEigenpairs(self):             # <<<<<<<<<<<<<<
@@ -45555,7 +47817,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_22getWhichEigenpairs(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":233
+/* "SLEPc/NEP.pyx":232
  *         return val
  * 
  *     def setWhichEigenpairs(self, which):             # <<<<<<<<<<<<<<
@@ -45579,6 +47841,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_25setWhichEigenpairs(PyObject *_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -45589,7 +47852,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_25setWhichEigenpairs(PyObject *_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setWhichEigenpairs") < 0)) __PYX_ERR(16, 233, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setWhichEigenpairs") < 0)) __PYX_ERR(17, 232, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -45600,7 +47863,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_25setWhichEigenpairs(PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setWhichEigenpairs", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 233, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setWhichEigenpairs", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 232, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.setWhichEigenpairs", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -45621,26 +47884,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_24setWhichEigenpairs(struct PySl
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setWhichEigenpairs", 0);
 
-  /* "SLEPc/NEP.pyx":242
+  /* "SLEPc/NEP.pyx":241
  *             The portion of the spectrum to be sought by the solver.
  *         """
  *         cdef SlepcNEPWhich val = which             # <<<<<<<<<<<<<<
  *         CHKERR( NEPSetWhichEigenpairs(self.nep, val) )
  * 
  */
-  __pyx_t_1 = ((NEPWhich)__Pyx_PyInt_As_NEPWhich(__pyx_v_which)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 242, __pyx_L1_error)
+  __pyx_t_1 = ((NEPWhich)__Pyx_PyInt_As_NEPWhich(__pyx_v_which)); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 241, __pyx_L1_error)
   __pyx_v_val = __pyx_t_1;
 
-  /* "SLEPc/NEP.pyx":243
+  /* "SLEPc/NEP.pyx":242
  *         """
  *         cdef SlepcNEPWhich val = which
  *         CHKERR( NEPSetWhichEigenpairs(self.nep, val) )             # <<<<<<<<<<<<<<
  * 
  *     def getTolerances(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetWhichEigenpairs(__pyx_v_self->nep, __pyx_v_val)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(16, 243, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetWhichEigenpairs(__pyx_v_self->nep, __pyx_v_val)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 242, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":233
+  /* "SLEPc/NEP.pyx":232
  *         return val
  * 
  *     def setWhichEigenpairs(self, which):             # <<<<<<<<<<<<<<
@@ -45660,7 +47923,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_24setWhichEigenpairs(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":245
+/* "SLEPc/NEP.pyx":244
  *         CHKERR( NEPSetWhichEigenpairs(self.nep, val) )
  * 
  *     def getTolerances(self):             # <<<<<<<<<<<<<<
@@ -45696,7 +47959,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_26getTolerances(struct PySlepcNE
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getTolerances", 0);
 
-  /* "SLEPc/NEP.pyx":257
+  /* "SLEPc/NEP.pyx":256
  *             The maximum number of iterations.
  *         """
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -45705,7 +47968,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_26getTolerances(struct PySlepcNE
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/NEP.pyx":258
+  /* "SLEPc/NEP.pyx":257
  *         """
  *         cdef PetscReal rval = 0
  *         cdef PetscInt  ival = 0             # <<<<<<<<<<<<<<
@@ -45714,16 +47977,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_26getTolerances(struct PySlepcNE
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/NEP.pyx":259
+  /* "SLEPc/NEP.pyx":258
  *         cdef PetscReal rval = 0
  *         cdef PetscInt  ival = 0
  *         CHKERR( NEPGetTolerances(self.nep, &rval, &ival) )             # <<<<<<<<<<<<<<
  *         return (toReal(rval), toInt(ival))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetTolerances(__pyx_v_self->nep, (&__pyx_v_rval), (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 259, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetTolerances(__pyx_v_self->nep, (&__pyx_v_rval), (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 258, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":260
+  /* "SLEPc/NEP.pyx":259
  *         cdef PetscInt  ival = 0
  *         CHKERR( NEPGetTolerances(self.nep, &rval, &ival) )
  *         return (toReal(rval), toInt(ival))             # <<<<<<<<<<<<<<
@@ -45731,11 +47994,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_26getTolerances(struct PySlepcNE
  *     def setTolerances(self, tol=None, maxit=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 260, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 259, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 260, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 259, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 260, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 259, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
@@ -45747,7 +48010,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_26getTolerances(struct PySlepcNE
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":245
+  /* "SLEPc/NEP.pyx":244
  *         CHKERR( NEPSetWhichEigenpairs(self.nep, val) )
  * 
  *     def getTolerances(self):             # <<<<<<<<<<<<<<
@@ -45768,7 +48031,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_26getTolerances(struct PySlepcNE
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":262
+/* "SLEPc/NEP.pyx":261
  *         return (toReal(rval), toInt(ival))
  * 
  *     def setTolerances(self, tol=None, maxit=None):             # <<<<<<<<<<<<<<
@@ -45795,7 +48058,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_29setTolerances(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -45806,6 +48071,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_29setTolerances(PyObject *__pyx_
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_tol);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_maxit);
@@ -45813,12 +48079,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_29setTolerances(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTolerances") < 0)) __PYX_ERR(16, 262, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTolerances") < 0)) __PYX_ERR(17, 261, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -45828,7 +48096,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_29setTolerances(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setTolerances", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 262, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setTolerances", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 261, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.setTolerances", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -45853,7 +48121,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_28setTolerances(struct PySlepcNE
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("setTolerances", 0);
 
-  /* "SLEPc/NEP.pyx":273
+  /* "SLEPc/NEP.pyx":272
  *             The maximum number of iterations.
  *         """
  *         cdef PetscReal rval = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -45862,7 +48130,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_28setTolerances(struct PySlepcNE
  */
   __pyx_v_rval = PETSC_DEFAULT;
 
-  /* "SLEPc/NEP.pyx":274
+  /* "SLEPc/NEP.pyx":273
  *         """
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         cdef PetscInt  ival = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -45871,7 +48139,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_28setTolerances(struct PySlepcNE
  */
   __pyx_v_ival = PETSC_DEFAULT;
 
-  /* "SLEPc/NEP.pyx":275
+  /* "SLEPc/NEP.pyx":274
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         cdef PetscInt  ival = PETSC_DEFAULT
  *         if tol   is not None: rval = asReal(tol)             # <<<<<<<<<<<<<<
@@ -45881,11 +48149,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_28setTolerances(struct PySlepcNE
   __pyx_t_1 = (__pyx_v_tol != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_tol); if (unlikely(__pyx_t_3 == -1.0 && PyErr_Occurred())) __PYX_ERR(16, 275, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_tol); if (unlikely(__pyx_t_3 == ((PetscReal)-1.0) && PyErr_Occurred())) __PYX_ERR(17, 274, __pyx_L1_error)
     __pyx_v_rval = __pyx_t_3;
   }
 
-  /* "SLEPc/NEP.pyx":276
+  /* "SLEPc/NEP.pyx":275
  *         cdef PetscInt  ival = PETSC_DEFAULT
  *         if tol   is not None: rval = asReal(tol)
  *         if maxit is not None: ival = asInt(maxit)             # <<<<<<<<<<<<<<
@@ -45895,20 +48163,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_28setTolerances(struct PySlepcNE
   __pyx_t_2 = (__pyx_v_maxit != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_maxit); if (unlikely(__pyx_t_4 == -1L && PyErr_Occurred())) __PYX_ERR(16, 276, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_maxit); if (unlikely(__pyx_t_4 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(17, 275, __pyx_L1_error)
     __pyx_v_ival = __pyx_t_4;
   }
 
-  /* "SLEPc/NEP.pyx":277
+  /* "SLEPc/NEP.pyx":276
  *         if tol   is not None: rval = asReal(tol)
  *         if maxit is not None: ival = asInt(maxit)
  *         CHKERR( NEPSetTolerances(self.nep, rval, ival) )             # <<<<<<<<<<<<<<
  * 
  *     def getRIILagPreconditioner(self):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetTolerances(__pyx_v_self->nep, __pyx_v_rval, __pyx_v_ival)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(16, 277, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetTolerances(__pyx_v_self->nep, __pyx_v_rval, __pyx_v_ival)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(17, 276, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":262
+  /* "SLEPc/NEP.pyx":261
  *         return (toReal(rval), toInt(ival))
  * 
  *     def setTolerances(self, tol=None, maxit=None):             # <<<<<<<<<<<<<<
@@ -45928,7 +48196,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_28setTolerances(struct PySlepcNE
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":279
+/* "SLEPc/NEP.pyx":278
  *         CHKERR( NEPSetTolerances(self.nep, rval, ival) )
  * 
  *     def getRIILagPreconditioner(self):             # <<<<<<<<<<<<<<
@@ -45961,7 +48229,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_30getRIILagPreconditioner(struct
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getRIILagPreconditioner", 0);
 
-  /* "SLEPc/NEP.pyx":288
+  /* "SLEPc/NEP.pyx":287
  *             The lag parameter.
  *         """
  *         cdef PetscInt ival = 0             # <<<<<<<<<<<<<<
@@ -45970,16 +48238,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_30getRIILagPreconditioner(struct
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/NEP.pyx":289
+  /* "SLEPc/NEP.pyx":288
  *         """
  *         cdef PetscInt ival = 0
  *         CHKERR( NEPRIIGetLagPreconditioner(self.nep, &ival) )             # <<<<<<<<<<<<<<
  *         return ival
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPRIIGetLagPreconditioner(__pyx_v_self->nep, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 289, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPRIIGetLagPreconditioner(__pyx_v_self->nep, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 288, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":290
+  /* "SLEPc/NEP.pyx":289
  *         cdef PetscInt ival = 0
  *         CHKERR( NEPRIIGetLagPreconditioner(self.nep, &ival) )
  *         return ival             # <<<<<<<<<<<<<<
@@ -45987,13 +48255,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_30getRIILagPreconditioner(struct
  *     def setRIILagPreconditioner(self, lag):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 290, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 289, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":279
+  /* "SLEPc/NEP.pyx":278
  *         CHKERR( NEPSetTolerances(self.nep, rval, ival) )
  * 
  *     def getRIILagPreconditioner(self):             # <<<<<<<<<<<<<<
@@ -46012,7 +48280,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_30getRIILagPreconditioner(struct
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":292
+/* "SLEPc/NEP.pyx":291
  *         return ival
  * 
  *     def setRIILagPreconditioner(self, lag):             # <<<<<<<<<<<<<<
@@ -46036,6 +48304,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_33setRIILagPreconditioner(PyObje
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -46046,7 +48315,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_33setRIILagPreconditioner(PyObje
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRIILagPreconditioner") < 0)) __PYX_ERR(16, 292, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRIILagPreconditioner") < 0)) __PYX_ERR(17, 291, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -46057,7 +48326,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_33setRIILagPreconditioner(PyObje
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setRIILagPreconditioner", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 292, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setRIILagPreconditioner", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 291, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.setRIILagPreconditioner", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -46078,26 +48347,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_32setRIILagPreconditioner(struct
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setRIILagPreconditioner", 0);
 
-  /* "SLEPc/NEP.pyx":304
+  /* "SLEPc/NEP.pyx":303
  *             the Jacobian is built, etc.
  *         """
  *         cdef PetscInt ival = lag             # <<<<<<<<<<<<<<
  *         CHKERR( NEPRIISetLagPreconditioner(self.nep, ival) )
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_lag); if (unlikely((__pyx_t_1 == (PetscInt)-1) && PyErr_Occurred())) __PYX_ERR(16, 304, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_As_PetscInt(__pyx_v_lag); if (unlikely((__pyx_t_1 == ((PetscInt)-1)) && PyErr_Occurred())) __PYX_ERR(17, 303, __pyx_L1_error)
   __pyx_v_ival = __pyx_t_1;
 
-  /* "SLEPc/NEP.pyx":305
+  /* "SLEPc/NEP.pyx":304
  *         """
  *         cdef PetscInt ival = lag
  *         CHKERR( NEPRIISetLagPreconditioner(self.nep, ival) )             # <<<<<<<<<<<<<<
  * 
  *     def getTrackAll(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPRIISetLagPreconditioner(__pyx_v_self->nep, __pyx_v_ival)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(16, 305, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPRIISetLagPreconditioner(__pyx_v_self->nep, __pyx_v_ival)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 304, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":292
+  /* "SLEPc/NEP.pyx":291
  *         return ival
  * 
  *     def setRIILagPreconditioner(self, lag):             # <<<<<<<<<<<<<<
@@ -46117,7 +48386,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_32setRIILagPreconditioner(struct
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":307
+/* "SLEPc/NEP.pyx":306
  *         CHKERR( NEPRIISetLagPreconditioner(self.nep, ival) )
  * 
  *     def getTrackAll(self):             # <<<<<<<<<<<<<<
@@ -46150,7 +48419,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_34getTrackAll(struct PySlepcNEPO
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getTrackAll", 0);
 
-  /* "SLEPc/NEP.pyx":317
+  /* "SLEPc/NEP.pyx":316
  *             Whether the solver compute all residuals or not.
  *         """
  *         cdef PetscBool tval = PETSC_FALSE             # <<<<<<<<<<<<<<
@@ -46159,16 +48428,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_34getTrackAll(struct PySlepcNEPO
  */
   __pyx_v_tval = PETSC_FALSE;
 
-  /* "SLEPc/NEP.pyx":318
+  /* "SLEPc/NEP.pyx":317
  *         """
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( NEPGetTrackAll(self.nep, &tval) )             # <<<<<<<<<<<<<<
  *         return <bint>tval
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetTrackAll(__pyx_v_self->nep, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 318, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetTrackAll(__pyx_v_self->nep, (&__pyx_v_tval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 317, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":319
+  /* "SLEPc/NEP.pyx":318
  *         cdef PetscBool tval = PETSC_FALSE
  *         CHKERR( NEPGetTrackAll(self.nep, &tval) )
  *         return <bint>tval             # <<<<<<<<<<<<<<
@@ -46176,13 +48445,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_34getTrackAll(struct PySlepcNEPO
  *     def setTrackAll(self, trackall):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 319, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_PetscBool(__pyx_v_tval); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 318, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":307
+  /* "SLEPc/NEP.pyx":306
  *         CHKERR( NEPRIISetLagPreconditioner(self.nep, ival) )
  * 
  *     def getTrackAll(self):             # <<<<<<<<<<<<<<
@@ -46201,7 +48470,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_34getTrackAll(struct PySlepcNEPO
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":321
+/* "SLEPc/NEP.pyx":320
  *         return <bint>tval
  * 
  *     def setTrackAll(self, trackall):             # <<<<<<<<<<<<<<
@@ -46225,6 +48494,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_37setTrackAll(PyObject *__pyx_v_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -46235,7 +48505,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_37setTrackAll(PyObject *__pyx_v_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTrackAll") < 0)) __PYX_ERR(16, 321, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTrackAll") < 0)) __PYX_ERR(17, 320, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -46246,7 +48516,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_37setTrackAll(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setTrackAll", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 321, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setTrackAll", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 320, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.setTrackAll", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -46267,26 +48537,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_36setTrackAll(struct PySlepcNEPO
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setTrackAll", 0);
 
-  /* "SLEPc/NEP.pyx":331
+  /* "SLEPc/NEP.pyx":330
  *             Whether compute all residuals or not.
  *         """
  *         cdef PetscBool tval = trackall             # <<<<<<<<<<<<<<
  *         CHKERR( NEPSetTrackAll(self.nep, tval) )
  * 
  */
-  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_trackall)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 331, __pyx_L1_error)
+  __pyx_t_1 = ((PetscBool)__Pyx_PyInt_As_PetscBool(__pyx_v_trackall)); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 330, __pyx_L1_error)
   __pyx_v_tval = __pyx_t_1;
 
-  /* "SLEPc/NEP.pyx":332
+  /* "SLEPc/NEP.pyx":331
  *         """
  *         cdef PetscBool tval = trackall
  *         CHKERR( NEPSetTrackAll(self.nep, tval) )             # <<<<<<<<<<<<<<
  * 
  *     def getDimensions(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetTrackAll(__pyx_v_self->nep, __pyx_v_tval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(16, 332, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetTrackAll(__pyx_v_self->nep, __pyx_v_tval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 331, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":321
+  /* "SLEPc/NEP.pyx":320
  *         return <bint>tval
  * 
  *     def setTrackAll(self, trackall):             # <<<<<<<<<<<<<<
@@ -46306,7 +48576,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_36setTrackAll(struct PySlepcNEPO
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":334
+/* "SLEPc/NEP.pyx":333
  *         CHKERR( NEPSetTrackAll(self.nep, tval) )
  * 
  *     def getDimensions(self):             # <<<<<<<<<<<<<<
@@ -46344,7 +48614,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_38getDimensions(struct PySlepcNE
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("getDimensions", 0);
 
-  /* "SLEPc/NEP.pyx":348
+  /* "SLEPc/NEP.pyx":347
  *             Maximum dimension allowed for the projected problem.
  *         """
  *         cdef PetscInt ival1 = 0             # <<<<<<<<<<<<<<
@@ -46353,7 +48623,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_38getDimensions(struct PySlepcNE
  */
   __pyx_v_ival1 = 0;
 
-  /* "SLEPc/NEP.pyx":349
+  /* "SLEPc/NEP.pyx":348
  *         """
  *         cdef PetscInt ival1 = 0
  *         cdef PetscInt ival2 = 0             # <<<<<<<<<<<<<<
@@ -46362,7 +48632,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_38getDimensions(struct PySlepcNE
  */
   __pyx_v_ival2 = 0;
 
-  /* "SLEPc/NEP.pyx":350
+  /* "SLEPc/NEP.pyx":349
  *         cdef PetscInt ival1 = 0
  *         cdef PetscInt ival2 = 0
  *         cdef PetscInt ival3 = 0             # <<<<<<<<<<<<<<
@@ -46371,16 +48641,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_38getDimensions(struct PySlepcNE
  */
   __pyx_v_ival3 = 0;
 
-  /* "SLEPc/NEP.pyx":351
+  /* "SLEPc/NEP.pyx":350
  *         cdef PetscInt ival2 = 0
  *         cdef PetscInt ival3 = 0
  *         CHKERR( NEPGetDimensions(self.nep, &ival1, &ival2, &ival3) )             # <<<<<<<<<<<<<<
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetDimensions(__pyx_v_self->nep, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_ival3))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 351, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetDimensions(__pyx_v_self->nep, (&__pyx_v_ival1), (&__pyx_v_ival2), (&__pyx_v_ival3))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 350, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":352
+  /* "SLEPc/NEP.pyx":351
  *         cdef PetscInt ival3 = 0
  *         CHKERR( NEPGetDimensions(self.nep, &ival1, &ival2, &ival3) )
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))             # <<<<<<<<<<<<<<
@@ -46388,13 +48658,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_38getDimensions(struct PySlepcNE
  *     def setDimensions(self, nev=None, ncv=None, mpd=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 352, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival1); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 351, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 352, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival2); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 351, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival3); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 352, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 351, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 352, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 351, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
@@ -46409,7 +48679,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_38getDimensions(struct PySlepcNE
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":334
+  /* "SLEPc/NEP.pyx":333
  *         CHKERR( NEPSetTrackAll(self.nep, tval) )
  * 
  *     def getDimensions(self):             # <<<<<<<<<<<<<<
@@ -46431,7 +48701,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_38getDimensions(struct PySlepcNE
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":354
+/* "SLEPc/NEP.pyx":353
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  *     def setDimensions(self, nev=None, ncv=None, mpd=None):             # <<<<<<<<<<<<<<
@@ -46460,8 +48730,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_41setDimensions(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -46472,11 +48745,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_41setDimensions(PyObject *__pyx_
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nev);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ncv);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mpd);
@@ -46484,13 +48759,16 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_41setDimensions(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDimensions") < 0)) __PYX_ERR(16, 354, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDimensions") < 0)) __PYX_ERR(17, 353, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -46501,7 +48779,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_41setDimensions(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setDimensions", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 354, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setDimensions", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 353, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.setDimensions", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -46526,7 +48804,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_40setDimensions(struct PySlepcNE
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("setDimensions", 0);
 
-  /* "SLEPc/NEP.pyx":369
+  /* "SLEPc/NEP.pyx":368
  *             Maximum dimension allowed for the projected problem.
  *         """
  *         cdef PetscInt ival1 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -46535,7 +48813,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_40setDimensions(struct PySlepcNE
  */
   __pyx_v_ival1 = PETSC_DEFAULT;
 
-  /* "SLEPc/NEP.pyx":370
+  /* "SLEPc/NEP.pyx":369
  *         """
  *         cdef PetscInt ival1 = PETSC_DEFAULT
  *         cdef PetscInt ival2 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -46544,7 +48822,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_40setDimensions(struct PySlepcNE
  */
   __pyx_v_ival2 = PETSC_DEFAULT;
 
-  /* "SLEPc/NEP.pyx":371
+  /* "SLEPc/NEP.pyx":370
  *         cdef PetscInt ival1 = PETSC_DEFAULT
  *         cdef PetscInt ival2 = PETSC_DEFAULT
  *         cdef PetscInt ival3 = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -46553,7 +48831,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_40setDimensions(struct PySlepcNE
  */
   __pyx_v_ival3 = PETSC_DEFAULT;
 
-  /* "SLEPc/NEP.pyx":372
+  /* "SLEPc/NEP.pyx":371
  *         cdef PetscInt ival2 = PETSC_DEFAULT
  *         cdef PetscInt ival3 = PETSC_DEFAULT
  *         if nev is not None: ival1 = asInt(nev)             # <<<<<<<<<<<<<<
@@ -46563,11 +48841,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_40setDimensions(struct PySlepcNE
   __pyx_t_1 = (__pyx_v_nev != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_nev); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(16, 372, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_nev); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(17, 371, __pyx_L1_error)
     __pyx_v_ival1 = __pyx_t_3;
   }
 
-  /* "SLEPc/NEP.pyx":373
+  /* "SLEPc/NEP.pyx":372
  *         cdef PetscInt ival3 = PETSC_DEFAULT
  *         if nev is not None: ival1 = asInt(nev)
  *         if ncv is not None: ival2 = asInt(ncv)             # <<<<<<<<<<<<<<
@@ -46577,11 +48855,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_40setDimensions(struct PySlepcNE
   __pyx_t_2 = (__pyx_v_ncv != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_ncv); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(16, 373, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_ncv); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(17, 372, __pyx_L1_error)
     __pyx_v_ival2 = __pyx_t_3;
   }
 
-  /* "SLEPc/NEP.pyx":374
+  /* "SLEPc/NEP.pyx":373
  *         if nev is not None: ival1 = asInt(nev)
  *         if ncv is not None: ival2 = asInt(ncv)
  *         if mpd is not None: ival3 = asInt(mpd)             # <<<<<<<<<<<<<<
@@ -46591,20 +48869,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_40setDimensions(struct PySlepcNE
   __pyx_t_1 = (__pyx_v_mpd != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_mpd); if (unlikely(__pyx_t_3 == -1L && PyErr_Occurred())) __PYX_ERR(16, 374, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_mpd); if (unlikely(__pyx_t_3 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(17, 373, __pyx_L1_error)
     __pyx_v_ival3 = __pyx_t_3;
   }
 
-  /* "SLEPc/NEP.pyx":375
+  /* "SLEPc/NEP.pyx":374
  *         if ncv is not None: ival2 = asInt(ncv)
  *         if mpd is not None: ival3 = asInt(mpd)
  *         CHKERR( NEPSetDimensions(self.nep, ival1, ival2, ival3) )             # <<<<<<<<<<<<<<
  * 
  *     def getBV(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetDimensions(__pyx_v_self->nep, __pyx_v_ival1, __pyx_v_ival2, __pyx_v_ival3)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(16, 375, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetDimensions(__pyx_v_self->nep, __pyx_v_ival1, __pyx_v_ival2, __pyx_v_ival3)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(17, 374, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":354
+  /* "SLEPc/NEP.pyx":353
  *         return (toInt(ival1), toInt(ival2), toInt(ival3))
  * 
  *     def setDimensions(self, nev=None, ncv=None, mpd=None):             # <<<<<<<<<<<<<<
@@ -46624,7 +48902,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_40setDimensions(struct PySlepcNE
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":377
+/* "SLEPc/NEP.pyx":376
  *         CHKERR( NEPSetDimensions(self.nep, ival1, ival2, ival3) )
  * 
  *     def getBV(self):             # <<<<<<<<<<<<<<
@@ -46657,28 +48935,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_42getBV(struct PySlepcNEPObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getBV", 0);
 
-  /* "SLEPc/NEP.pyx":386
+  /* "SLEPc/NEP.pyx":385
  *             The basis vectors context.
  *         """
  *         cdef BV bv = BV()             # <<<<<<<<<<<<<<
  *         CHKERR( NEPGetBV(self.nep, &bv.bv) )
  *         PetscINCREF(bv.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 386, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 385, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bv = ((struct PySlepcBVObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/NEP.pyx":387
+  /* "SLEPc/NEP.pyx":386
  *         """
  *         cdef BV bv = BV()
  *         CHKERR( NEPGetBV(self.nep, &bv.bv) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(bv.obj)
  *         return bv
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetBV(__pyx_v_self->nep, (&__pyx_v_bv->bv))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(16, 387, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetBV(__pyx_v_self->nep, (&__pyx_v_bv->bv))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 386, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":388
+  /* "SLEPc/NEP.pyx":387
  *         cdef BV bv = BV()
  *         CHKERR( NEPGetBV(self.nep, &bv.bv) )
  *         PetscINCREF(bv.obj)             # <<<<<<<<<<<<<<
@@ -46687,19 +48965,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_42getBV(struct PySlepcNEPObject
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_bv->__pyx_base.obj);
 
-  /* "SLEPc/NEP.pyx":389
+  /* "SLEPc/NEP.pyx":388
  *         CHKERR( NEPGetBV(self.nep, &bv.bv) )
  *         PetscINCREF(bv.obj)
  *         return bv             # <<<<<<<<<<<<<<
  * 
- *     def setBV(self, BV bv not None):
+ *     def setBV(self, BV bv):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_bv));
   __pyx_r = ((PyObject *)__pyx_v_bv);
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":377
+  /* "SLEPc/NEP.pyx":376
  *         CHKERR( NEPSetDimensions(self.nep, ival1, ival2, ival3) )
  * 
  *     def getBV(self):             # <<<<<<<<<<<<<<
@@ -46719,10 +48997,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_42getBV(struct PySlepcNEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":391
+/* "SLEPc/NEP.pyx":390
  *         return bv
  * 
- *     def setBV(self, BV bv not None):             # <<<<<<<<<<<<<<
+ *     def setBV(self, BV bv):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a basis vectors object to the eigensolver.
  */
@@ -46743,6 +49021,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_45setBV(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -46753,7 +49032,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_45setBV(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBV") < 0)) __PYX_ERR(16, 391, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBV") < 0)) __PYX_ERR(17, 390, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -46764,13 +49043,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_45setBV(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setBV", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 391, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setBV", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 390, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.setBV", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bv), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "bv", 0))) __PYX_ERR(16, 391, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bv), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "bv", 0))) __PYX_ERR(17, 390, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3NEP_44setBV(((struct PySlepcNEPObject *)__pyx_v_self), __pyx_v_bv);
 
   /* function exit code */
@@ -46788,19 +49067,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_44setBV(struct PySlepcNEPObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setBV", 0);
 
-  /* "SLEPc/NEP.pyx":400
+  /* "SLEPc/NEP.pyx":399
  *             The basis vectors context.
  *         """
  *         CHKERR( NEPSetBV(self.nep, bv.bv) )             # <<<<<<<<<<<<<<
  * 
  *     def getRG(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetBV(__pyx_v_self->nep, __pyx_v_bv->bv)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 400, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetBV(__pyx_v_self->nep, __pyx_v_bv->bv)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 399, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":391
+  /* "SLEPc/NEP.pyx":390
  *         return bv
  * 
- *     def setBV(self, BV bv not None):             # <<<<<<<<<<<<<<
+ *     def setBV(self, BV bv):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a basis vectors object to the eigensolver.
  */
@@ -46817,7 +49096,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_44setBV(struct PySlepcNEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":402
+/* "SLEPc/NEP.pyx":401
  *         CHKERR( NEPSetBV(self.nep, bv.bv) )
  * 
  *     def getRG(self):             # <<<<<<<<<<<<<<
@@ -46850,28 +49129,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_46getRG(struct PySlepcNEPObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getRG", 0);
 
-  /* "SLEPc/NEP.pyx":411
+  /* "SLEPc/NEP.pyx":410
  *             The region context.
  *         """
  *         cdef RG rg = RG()             # <<<<<<<<<<<<<<
  *         CHKERR( NEPGetRG(self.nep, &rg.rg) )
  *         PetscINCREF(rg.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_RG), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 411, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_RG), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 410, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_rg = ((struct PySlepcRGObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/NEP.pyx":412
+  /* "SLEPc/NEP.pyx":411
  *         """
  *         cdef RG rg = RG()
  *         CHKERR( NEPGetRG(self.nep, &rg.rg) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(rg.obj)
  *         return rg
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetRG(__pyx_v_self->nep, (&__pyx_v_rg->rg))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(16, 412, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetRG(__pyx_v_self->nep, (&__pyx_v_rg->rg))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 411, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":413
+  /* "SLEPc/NEP.pyx":412
  *         cdef RG rg = RG()
  *         CHKERR( NEPGetRG(self.nep, &rg.rg) )
  *         PetscINCREF(rg.obj)             # <<<<<<<<<<<<<<
@@ -46880,19 +49159,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_46getRG(struct PySlepcNEPObject
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_rg->__pyx_base.obj);
 
-  /* "SLEPc/NEP.pyx":414
+  /* "SLEPc/NEP.pyx":413
  *         CHKERR( NEPGetRG(self.nep, &rg.rg) )
  *         PetscINCREF(rg.obj)
  *         return rg             # <<<<<<<<<<<<<<
  * 
- *     def setRG(self, RG rg not None):
+ *     def setRG(self, RG rg):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_rg));
   __pyx_r = ((PyObject *)__pyx_v_rg);
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":402
+  /* "SLEPc/NEP.pyx":401
  *         CHKERR( NEPSetBV(self.nep, bv.bv) )
  * 
  *     def getRG(self):             # <<<<<<<<<<<<<<
@@ -46912,10 +49191,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_46getRG(struct PySlepcNEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":416
+/* "SLEPc/NEP.pyx":415
  *         return rg
  * 
- *     def setRG(self, RG rg not None):             # <<<<<<<<<<<<<<
+ *     def setRG(self, RG rg):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a region object to the eigensolver.
  */
@@ -46936,6 +49215,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_49setRG(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -46946,7 +49226,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_49setRG(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRG") < 0)) __PYX_ERR(16, 416, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setRG") < 0)) __PYX_ERR(17, 415, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -46957,13 +49237,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_49setRG(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setRG", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 416, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setRG", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 415, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.setRG", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rg), __pyx_ptype_8slepc4py_5SLEPc_RG, 0, "rg", 0))) __PYX_ERR(16, 416, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rg), __pyx_ptype_8slepc4py_5SLEPc_RG, 0, "rg", 0))) __PYX_ERR(17, 415, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3NEP_48setRG(((struct PySlepcNEPObject *)__pyx_v_self), __pyx_v_rg);
 
   /* function exit code */
@@ -46981,19 +49261,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_48setRG(struct PySlepcNEPObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setRG", 0);
 
-  /* "SLEPc/NEP.pyx":425
+  /* "SLEPc/NEP.pyx":424
  *             The region context.
  *         """
  *         CHKERR( NEPSetRG(self.nep, rg.rg) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetRG(__pyx_v_self->nep, __pyx_v_rg->rg)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 425, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetRG(__pyx_v_self->nep, __pyx_v_rg->rg)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 424, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":416
+  /* "SLEPc/NEP.pyx":415
  *         return rg
  * 
- *     def setRG(self, RG rg not None):             # <<<<<<<<<<<<<<
+ *     def setRG(self, RG rg):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a region object to the eigensolver.
  */
@@ -47010,7 +49290,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_48setRG(struct PySlepcNEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":429
+/* "SLEPc/NEP.pyx":428
  *     #
  * 
  *     def setInitialSpace(self, space):             # <<<<<<<<<<<<<<
@@ -47034,6 +49314,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_51setInitialSpace(PyObject *__py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -47044,7 +49325,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_51setInitialSpace(PyObject *__py
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setInitialSpace") < 0)) __PYX_ERR(16, 429, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setInitialSpace") < 0)) __PYX_ERR(17, 428, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -47055,7 +49336,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_51setInitialSpace(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setInitialSpace", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 429, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setInitialSpace", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 428, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.setInitialSpace", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -47085,7 +49366,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_50setInitialSpace(struct PySlepc
   __Pyx_RefNannySetupContext("setInitialSpace", 0);
   __Pyx_INCREF(__pyx_v_space);
 
-  /* "SLEPc/NEP.pyx":439
+  /* "SLEPc/NEP.pyx":438
  *            The initial space
  *         """
  *         if isinstance(space, Vec): space = [space]             # <<<<<<<<<<<<<<
@@ -47095,7 +49376,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_50setInitialSpace(struct PySlepc
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_space, __pyx_ptype_8petsc4py_5PETSc_Vec); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 439, __pyx_L1_error)
+    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 438, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_space);
     __Pyx_GIVEREF(__pyx_v_space);
@@ -47104,7 +49385,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_50setInitialSpace(struct PySlepc
     __pyx_t_3 = 0;
   }
 
-  /* "SLEPc/NEP.pyx":440
+  /* "SLEPc/NEP.pyx":439
  *         """
  *         if isinstance(space, Vec): space = [space]
  *         cdef PetscVec *vs = NULL             # <<<<<<<<<<<<<<
@@ -47113,7 +49394,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_50setInitialSpace(struct PySlepc
  */
   __pyx_v_vs = NULL;
 
-  /* "SLEPc/NEP.pyx":441
+  /* "SLEPc/NEP.pyx":440
  *         if isinstance(space, Vec): space = [space]
  *         cdef PetscVec *vs = NULL
  *         cdef Py_ssize_t i = 0, ns = len(space)             # <<<<<<<<<<<<<<
@@ -47121,22 +49402,22 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_50setInitialSpace(struct PySlepc
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
  */
   __pyx_v_i = 0;
-  __pyx_t_4 = PyObject_Length(__pyx_v_space); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(16, 441, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_space); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(17, 440, __pyx_L1_error)
   __pyx_v_ns = __pyx_t_4;
 
-  /* "SLEPc/NEP.pyx":442
+  /* "SLEPc/NEP.pyx":441
  *         cdef PetscVec *vs = NULL
  *         cdef Py_ssize_t i = 0, ns = len(space)
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)             # <<<<<<<<<<<<<<
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
  *         CHKERR( NEPSetInitialSpace(self.nep, <PetscInt>ns, vs) )
  */
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_ns) * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_vs))); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 442, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_ns) * (sizeof(struct PyPetscVecObject))), ((void **)(&__pyx_v_vs))); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 441, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_tmp = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "SLEPc/NEP.pyx":443
+  /* "SLEPc/NEP.pyx":442
  *         cdef Py_ssize_t i = 0, ns = len(space)
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec             # <<<<<<<<<<<<<<
@@ -47146,24 +49427,24 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_50setInitialSpace(struct PySlepc
   __pyx_t_4 = __pyx_v_ns;
   for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
     __pyx_v_i = __pyx_t_5;
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_space, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 443, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_space, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 442, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Vec)))) __PYX_ERR(16, 443, __pyx_L1_error)
+    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Vec)))) __PYX_ERR(17, 442, __pyx_L1_error)
     __pyx_t_6 = ((struct PyPetscVecObject *)__pyx_t_3)->vec;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     (__pyx_v_vs[__pyx_v_i]) = __pyx_t_6;
   }
 
-  /* "SLEPc/NEP.pyx":444
+  /* "SLEPc/NEP.pyx":443
  *         cdef tmp = allocate(<size_t>ns*sizeof(Vec),<void**>&vs)
  *         for i in range(ns): vs[i] = (<Vec?>space[i]).vec
  *         CHKERR( NEPSetInitialSpace(self.nep, <PetscInt>ns, vs) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetInitialSpace(__pyx_v_self->nep, ((PetscInt)__pyx_v_ns), __pyx_v_vs)); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(16, 444, __pyx_L1_error)
+  __pyx_t_7 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetInitialSpace(__pyx_v_self->nep, ((PetscInt)__pyx_v_ns), __pyx_v_vs)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(17, 443, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":429
+  /* "SLEPc/NEP.pyx":428
  *     #
  * 
  *     def setInitialSpace(self, space):             # <<<<<<<<<<<<<<
@@ -47186,7 +49467,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_50setInitialSpace(struct PySlepc
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":448
+/* "SLEPc/NEP.pyx":447
  *     #
  * 
  *     def cancelMonitor(self):             # <<<<<<<<<<<<<<
@@ -47217,16 +49498,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_52cancelMonitor(struct PySlepcNE
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("cancelMonitor", 0);
 
-  /* "SLEPc/NEP.pyx":452
+  /* "SLEPc/NEP.pyx":451
  *         Clears all monitors for a NEP object.
  *         """
  *         CHKERR( NEPMonitorCancel(self.nep) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPMonitorCancel(__pyx_v_self->nep)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 452, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPMonitorCancel(__pyx_v_self->nep)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 451, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":448
+  /* "SLEPc/NEP.pyx":447
  *     #
  * 
  *     def cancelMonitor(self):             # <<<<<<<<<<<<<<
@@ -47246,7 +49527,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_52cancelMonitor(struct PySlepcNE
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":456
+/* "SLEPc/NEP.pyx":455
  *     #
  * 
  *     def setUp(self):             # <<<<<<<<<<<<<<
@@ -47277,16 +49558,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_54setUp(struct PySlepcNEPObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setUp", 0);
 
-  /* "SLEPc/NEP.pyx":461
+  /* "SLEPc/NEP.pyx":460
  *         execution of the eigensolver.
  *         """
  *         CHKERR( NEPSetUp(self.nep) )             # <<<<<<<<<<<<<<
  * 
  *     def solve(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetUp(__pyx_v_self->nep)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 461, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetUp(__pyx_v_self->nep)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 460, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":456
+  /* "SLEPc/NEP.pyx":455
  *     #
  * 
  *     def setUp(self):             # <<<<<<<<<<<<<<
@@ -47306,7 +49587,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_54setUp(struct PySlepcNEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":463
+/* "SLEPc/NEP.pyx":462
  *         CHKERR( NEPSetUp(self.nep) )
  * 
  *     def solve(self):             # <<<<<<<<<<<<<<
@@ -47337,16 +49618,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_56solve(struct PySlepcNEPObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("solve", 0);
 
-  /* "SLEPc/NEP.pyx":467
+  /* "SLEPc/NEP.pyx":466
  *         Solves the eigensystem.
  *         """
  *         CHKERR( NEPSolve(self.nep) )             # <<<<<<<<<<<<<<
  * 
  *     def getIterationNumber(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSolve(__pyx_v_self->nep)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 467, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSolve(__pyx_v_self->nep)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 466, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":463
+  /* "SLEPc/NEP.pyx":462
  *         CHKERR( NEPSetUp(self.nep) )
  * 
  *     def solve(self):             # <<<<<<<<<<<<<<
@@ -47366,7 +49647,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_56solve(struct PySlepcNEPObject
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":469
+/* "SLEPc/NEP.pyx":468
  *         CHKERR( NEPSolve(self.nep) )
  * 
  *     def getIterationNumber(self):             # <<<<<<<<<<<<<<
@@ -47399,7 +49680,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_58getIterationNumber(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getIterationNumber", 0);
 
-  /* "SLEPc/NEP.pyx":480
+  /* "SLEPc/NEP.pyx":479
  *              Iteration number.
  *         """
  *         cdef PetscInt ival = 0             # <<<<<<<<<<<<<<
@@ -47408,16 +49689,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_58getIterationNumber(struct PySl
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/NEP.pyx":481
+  /* "SLEPc/NEP.pyx":480
  *         """
  *         cdef PetscInt ival = 0
  *         CHKERR( NEPGetIterationNumber(self.nep, &ival) )             # <<<<<<<<<<<<<<
  *         return toInt(ival)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetIterationNumber(__pyx_v_self->nep, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 481, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetIterationNumber(__pyx_v_self->nep, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 480, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":482
+  /* "SLEPc/NEP.pyx":481
  *         cdef PetscInt ival = 0
  *         CHKERR( NEPGetIterationNumber(self.nep, &ival) )
  *         return toInt(ival)             # <<<<<<<<<<<<<<
@@ -47425,13 +49706,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_58getIterationNumber(struct PySl
  *     def getConvergedReason(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 482, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 481, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":469
+  /* "SLEPc/NEP.pyx":468
  *         CHKERR( NEPSolve(self.nep) )
  * 
  *     def getIterationNumber(self):             # <<<<<<<<<<<<<<
@@ -47450,7 +49731,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_58getIterationNumber(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":484
+/* "SLEPc/NEP.pyx":483
  *         return toInt(ival)
  * 
  *     def getConvergedReason(self):             # <<<<<<<<<<<<<<
@@ -47483,7 +49764,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_60getConvergedReason(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getConvergedReason", 0);
 
-  /* "SLEPc/NEP.pyx":494
+  /* "SLEPc/NEP.pyx":493
  *             converged.
  *         """
  *         cdef SlepcNEPConvergedReason val = NEP_CONVERGED_ITERATING             # <<<<<<<<<<<<<<
@@ -47492,16 +49773,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_60getConvergedReason(struct PySl
  */
   __pyx_v_val = NEP_CONVERGED_ITERATING;
 
-  /* "SLEPc/NEP.pyx":495
+  /* "SLEPc/NEP.pyx":494
  *         """
  *         cdef SlepcNEPConvergedReason val = NEP_CONVERGED_ITERATING
  *         CHKERR( NEPGetConvergedReason(self.nep, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetConvergedReason(__pyx_v_self->nep, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 495, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetConvergedReason(__pyx_v_self->nep, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 494, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":496
+  /* "SLEPc/NEP.pyx":495
  *         cdef SlepcNEPConvergedReason val = NEP_CONVERGED_ITERATING
  *         CHKERR( NEPGetConvergedReason(self.nep, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -47509,13 +49790,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_60getConvergedReason(struct PySl
  * 
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_NEPConvergedReason(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 496, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_NEPConvergedReason(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 495, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":484
+  /* "SLEPc/NEP.pyx":483
  *         return toInt(ival)
  * 
  *     def getConvergedReason(self):             # <<<<<<<<<<<<<<
@@ -47534,7 +49815,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_60getConvergedReason(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":499
+/* "SLEPc/NEP.pyx":498
  * 
  * 
  *     def getConverged(self):             # <<<<<<<<<<<<<<
@@ -47567,7 +49848,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_62getConverged(struct PySlepcNEP
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getConverged", 0);
 
-  /* "SLEPc/NEP.pyx":508
+  /* "SLEPc/NEP.pyx":507
  *             Number of converged eigenpairs.
  *         """
  *         cdef PetscInt ival = 0             # <<<<<<<<<<<<<<
@@ -47576,16 +49857,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_62getConverged(struct PySlepcNEP
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/NEP.pyx":509
+  /* "SLEPc/NEP.pyx":508
  *         """
  *         cdef PetscInt ival = 0
  *         CHKERR( NEPGetConverged(self.nep, &ival) )             # <<<<<<<<<<<<<<
  *         return toInt(ival)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetConverged(__pyx_v_self->nep, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 509, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetConverged(__pyx_v_self->nep, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 508, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":510
+  /* "SLEPc/NEP.pyx":509
  *         cdef PetscInt ival = 0
  *         CHKERR( NEPGetConverged(self.nep, &ival) )
  *         return toInt(ival)             # <<<<<<<<<<<<<<
@@ -47593,13 +49874,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_62getConverged(struct PySlepcNEP
  *     def getEigenpair(self, int i, Vec Vr=None, Vec Vi=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 510, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 509, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":499
+  /* "SLEPc/NEP.pyx":498
  * 
  * 
  *     def getConverged(self):             # <<<<<<<<<<<<<<
@@ -47618,7 +49899,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_62getConverged(struct PySlepcNEP
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":512
+/* "SLEPc/NEP.pyx":511
  *         return toInt(ival)
  * 
  *     def getEigenpair(self, int i, Vec Vr=None, Vec Vi=None):             # <<<<<<<<<<<<<<
@@ -47646,8 +49927,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_65getEigenpair(PyObject *__pyx_v
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -47656,11 +49940,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_65getEigenpair(PyObject *__pyx_v
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Vr);
           if (value) { values[1] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Vi);
@@ -47668,31 +49954,33 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_65getEigenpair(PyObject *__pyx_v
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getEigenpair") < 0)) __PYX_ERR(16, 512, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getEigenpair") < 0)) __PYX_ERR(17, 511, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 512, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(17, 511, __pyx_L3_error)
     __pyx_v_Vr = ((struct PyPetscVecObject *)values[1]);
     __pyx_v_Vi = ((struct PyPetscVecObject *)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getEigenpair", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 512, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getEigenpair", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 511, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.getEigenpair", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vr), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vr", 0))) __PYX_ERR(16, 512, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vi), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vi", 0))) __PYX_ERR(16, 512, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vr), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vr", 0))) __PYX_ERR(17, 511, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Vi), __pyx_ptype_8petsc4py_5PETSc_Vec, 1, "Vi", 0))) __PYX_ERR(17, 511, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3NEP_64getEigenpair(((struct PySlepcNEPObject *)__pyx_v_self), __pyx_v_i, __pyx_v_Vr, __pyx_v_Vi);
 
   /* function exit code */
@@ -47711,116 +49999,84 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_64getEigenpair(struct PySlepcNEP
   Vec __pyx_v_veci;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
+  Vec __pyx_t_1;
   int __pyx_t_2;
-  Vec __pyx_t_3;
-  int __pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getEigenpair", 0);
 
-  /* "SLEPc/NEP.pyx":532
+  /* "SLEPc/NEP.pyx":531
  *             The computed eigenvalue.
  *         """
  *         cdef PetscScalar sval1 = 0             # <<<<<<<<<<<<<<
  *         cdef PetscScalar sval2 = 0
- *         cdef PetscVec vecr = NULL
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
  */
   __pyx_v_sval1 = 0.0;
 
-  /* "SLEPc/NEP.pyx":533
+  /* "SLEPc/NEP.pyx":532
  *         """
  *         cdef PetscScalar sval1 = 0
  *         cdef PetscScalar sval2 = 0             # <<<<<<<<<<<<<<
- *         cdef PetscVec vecr = NULL
- *         cdef PetscVec veci = NULL
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  */
   __pyx_v_sval2 = 0.0;
 
-  /* "SLEPc/NEP.pyx":534
+  /* "SLEPc/NEP.pyx":533
  *         cdef PetscScalar sval1 = 0
  *         cdef PetscScalar sval2 = 0
- *         cdef PetscVec vecr = NULL             # <<<<<<<<<<<<<<
- *         cdef PetscVec veci = NULL
- *         if Vr is not None: vecr = Vr.vec
- */
-  __pyx_v_vecr = NULL;
-
-  /* "SLEPc/NEP.pyx":535
- *         cdef PetscScalar sval2 = 0
- *         cdef PetscVec vecr = NULL
- *         cdef PetscVec veci = NULL             # <<<<<<<<<<<<<<
- *         if Vr is not None: vecr = Vr.vec
- *         if Vi is not None: veci = Vi.vec
- */
-  __pyx_v_veci = NULL;
-
-  /* "SLEPc/NEP.pyx":536
- *         cdef PetscVec vecr = NULL
- *         cdef PetscVec veci = NULL
- *         if Vr is not None: vecr = Vr.vec             # <<<<<<<<<<<<<<
- *         if Vi is not None: veci = Vi.vec
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL             # <<<<<<<<<<<<<<
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  *         CHKERR( NEPGetEigenpair(self.nep, i, &sval1, &sval2, vecr, veci) )
  */
-  __pyx_t_1 = (((PyObject *)__pyx_v_Vr) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_Vr->vec;
-    __pyx_v_vecr = __pyx_t_3;
+  __pyx_t_2 = (((PyObject *)__pyx_v_Vr) != Py_None);
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_Vr->vec;
+  } else {
+    __pyx_t_1 = ((Vec)NULL);
   }
+  __pyx_v_vecr = __pyx_t_1;
 
-  /* "SLEPc/NEP.pyx":537
- *         cdef PetscVec veci = NULL
- *         if Vr is not None: vecr = Vr.vec
- *         if Vi is not None: veci = Vi.vec             # <<<<<<<<<<<<<<
+  /* "SLEPc/NEP.pyx":534
+ *         cdef PetscScalar sval2 = 0
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL             # <<<<<<<<<<<<<<
  *         CHKERR( NEPGetEigenpair(self.nep, i, &sval1, &sval2, vecr, veci) )
- *         return complex(toScalar(sval1), toScalar(sval2))
+ *         return toComplex(sval1, sval2)
  */
   __pyx_t_2 = (((PyObject *)__pyx_v_Vi) != Py_None);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_v_Vi->vec;
-    __pyx_v_veci = __pyx_t_3;
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_Vi->vec;
+  } else {
+    __pyx_t_1 = ((Vec)NULL);
   }
+  __pyx_v_veci = __pyx_t_1;
 
-  /* "SLEPc/NEP.pyx":538
- *         if Vr is not None: vecr = Vr.vec
- *         if Vi is not None: veci = Vi.vec
+  /* "SLEPc/NEP.pyx":535
+ *         cdef PetscVec vecr = Vr.vec if Vr is not None else <PetscVec>NULL
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  *         CHKERR( NEPGetEigenpair(self.nep, i, &sval1, &sval2, vecr, veci) )             # <<<<<<<<<<<<<<
- *         return complex(toScalar(sval1), toScalar(sval2))
+ *         return toComplex(sval1, sval2)
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetEigenpair(__pyx_v_self->nep, __pyx_v_i, (&__pyx_v_sval1), (&__pyx_v_sval2), __pyx_v_vecr, __pyx_v_veci)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(16, 538, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetEigenpair(__pyx_v_self->nep, __pyx_v_i, (&__pyx_v_sval1), (&__pyx_v_sval2), __pyx_v_vecr, __pyx_v_veci)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(17, 535, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":539
- *         if Vi is not None: veci = Vi.vec
+  /* "SLEPc/NEP.pyx":536
+ *         cdef PetscVec veci = Vi.vec if Vi is not None else <PetscVec>NULL
  *         CHKERR( NEPGetEigenpair(self.nep, i, &sval1, &sval2, vecr, veci) )
- *         return complex(toScalar(sval1), toScalar(sval2))             # <<<<<<<<<<<<<<
+ *         return toComplex(sval1, sval2)             # <<<<<<<<<<<<<<
  * 
  *     def getErrorEstimate(self, int i):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval1); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 539, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __pyx_f_8slepc4py_5SLEPc_toScalar(__pyx_v_sval2); if (unlikely(!__pyx_t_6)) __PYX_ERR(16, 539, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 539, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
-  __pyx_t_5 = 0;
-  __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyComplex_Type)), __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(16, 539, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_r = __pyx_t_6;
-  __pyx_t_6 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_toComplex(__pyx_v_sval1, __pyx_v_sval2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 536, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":512
+  /* "SLEPc/NEP.pyx":511
  *         return toInt(ival)
  * 
  *     def getEigenpair(self, int i, Vec Vr=None, Vec Vi=None):             # <<<<<<<<<<<<<<
@@ -47830,9 +50086,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_64getEigenpair(struct PySlepcNEP
 
   /* function exit code */
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_4);
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.getEigenpair", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
@@ -47841,8 +50095,8 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_64getEigenpair(struct PySlepcNEP
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":541
- *         return complex(toScalar(sval1), toScalar(sval2))
+/* "SLEPc/NEP.pyx":538
+ *         return toComplex(sval1, sval2)
  * 
  *     def getErrorEstimate(self, int i):             # <<<<<<<<<<<<<<
  *         """
@@ -47865,6 +50119,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_67getErrorEstimate(PyObject *__p
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -47875,18 +50130,18 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_67getErrorEstimate(PyObject *__p
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getErrorEstimate") < 0)) __PYX_ERR(16, 541, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getErrorEstimate") < 0)) __PYX_ERR(17, 538, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
     } else {
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 541, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(17, 538, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("getErrorEstimate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 541, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("getErrorEstimate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 538, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.getErrorEstimate", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -47907,7 +50162,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_66getErrorEstimate(struct PySlep
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getErrorEstimate", 0);
 
-  /* "SLEPc/NEP.pyx":556
+  /* "SLEPc/NEP.pyx":553
  *             Error estimate.
  *         """
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -47916,16 +50171,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_66getErrorEstimate(struct PySlep
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/NEP.pyx":557
+  /* "SLEPc/NEP.pyx":554
  *         """
  *         cdef PetscReal rval = 0
  *         CHKERR( NEPGetErrorEstimate(self.nep, i, &rval) )             # <<<<<<<<<<<<<<
  *         return toReal(rval)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetErrorEstimate(__pyx_v_self->nep, __pyx_v_i, (&__pyx_v_rval))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(16, 557, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPGetErrorEstimate(__pyx_v_self->nep, __pyx_v_i, (&__pyx_v_rval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 554, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":558
+  /* "SLEPc/NEP.pyx":555
  *         cdef PetscReal rval = 0
  *         CHKERR( NEPGetErrorEstimate(self.nep, i, &rval) )
  *         return toReal(rval)             # <<<<<<<<<<<<<<
@@ -47933,14 +50188,14 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_66getErrorEstimate(struct PySlep
  *     def computeError(self, int i, etype=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 558, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 555, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":541
- *         return complex(toScalar(sval1), toScalar(sval2))
+  /* "SLEPc/NEP.pyx":538
+ *         return toComplex(sval1, sval2)
  * 
  *     def getErrorEstimate(self, int i):             # <<<<<<<<<<<<<<
  *         """
@@ -47958,7 +50213,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_66getErrorEstimate(struct PySlep
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":560
+/* "SLEPc/NEP.pyx":557
  *         return toReal(rval)
  * 
  *     def computeError(self, int i, etype=None):             # <<<<<<<<<<<<<<
@@ -47984,7 +50239,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_69computeError(PyObject *__pyx_v
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -47993,6 +50250,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_69computeError(PyObject *__pyx_v
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_etype);
@@ -48000,22 +50258,23 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_69computeError(PyObject *__pyx_v
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "computeError") < 0)) __PYX_ERR(16, 560, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "computeError") < 0)) __PYX_ERR(17, 557, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 560, __pyx_L3_error)
+    __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(17, 557, __pyx_L3_error)
     __pyx_v_etype = values[1];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("computeError", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 560, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("computeError", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 557, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.computeError", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -48040,7 +50299,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_68computeError(struct PySlepcNEP
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("computeError", 0);
 
-  /* "SLEPc/NEP.pyx":579
+  /* "SLEPc/NEP.pyx":576
  *             ``x`` is the eigenvector.
  *         """
  *         cdef SlepcNEPErrorType et = NEP_ERROR_RELATIVE             # <<<<<<<<<<<<<<
@@ -48049,7 +50308,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_68computeError(struct PySlepcNEP
  */
   __pyx_v_et = NEP_ERROR_RELATIVE;
 
-  /* "SLEPc/NEP.pyx":580
+  /* "SLEPc/NEP.pyx":577
  *         """
  *         cdef SlepcNEPErrorType et = NEP_ERROR_RELATIVE
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -48058,7 +50317,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_68computeError(struct PySlepcNEP
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/NEP.pyx":581
+  /* "SLEPc/NEP.pyx":578
  *         cdef SlepcNEPErrorType et = NEP_ERROR_RELATIVE
  *         cdef PetscReal rval = 0
  *         if etype is not None: et = etype             # <<<<<<<<<<<<<<
@@ -48068,20 +50327,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_68computeError(struct PySlepcNEP
   __pyx_t_1 = (__pyx_v_etype != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = ((NEPErrorType)__Pyx_PyInt_As_NEPErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 581, __pyx_L1_error)
+    __pyx_t_3 = ((NEPErrorType)__Pyx_PyInt_As_NEPErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 578, __pyx_L1_error)
     __pyx_v_et = __pyx_t_3;
   }
 
-  /* "SLEPc/NEP.pyx":582
+  /* "SLEPc/NEP.pyx":579
  *         cdef PetscReal rval = 0
  *         if etype is not None: et = etype
  *         CHKERR( NEPComputeError(self.nep, i, et, &rval) )             # <<<<<<<<<<<<<<
  *         return toReal(rval)
  * 
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPComputeError(__pyx_v_self->nep, __pyx_v_i, __pyx_v_et, (&__pyx_v_rval))); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(16, 582, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPComputeError(__pyx_v_self->nep, __pyx_v_i, __pyx_v_et, (&__pyx_v_rval))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(17, 579, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":583
+  /* "SLEPc/NEP.pyx":580
  *         if etype is not None: et = etype
  *         CHKERR( NEPComputeError(self.nep, i, et, &rval) )
  *         return toReal(rval)             # <<<<<<<<<<<<<<
@@ -48089,13 +50348,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_68computeError(struct PySlepcNEP
  *     def errorView(self, etype=None, Viewer viewer=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 583, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 580, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_r = __pyx_t_5;
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/NEP.pyx":560
+  /* "SLEPc/NEP.pyx":557
  *         return toReal(rval)
  * 
  *     def computeError(self, int i, etype=None):             # <<<<<<<<<<<<<<
@@ -48114,7 +50373,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_68computeError(struct PySlepcNEP
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":585
+/* "SLEPc/NEP.pyx":582
  *         return toReal(rval)
  * 
  *     def errorView(self, etype=None, Viewer viewer=None):             # <<<<<<<<<<<<<<
@@ -48141,7 +50400,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_71errorView(PyObject *__pyx_v_se
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -48152,6 +50413,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_71errorView(PyObject *__pyx_v_se
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_etype);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_viewer);
@@ -48159,12 +50421,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_71errorView(PyObject *__pyx_v_se
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "errorView") < 0)) __PYX_ERR(16, 585, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "errorView") < 0)) __PYX_ERR(17, 582, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -48174,13 +50438,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_71errorView(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("errorView", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 585, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("errorView", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 582, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.errorView", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(16, 585, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(17, 582, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3NEP_70errorView(((struct PySlepcNEPObject *)__pyx_v_self), __pyx_v_etype, __pyx_v_viewer);
 
   /* function exit code */
@@ -48200,66 +50464,51 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_70errorView(struct PySlepcNEPObj
   int __pyx_t_1;
   int __pyx_t_2;
   NEPErrorType __pyx_t_3;
-  PetscViewer __pyx_t_4;
-  int __pyx_t_5;
+  int __pyx_t_4;
   __Pyx_RefNannySetupContext("errorView", 0);
 
-  /* "SLEPc/NEP.pyx":606
+  /* "SLEPc/NEP.pyx":603
  * 
  *         """
  *         cdef SlepcNEPErrorType et = NEP_ERROR_RELATIVE             # <<<<<<<<<<<<<<
  *         if etype is not None: et = etype
- *         cdef PetscViewer vwr = NULL
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  */
   __pyx_v_et = NEP_ERROR_RELATIVE;
 
-  /* "SLEPc/NEP.pyx":607
+  /* "SLEPc/NEP.pyx":604
  *         """
  *         cdef SlepcNEPErrorType et = NEP_ERROR_RELATIVE
  *         if etype is not None: et = etype             # <<<<<<<<<<<<<<
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
+ *         CHKERR( NEPErrorView(self.nep, et, vwr) )
  */
   __pyx_t_1 = (__pyx_v_etype != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = ((NEPErrorType)__Pyx_PyInt_As_NEPErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 607, __pyx_L1_error)
+    __pyx_t_3 = ((NEPErrorType)__Pyx_PyInt_As_NEPErrorType(__pyx_v_etype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 604, __pyx_L1_error)
     __pyx_v_et = __pyx_t_3;
   }
 
-  /* "SLEPc/NEP.pyx":608
+  /* "SLEPc/NEP.pyx":605
  *         cdef SlepcNEPErrorType et = NEP_ERROR_RELATIVE
  *         if etype is not None: et = etype
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
- *         CHKERR( NEPErrorView(self.nep, et, vwr) )
- */
-  __pyx_v_vwr = NULL;
-
-  /* "SLEPc/NEP.pyx":609
- *         if etype is not None: et = etype
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( NEPErrorView(self.nep, et, vwr) )
  * 
  */
-  __pyx_t_2 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-    __pyx_t_4 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_4;
-  }
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
-  /* "SLEPc/NEP.pyx":610
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+  /* "SLEPc/NEP.pyx":606
+ *         if etype is not None: et = etype
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( NEPErrorView(self.nep, et, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     def setFunction(self, function, Mat F, Mat P=None, args=None, kargs=None):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPErrorView(__pyx_v_self->nep, __pyx_v_et, __pyx_v_vwr)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(16, 610, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPErrorView(__pyx_v_self->nep, __pyx_v_et, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(17, 606, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":585
+  /* "SLEPc/NEP.pyx":582
  *         return toReal(rval)
  * 
  *     def errorView(self, etype=None, Viewer viewer=None):             # <<<<<<<<<<<<<<
@@ -48279,7 +50528,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_70errorView(struct PySlepcNEPObj
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":612
+/* "SLEPc/NEP.pyx":608
  *         CHKERR( NEPErrorView(self.nep, et, vwr) )
  * 
  *     def setFunction(self, function, Mat F, Mat P=None, args=None, kargs=None):             # <<<<<<<<<<<<<<
@@ -48310,10 +50559,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_73setFunction(PyObject *__pyx_v_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -48322,21 +50576,25 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_73setFunction(PyObject *__pyx_v_
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_function)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_F)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setFunction", 0, 2, 5, 1); __PYX_ERR(16, 612, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("setFunction", 0, 2, 5, 1); __PYX_ERR(17, 608, __pyx_L3_error)
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_P);
           if (value) { values[2] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  3:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_args);
           if (value) { values[3] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  4:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kargs);
@@ -48344,13 +50602,16 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_73setFunction(PyObject *__pyx_v_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setFunction") < 0)) __PYX_ERR(16, 612, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setFunction") < 0)) __PYX_ERR(17, 608, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
         values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
@@ -48365,14 +50626,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_73setFunction(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setFunction", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 612, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setFunction", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 608, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.setFunction", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_F), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "F", 0))) __PYX_ERR(16, 612, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_P), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "P", 0))) __PYX_ERR(16, 612, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_F), __pyx_ptype_8petsc4py_5PETSc_Mat, 0, "F", 0))) __PYX_ERR(17, 608, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_P), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "P", 0))) __PYX_ERR(17, 608, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3NEP_72setFunction(((struct PySlepcNEPObject *)__pyx_v_self), __pyx_v_function, __pyx_v_F, __pyx_v_P, __pyx_v_args, __pyx_v_kargs);
 
   /* function exit code */
@@ -48389,9 +50650,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_72setFunction(struct PySlepcNEPO
   Mat __pyx_v_Pmat;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
+  Mat __pyx_t_1;
   int __pyx_t_2;
-  Mat __pyx_t_3;
+  int __pyx_t_3;
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
@@ -48399,99 +50660,83 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_72setFunction(struct PySlepcNEPO
   __Pyx_INCREF(__pyx_v_args);
   __Pyx_INCREF(__pyx_v_kargs);
 
-  /* "SLEPc/NEP.pyx":626
+  /* "SLEPc/NEP.pyx":622
  *             preconditioner matrix (usually same as the Function)
  *         """
- *         cdef PetscMat Fmat=NULL             # <<<<<<<<<<<<<<
- *         if F is not None: Fmat = F.mat
- *         cdef PetscMat Pmat=Fmat
- */
-  __pyx_v_Fmat = NULL;
-
-  /* "SLEPc/NEP.pyx":627
- *         """
- *         cdef PetscMat Fmat=NULL
- *         if F is not None: Fmat = F.mat             # <<<<<<<<<<<<<<
- *         cdef PetscMat Pmat=Fmat
- *         if P is not None: Pmat = P.mat
- */
-  __pyx_t_1 = (((PyObject *)__pyx_v_F) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_F->mat;
-    __pyx_v_Fmat = __pyx_t_3;
-  }
-
-  /* "SLEPc/NEP.pyx":628
- *         cdef PetscMat Fmat=NULL
- *         if F is not None: Fmat = F.mat
- *         cdef PetscMat Pmat=Fmat             # <<<<<<<<<<<<<<
- *         if P is not None: Pmat = P.mat
+ *         cdef PetscMat Fmat = F.mat if F is not None else <PetscMat>NULL             # <<<<<<<<<<<<<<
+ *         cdef PetscMat Pmat = P.mat if P is not None else Fmat
  *         CHKERR( NEPSetFunction(self.nep, Fmat, Pmat, NEP_Function, NULL) )
  */
-  __pyx_v_Pmat = __pyx_v_Fmat;
+  __pyx_t_2 = (((PyObject *)__pyx_v_F) != Py_None);
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_F->mat;
+  } else {
+    __pyx_t_1 = ((Mat)NULL);
+  }
+  __pyx_v_Fmat = __pyx_t_1;
 
-  /* "SLEPc/NEP.pyx":629
- *         if F is not None: Fmat = F.mat
- *         cdef PetscMat Pmat=Fmat
- *         if P is not None: Pmat = P.mat             # <<<<<<<<<<<<<<
+  /* "SLEPc/NEP.pyx":623
+ *         """
+ *         cdef PetscMat Fmat = F.mat if F is not None else <PetscMat>NULL
+ *         cdef PetscMat Pmat = P.mat if P is not None else Fmat             # <<<<<<<<<<<<<<
  *         CHKERR( NEPSetFunction(self.nep, Fmat, Pmat, NEP_Function, NULL) )
  *         if args is None: args = ()
  */
   __pyx_t_2 = (((PyObject *)__pyx_v_P) != Py_None);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-    __pyx_t_3 = __pyx_v_P->mat;
-    __pyx_v_Pmat = __pyx_t_3;
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_P->mat;
+  } else {
+    __pyx_t_1 = __pyx_v_Fmat;
   }
+  __pyx_v_Pmat = __pyx_t_1;
 
-  /* "SLEPc/NEP.pyx":630
- *         cdef PetscMat Pmat=Fmat
- *         if P is not None: Pmat = P.mat
+  /* "SLEPc/NEP.pyx":624
+ *         cdef PetscMat Fmat = F.mat if F is not None else <PetscMat>NULL
+ *         cdef PetscMat Pmat = P.mat if P is not None else Fmat
  *         CHKERR( NEPSetFunction(self.nep, Fmat, Pmat, NEP_Function, NULL) )             # <<<<<<<<<<<<<<
  *         if args is None: args = ()
  *         if kargs is None: kargs = {}
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetFunction(__pyx_v_self->nep, __pyx_v_Fmat, __pyx_v_Pmat, __pyx_f_8slepc4py_5SLEPc_NEP_Function, NULL)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(16, 630, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetFunction(__pyx_v_self->nep, __pyx_v_Fmat, __pyx_v_Pmat, __pyx_f_8slepc4py_5SLEPc_NEP_Function, NULL)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(17, 624, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":631
- *         if P is not None: Pmat = P.mat
+  /* "SLEPc/NEP.pyx":625
+ *         cdef PetscMat Pmat = P.mat if P is not None else Fmat
  *         CHKERR( NEPSetFunction(self.nep, Fmat, Pmat, NEP_Function, NULL) )
  *         if args is None: args = ()             # <<<<<<<<<<<<<<
  *         if kargs is None: kargs = {}
  *         self.set_attr('__function__', (function, args, kargs))
  */
-  __pyx_t_1 = (__pyx_v_args == Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+  __pyx_t_2 = (__pyx_v_args == Py_None);
+  __pyx_t_4 = (__pyx_t_2 != 0);
+  if (__pyx_t_4) {
     __Pyx_INCREF(__pyx_empty_tuple);
     __Pyx_DECREF_SET(__pyx_v_args, __pyx_empty_tuple);
   }
 
-  /* "SLEPc/NEP.pyx":632
+  /* "SLEPc/NEP.pyx":626
  *         CHKERR( NEPSetFunction(self.nep, Fmat, Pmat, NEP_Function, NULL) )
  *         if args is None: args = ()
  *         if kargs is None: kargs = {}             # <<<<<<<<<<<<<<
  *         self.set_attr('__function__', (function, args, kargs))
  * 
  */
-  __pyx_t_2 = (__pyx_v_kargs == Py_None);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 632, __pyx_L1_error)
+  __pyx_t_4 = (__pyx_v_kargs == Py_None);
+  __pyx_t_2 = (__pyx_t_4 != 0);
+  if (__pyx_t_2) {
+    __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 626, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF_SET(__pyx_v_kargs, __pyx_t_5);
     __pyx_t_5 = 0;
   }
 
-  /* "SLEPc/NEP.pyx":633
+  /* "SLEPc/NEP.pyx":627
  *         if args is None: args = ()
  *         if kargs is None: kargs = {}
  *         self.set_attr('__function__', (function, args, kargs))             # <<<<<<<<<<<<<<
  * 
  *     def setJacobian(self, jacobian, Mat J, args=None, kargs=None):
  */
-  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 633, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 627, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_v_function);
   __Pyx_GIVEREF(__pyx_v_function);
@@ -48502,12 +50747,12 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_72setFunction(struct PySlepcNEPO
   __Pyx_INCREF(__pyx_v_kargs);
   __Pyx_GIVEREF(__pyx_v_kargs);
   PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_kargs);
-  __pyx_t_6 = ((struct __pyx_vtabstruct_8slepc4py_5SLEPc_NEP *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.set_attr(((struct PyPetscObjectObject *)__pyx_v_self), ((char *)"__function__"), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(16, 633, __pyx_L1_error)
+  __pyx_t_6 = ((struct __pyx_vtabstruct_8slepc4py_5SLEPc_NEP *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.set_attr(((struct PyPetscObjectObject *)__pyx_v_self), ((char *)"__function__"), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 627, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "SLEPc/NEP.pyx":612
+  /* "SLEPc/NEP.pyx":608
  *         CHKERR( NEPErrorView(self.nep, et, vwr) )
  * 
  *     def setFunction(self, function, Mat F, Mat P=None, args=None, kargs=None):             # <<<<<<<<<<<<<<
@@ -48531,7 +50776,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_72setFunction(struct PySlepcNEPO
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":635
+/* "SLEPc/NEP.pyx":629
  *         self.set_attr('__function__', (function, args, kargs))
  * 
  *     def setJacobian(self, jacobian, Mat J, args=None, kargs=None):             # <<<<<<<<<<<<<<
@@ -48560,9 +50805,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_75setJacobian(PyObject *__pyx_v_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -48571,16 +50820,19 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_75setJacobian(PyObject *__pyx_v_
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jacobian)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_J)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setJacobian", 0, 2, 4, 1); __PYX_ERR(16, 635, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("setJacobian", 0, 2, 4, 1); __PYX_ERR(17, 629, __pyx_L3_error)
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_args);
           if (value) { values[2] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  3:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kargs);
@@ -48588,12 +50840,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_75setJacobian(PyObject *__pyx_v_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setJacobian") < 0)) __PYX_ERR(16, 635, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setJacobian") < 0)) __PYX_ERR(17, 629, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
         values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
@@ -48607,13 +50861,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_75setJacobian(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setJacobian", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 635, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setJacobian", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 629, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.setJacobian", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_J), __pyx_ptype_8petsc4py_5PETSc_Mat, 1, "J", 0))) __PYX_ERR(16, 635, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_J), __pyx_ptype_8petsc4py_5PETSc_Mat, 0, "J", 0))) __PYX_ERR(17, 629, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3NEP_74setJacobian(((struct PySlepcNEPObject *)__pyx_v_self), __pyx_v_jacobian, __pyx_v_J, __pyx_v_args, __pyx_v_kargs);
 
   /* function exit code */
@@ -48629,9 +50883,9 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_74setJacobian(struct PySlepcNEPO
   Mat __pyx_v_Jmat;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
+  Mat __pyx_t_1;
   int __pyx_t_2;
-  Mat __pyx_t_3;
+  int __pyx_t_3;
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
@@ -48639,76 +50893,68 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_74setJacobian(struct PySlepcNEPO
   __Pyx_INCREF(__pyx_v_args);
   __Pyx_INCREF(__pyx_v_kargs);
 
-  /* "SLEPc/NEP.pyx":647
+  /* "SLEPc/NEP.pyx":641
  *             Jacobian matrix
  *         """
- *         cdef PetscMat Jmat=NULL             # <<<<<<<<<<<<<<
- *         if J is not None: Jmat = J.mat
- *         CHKERR( NEPSetJacobian(self.nep, Jmat, NEP_Jacobian, NULL) )
- */
-  __pyx_v_Jmat = NULL;
-
-  /* "SLEPc/NEP.pyx":648
- *         """
- *         cdef PetscMat Jmat=NULL
- *         if J is not None: Jmat = J.mat             # <<<<<<<<<<<<<<
+ *         cdef PetscMat Jmat = J.mat if J is not None else <PetscMat>NULL             # <<<<<<<<<<<<<<
  *         CHKERR( NEPSetJacobian(self.nep, Jmat, NEP_Jacobian, NULL) )
  *         if args is None: args = ()
  */
-  __pyx_t_1 = (((PyObject *)__pyx_v_J) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_J->mat;
-    __pyx_v_Jmat = __pyx_t_3;
+  __pyx_t_2 = (((PyObject *)__pyx_v_J) != Py_None);
+  if ((__pyx_t_2 != 0)) {
+    __pyx_t_1 = __pyx_v_J->mat;
+  } else {
+    __pyx_t_1 = ((Mat)NULL);
   }
+  __pyx_v_Jmat = __pyx_t_1;
 
-  /* "SLEPc/NEP.pyx":649
- *         cdef PetscMat Jmat=NULL
- *         if J is not None: Jmat = J.mat
+  /* "SLEPc/NEP.pyx":642
+ *         """
+ *         cdef PetscMat Jmat = J.mat if J is not None else <PetscMat>NULL
  *         CHKERR( NEPSetJacobian(self.nep, Jmat, NEP_Jacobian, NULL) )             # <<<<<<<<<<<<<<
  *         if args is None: args = ()
  *         if kargs is None: kargs = {}
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetJacobian(__pyx_v_self->nep, __pyx_v_Jmat, __pyx_f_8slepc4py_5SLEPc_NEP_Jacobian, NULL)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(16, 649, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetJacobian(__pyx_v_self->nep, __pyx_v_Jmat, __pyx_f_8slepc4py_5SLEPc_NEP_Jacobian, NULL)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(17, 642, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":650
- *         if J is not None: Jmat = J.mat
+  /* "SLEPc/NEP.pyx":643
+ *         cdef PetscMat Jmat = J.mat if J is not None else <PetscMat>NULL
  *         CHKERR( NEPSetJacobian(self.nep, Jmat, NEP_Jacobian, NULL) )
  *         if args is None: args = ()             # <<<<<<<<<<<<<<
  *         if kargs is None: kargs = {}
  *         self.set_attr('__jacobian__', (jacobian, args, kargs))
  */
   __pyx_t_2 = (__pyx_v_args == Py_None);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
+  __pyx_t_4 = (__pyx_t_2 != 0);
+  if (__pyx_t_4) {
     __Pyx_INCREF(__pyx_empty_tuple);
     __Pyx_DECREF_SET(__pyx_v_args, __pyx_empty_tuple);
   }
 
-  /* "SLEPc/NEP.pyx":651
+  /* "SLEPc/NEP.pyx":644
  *         CHKERR( NEPSetJacobian(self.nep, Jmat, NEP_Jacobian, NULL) )
  *         if args is None: args = ()
  *         if kargs is None: kargs = {}             # <<<<<<<<<<<<<<
  *         self.set_attr('__jacobian__', (jacobian, args, kargs))
  * 
  */
-  __pyx_t_1 = (__pyx_v_kargs == Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
+  __pyx_t_4 = (__pyx_v_kargs == Py_None);
+  __pyx_t_2 = (__pyx_t_4 != 0);
   if (__pyx_t_2) {
-    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 651, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 644, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF_SET(__pyx_v_kargs, __pyx_t_5);
     __pyx_t_5 = 0;
   }
 
-  /* "SLEPc/NEP.pyx":652
+  /* "SLEPc/NEP.pyx":645
  *         if args is None: args = ()
  *         if kargs is None: kargs = {}
  *         self.set_attr('__jacobian__', (jacobian, args, kargs))             # <<<<<<<<<<<<<<
  * 
  *     def setSplitOperator(self, A, f, structure=None):
  */
-  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 652, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 645, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_v_jacobian);
   __Pyx_GIVEREF(__pyx_v_jacobian);
@@ -48719,12 +50965,12 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_74setJacobian(struct PySlepcNEPO
   __Pyx_INCREF(__pyx_v_kargs);
   __Pyx_GIVEREF(__pyx_v_kargs);
   PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_kargs);
-  __pyx_t_6 = ((struct __pyx_vtabstruct_8slepc4py_5SLEPc_NEP *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.set_attr(((struct PyPetscObjectObject *)__pyx_v_self), ((char *)"__jacobian__"), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(16, 652, __pyx_L1_error)
+  __pyx_t_6 = ((struct __pyx_vtabstruct_8slepc4py_5SLEPc_NEP *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.set_attr(((struct PyPetscObjectObject *)__pyx_v_self), ((char *)"__jacobian__"), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 645, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "SLEPc/NEP.pyx":635
+  /* "SLEPc/NEP.pyx":629
  *         self.set_attr('__function__', (function, args, kargs))
  * 
  *     def setJacobian(self, jacobian, Mat J, args=None, kargs=None):             # <<<<<<<<<<<<<<
@@ -48748,7 +50994,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_74setJacobian(struct PySlepcNEPO
   return __pyx_r;
 }
 
-/* "SLEPc/NEP.pyx":654
+/* "SLEPc/NEP.pyx":647
  *         self.set_attr('__jacobian__', (jacobian, args, kargs))
  * 
  *     def setSplitOperator(self, A, f, structure=None):             # <<<<<<<<<<<<<<
@@ -48775,8 +51021,11 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_77setSplitOperator(PyObject *__p
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -48785,11 +51034,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_77setSplitOperator(PyObject *__p
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_A)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setSplitOperator", 0, 2, 3, 1); __PYX_ERR(16, 654, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("setSplitOperator", 0, 2, 3, 1); __PYX_ERR(17, 647, __pyx_L3_error)
         }
+        CYTHON_FALLTHROUGH;
         case  2:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_structure);
@@ -48797,11 +51048,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_77setSplitOperator(PyObject *__p
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setSplitOperator") < 0)) __PYX_ERR(16, 654, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setSplitOperator") < 0)) __PYX_ERR(17, 647, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
         values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
         break;
@@ -48814,7 +51066,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3NEP_77setSplitOperator(PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setSplitOperator", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 654, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setSplitOperator", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 647, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.NEP.setSplitOperator", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -48850,7 +51102,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_76setSplitOperator(struct PySlep
   __Pyx_INCREF(__pyx_v_A);
   __Pyx_INCREF(__pyx_v_f);
 
-  /* "SLEPc/NEP.pyx":668
+  /* "SLEPc/NEP.pyx":661
  *             Structure flag for matrices.
  *         """
  *         if isinstance(A, Mat): A = [A]             # <<<<<<<<<<<<<<
@@ -48860,7 +51112,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_76setSplitOperator(struct PySlep
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_A, __pyx_ptype_8petsc4py_5PETSc_Mat); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 668, __pyx_L1_error)
+    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 661, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_A);
     __Pyx_GIVEREF(__pyx_v_A);
@@ -48869,7 +51121,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_76setSplitOperator(struct PySlep
     __pyx_t_3 = 0;
   }
 
-  /* "SLEPc/NEP.pyx":669
+  /* "SLEPc/NEP.pyx":662
  *         """
  *         if isinstance(A, Mat): A = [A]
  *         if isinstance(f, FN):  f = [f]             # <<<<<<<<<<<<<<
@@ -48879,7 +51131,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_76setSplitOperator(struct PySlep
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_f, __pyx_ptype_8slepc4py_5SLEPc_FN); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 669, __pyx_L1_error)
+    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 662, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_f);
     __Pyx_GIVEREF(__pyx_v_f);
@@ -48888,7 +51140,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_76setSplitOperator(struct PySlep
     __pyx_t_3 = 0;
   }
 
-  /* "SLEPc/NEP.pyx":670
+  /* "SLEPc/NEP.pyx":663
  *         if isinstance(A, Mat): A = [A]
  *         if isinstance(f, FN):  f = [f]
  *         cdef PetscMat *As = NULL             # <<<<<<<<<<<<<<
@@ -48897,7 +51149,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_76setSplitOperator(struct PySlep
  */
   __pyx_v_As = NULL;
 
-  /* "SLEPc/NEP.pyx":671
+  /* "SLEPc/NEP.pyx":664
  *         if isinstance(f, FN):  f = [f]
  *         cdef PetscMat *As = NULL
  *         cdef SlepcFN  *Fs = NULL             # <<<<<<<<<<<<<<
@@ -48906,7 +51158,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_76setSplitOperator(struct PySlep
  */
   __pyx_v_Fs = NULL;
 
-  /* "SLEPc/NEP.pyx":672
+  /* "SLEPc/NEP.pyx":665
  *         cdef PetscMat *As = NULL
  *         cdef SlepcFN  *Fs = NULL
  *         cdef Py_ssize_t i = 0, n = len(A)             # <<<<<<<<<<<<<<
@@ -48914,20 +51166,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_76setSplitOperator(struct PySlep
  *         assert n == len(f)
  */
   __pyx_v_i = 0;
-  __pyx_t_4 = PyObject_Length(__pyx_v_A); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(16, 672, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_A); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(17, 665, __pyx_L1_error)
   __pyx_v_n = __pyx_t_4;
 
-  /* "SLEPc/NEP.pyx":673
+  /* "SLEPc/NEP.pyx":666
  *         cdef SlepcFN  *Fs = NULL
  *         cdef Py_ssize_t i = 0, n = len(A)
  *         cdef PetscMatStructure mstr = matstructure(structure)             # <<<<<<<<<<<<<<
  *         assert n == len(f)
  *         cdef tmp1 = allocate(<size_t>n*sizeof(Mat),<void**>&As)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_matstructure(__pyx_v_structure); if (unlikely(__pyx_t_5 == ((MatStructure)-1L))) __PYX_ERR(16, 673, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_matstructure(__pyx_v_structure); if (unlikely(__pyx_t_5 == ((MatStructure)((MatStructure)-1L)))) __PYX_ERR(17, 666, __pyx_L1_error)
   __pyx_v_mstr = __pyx_t_5;
 
-  /* "SLEPc/NEP.pyx":674
+  /* "SLEPc/NEP.pyx":667
  *         cdef Py_ssize_t i = 0, n = len(A)
  *         cdef PetscMatStructure mstr = matstructure(structure)
  *         assert n == len(f)             # <<<<<<<<<<<<<<
@@ -48936,39 +51188,39 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_76setSplitOperator(struct PySlep
  */
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
-    __pyx_t_4 = PyObject_Length(__pyx_v_f); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(16, 674, __pyx_L1_error)
+    __pyx_t_4 = PyObject_Length(__pyx_v_f); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(17, 667, __pyx_L1_error)
     if (unlikely(!((__pyx_v_n == __pyx_t_4) != 0))) {
       PyErr_SetNone(PyExc_AssertionError);
-      __PYX_ERR(16, 674, __pyx_L1_error)
+      __PYX_ERR(17, 667, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "SLEPc/NEP.pyx":675
+  /* "SLEPc/NEP.pyx":668
  *         cdef PetscMatStructure mstr = matstructure(structure)
  *         assert n == len(f)
  *         cdef tmp1 = allocate(<size_t>n*sizeof(Mat),<void**>&As)             # <<<<<<<<<<<<<<
  *         cdef tmp2 = allocate(<size_t>n*sizeof(FN),<void**>&Fs)
  *         for i in range(n):
  */
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_n) * (sizeof(struct PyPetscMatObject))), ((void **)(&__pyx_v_As))); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 675, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_n) * (sizeof(struct PyPetscMatObject))), ((void **)(&__pyx_v_As))); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 668, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_tmp1 = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "SLEPc/NEP.pyx":676
+  /* "SLEPc/NEP.pyx":669
  *         assert n == len(f)
  *         cdef tmp1 = allocate(<size_t>n*sizeof(Mat),<void**>&As)
  *         cdef tmp2 = allocate(<size_t>n*sizeof(FN),<void**>&Fs)             # <<<<<<<<<<<<<<
  *         for i in range(n):
  *             As[i] = (<Mat?>A[i]).mat
  */
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_n) * (sizeof(struct PySlepcFNObject))), ((void **)(&__pyx_v_Fs))); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 676, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_allocate((((size_t)__pyx_v_n) * (sizeof(struct PySlepcFNObject))), ((void **)(&__pyx_v_Fs))); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 669, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_tmp2 = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "SLEPc/NEP.pyx":677
+  /* "SLEPc/NEP.pyx":670
  *         cdef tmp1 = allocate(<size_t>n*sizeof(Mat),<void**>&As)
  *         cdef tmp2 = allocate(<size_t>n*sizeof(FN),<void**>&Fs)
  *         for i in range(n):             # <<<<<<<<<<<<<<
@@ -48979,45 +51231,45 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3NEP_76setSplitOperator(struct PySlep
   for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_4; __pyx_t_6+=1) {
     __pyx_v_i = __pyx_t_6;
 
-    /* "SLEPc/NEP.pyx":678
+    /* "SLEPc/NEP.pyx":671
  *         cdef tmp2 = allocate(<size_t>n*sizeof(FN),<void**>&Fs)
  *         for i in range(n):
  *             As[i] = (<Mat?>A[i]).mat             # <<<<<<<<<<<<<<
  *             Fs[i] = (<FN?>f[i]).fn
  *         CHKERR( NEPSetSplitOperator(self.nep, <PetscInt>n, As, Fs, mstr) )
  */
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_A, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 678, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_A, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 671, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Mat)))) __PYX_ERR(16, 678, __pyx_L1_error)
+    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8petsc4py_5PETSc_Mat)))) __PYX_ERR(17, 671, __pyx_L1_error)
     __pyx_t_7 = ((struct PyPetscMatObject *)__pyx_t_3)->mat;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     (__pyx_v_As[__pyx_v_i]) = __pyx_t_7;
 
-    /* "SLEPc/NEP.pyx":679
+    /* "SLEPc/NEP.pyx":672
  *         for i in range(n):
  *             As[i] = (<Mat?>A[i]).mat
  *             Fs[i] = (<FN?>f[i]).fn             # <<<<<<<<<<<<<<
  *         CHKERR( NEPSetSplitOperator(self.nep, <PetscInt>n, As, Fs, mstr) )
  * 
  */
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_f, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 679, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_f, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 672, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8slepc4py_5SLEPc_FN)))) __PYX_ERR(16, 679, __pyx_L1_error)
+    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_8slepc4py_5SLEPc_FN)))) __PYX_ERR(17, 672, __pyx_L1_error)
     __pyx_t_8 = ((struct PySlepcFNObject *)__pyx_t_3)->fn;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     (__pyx_v_Fs[__pyx_v_i]) = __pyx_t_8;
   }
 
-  /* "SLEPc/NEP.pyx":680
+  /* "SLEPc/NEP.pyx":673
  *             As[i] = (<Mat?>A[i]).mat
  *             Fs[i] = (<FN?>f[i]).fn
  *         CHKERR( NEPSetSplitOperator(self.nep, <PetscInt>n, As, Fs, mstr) )             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_9 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetSplitOperator(__pyx_v_self->nep, ((PetscInt)__pyx_v_n), __pyx_v_As, __pyx_v_Fs, __pyx_v_mstr)); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(16, 680, __pyx_L1_error)
+  __pyx_t_9 = __pyx_f_8slepc4py_5SLEPc_CHKERR(NEPSetSplitOperator(__pyx_v_self->nep, ((PetscInt)__pyx_v_n), __pyx_v_As, __pyx_v_Fs, __pyx_v_mstr)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(17, 673, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":654
+  /* "SLEPc/NEP.pyx":647
  *         self.set_attr('__jacobian__', (jacobian, args, kargs))
  * 
  *     def setSplitOperator(self, A, f, structure=None):             # <<<<<<<<<<<<<<
@@ -49128,6 +51380,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_3view(PyObject *__pyx_v_self, Py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -49140,11 +51393,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_3view(PyObject *__pyx_v_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(17, 38, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(18, 38, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -49153,13 +51407,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_3view(PyObject *__pyx_v_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 38, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("view", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(18, 38, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.MFN.view", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(17, 38, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_viewer), __pyx_ptype_8petsc4py_5PETSc_Viewer, 1, "viewer", 0))) __PYX_ERR(18, 38, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3MFN_2view(((struct PySlepcMFNObject *)__pyx_v_self), __pyx_v_viewer);
 
   /* function exit code */
@@ -49176,42 +51430,25 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_2view(struct PySlepcMFNObject *_
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
-  PetscViewer __pyx_t_3;
-  int __pyx_t_4;
   __Pyx_RefNannySetupContext("view", 0);
 
   /* "SLEPc/MFN.pyx":48
  *             output is used.
  *         """
- *         cdef PetscViewer vwr = NULL             # <<<<<<<<<<<<<<
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)             # <<<<<<<<<<<<<<
  *         CHKERR( MFNView(self.mfn, vwr) )
+ * 
  */
-  __pyx_v_vwr = NULL;
+  __pyx_v_vwr = __pyx_f_8slepc4py_5SLEPc_def_Viewer(__pyx_v_viewer);
 
   /* "SLEPc/MFN.pyx":49
  *         """
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr             # <<<<<<<<<<<<<<
- *         CHKERR( MFNView(self.mfn, vwr) )
- * 
- */
-  __pyx_t_1 = (((PyObject *)__pyx_v_viewer) != Py_None);
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_v_viewer->vwr;
-    __pyx_v_vwr = __pyx_t_3;
-  }
-
-  /* "SLEPc/MFN.pyx":50
- *         cdef PetscViewer vwr = NULL
- *         if viewer is not None: vwr = viewer.vwr
+ *         cdef PetscViewer vwr = def_Viewer(viewer)
  *         CHKERR( MFNView(self.mfn, vwr) )             # <<<<<<<<<<<<<<
  * 
  *     def destroy(self):
  */
-  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNView(__pyx_v_self->mfn, __pyx_v_vwr)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(17, 50, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNView(__pyx_v_self->mfn, __pyx_v_vwr)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 49, __pyx_L1_error)
 
   /* "SLEPc/MFN.pyx":38
  *         self.mfn = NULL
@@ -49233,7 +51470,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_2view(struct PySlepcMFNObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":52
+/* "SLEPc/MFN.pyx":51
  *         CHKERR( MFNView(self.mfn, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -49264,16 +51501,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_4destroy(struct PySlepcMFNObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("destroy", 0);
 
-  /* "SLEPc/MFN.pyx":56
+  /* "SLEPc/MFN.pyx":55
  *         Destroys the MFN object.
  *         """
  *         CHKERR( MFNDestroy(&self.mfn) )             # <<<<<<<<<<<<<<
  *         self.mfn = NULL
  *         return self
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNDestroy((&__pyx_v_self->mfn))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 56, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNDestroy((&__pyx_v_self->mfn))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 55, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":57
+  /* "SLEPc/MFN.pyx":56
  *         """
  *         CHKERR( MFNDestroy(&self.mfn) )
  *         self.mfn = NULL             # <<<<<<<<<<<<<<
@@ -49282,7 +51519,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_4destroy(struct PySlepcMFNObject
  */
   __pyx_v_self->mfn = NULL;
 
-  /* "SLEPc/MFN.pyx":58
+  /* "SLEPc/MFN.pyx":57
  *         CHKERR( MFNDestroy(&self.mfn) )
  *         self.mfn = NULL
  *         return self             # <<<<<<<<<<<<<<
@@ -49294,7 +51531,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_4destroy(struct PySlepcMFNObject
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/MFN.pyx":52
+  /* "SLEPc/MFN.pyx":51
  *         CHKERR( MFNView(self.mfn, vwr) )
  * 
  *     def destroy(self):             # <<<<<<<<<<<<<<
@@ -49312,7 +51549,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_4destroy(struct PySlepcMFNObject
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":60
+/* "SLEPc/MFN.pyx":59
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -49343,16 +51580,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_6reset(struct PySlepcMFNObject *
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("reset", 0);
 
-  /* "SLEPc/MFN.pyx":64
+  /* "SLEPc/MFN.pyx":63
  *         Resets the MFN object.
  *         """
  *         CHKERR( MFNReset(self.mfn) )             # <<<<<<<<<<<<<<
  * 
  *     def create(self, comm=None):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNReset(__pyx_v_self->mfn)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 64, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNReset(__pyx_v_self->mfn)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 63, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":60
+  /* "SLEPc/MFN.pyx":59
  *         return self
  * 
  *     def reset(self):             # <<<<<<<<<<<<<<
@@ -49372,7 +51609,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_6reset(struct PySlepcMFNObject *
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":66
+/* "SLEPc/MFN.pyx":65
  *         CHKERR( MFNReset(self.mfn) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -49397,6 +51634,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_9create(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -49409,11 +51647,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_9create(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(17, 66, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(18, 65, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -49422,7 +51661,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_9create(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 66, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("create", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(18, 65, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.MFN.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -49444,17 +51683,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_8create(struct PySlepcMFNObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("create", 0);
 
-  /* "SLEPc/MFN.pyx":76
+  /* "SLEPc/MFN.pyx":75
  *             processes.
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())             # <<<<<<<<<<<<<<
  *         cdef SlepcMFN newmfn = NULL
  *         CHKERR( MFNCreate(ccomm, &newmfn) )
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 76, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_def_Comm(__pyx_v_comm, __pyx_f_8slepc4py_5SLEPc_SLEPC_COMM_DEFAULT()); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 75, __pyx_L1_error)
   __pyx_v_ccomm = __pyx_t_1;
 
-  /* "SLEPc/MFN.pyx":77
+  /* "SLEPc/MFN.pyx":76
  *         """
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcMFN newmfn = NULL             # <<<<<<<<<<<<<<
@@ -49463,16 +51702,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_8create(struct PySlepcMFNObject
  */
   __pyx_v_newmfn = NULL;
 
-  /* "SLEPc/MFN.pyx":78
+  /* "SLEPc/MFN.pyx":77
  *         cdef MPI_Comm ccomm = def_Comm(comm, SLEPC_COMM_DEFAULT())
  *         cdef SlepcMFN newmfn = NULL
  *         CHKERR( MFNCreate(ccomm, &newmfn) )             # <<<<<<<<<<<<<<
  *         SlepcCLEAR(self.obj); self.mfn = newmfn
  *         return self
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNCreate(__pyx_v_ccomm, (&__pyx_v_newmfn))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(17, 78, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNCreate(__pyx_v_ccomm, (&__pyx_v_newmfn))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 77, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":79
+  /* "SLEPc/MFN.pyx":78
  *         cdef SlepcMFN newmfn = NULL
  *         CHKERR( MFNCreate(ccomm, &newmfn) )
  *         SlepcCLEAR(self.obj); self.mfn = newmfn             # <<<<<<<<<<<<<<
@@ -49482,7 +51721,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_8create(struct PySlepcMFNObject
   __pyx_f_8slepc4py_5SLEPc_SlepcCLEAR(__pyx_v_self->__pyx_base.obj);
   __pyx_v_self->mfn = __pyx_v_newmfn;
 
-  /* "SLEPc/MFN.pyx":80
+  /* "SLEPc/MFN.pyx":79
  *         CHKERR( MFNCreate(ccomm, &newmfn) )
  *         SlepcCLEAR(self.obj); self.mfn = newmfn
  *         return self             # <<<<<<<<<<<<<<
@@ -49494,7 +51733,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_8create(struct PySlepcMFNObject
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "SLEPc/MFN.pyx":66
+  /* "SLEPc/MFN.pyx":65
  *         CHKERR( MFNReset(self.mfn) )
  * 
  *     def create(self, comm=None):             # <<<<<<<<<<<<<<
@@ -49512,7 +51751,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_8create(struct PySlepcMFNObject
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":82
+/* "SLEPc/MFN.pyx":81
  *         return self
  * 
  *     def setType(self, mfn_type):             # <<<<<<<<<<<<<<
@@ -49536,6 +51775,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_11setType(PyObject *__pyx_v_self
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -49546,7 +51786,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_11setType(PyObject *__pyx_v_self
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(17, 82, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setType") < 0)) __PYX_ERR(18, 81, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -49557,7 +51797,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_11setType(PyObject *__pyx_v_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 82, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setType", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(18, 81, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.MFN.setType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -49579,7 +51819,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_10setType(struct PySlepcMFNObjec
   __Pyx_RefNannySetupContext("setType", 0);
   __Pyx_INCREF(__pyx_v_mfn_type);
 
-  /* "SLEPc/MFN.pyx":91
+  /* "SLEPc/MFN.pyx":90
  *             The solver to be used.
  *         """
  *         cdef SlepcMFNType cval = NULL             # <<<<<<<<<<<<<<
@@ -49588,28 +51828,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_10setType(struct PySlepcMFNObjec
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/MFN.pyx":92
+  /* "SLEPc/MFN.pyx":91
  *         """
  *         cdef SlepcMFNType cval = NULL
  *         mfn_type = str2bytes(mfn_type, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( MFNSetType(self.mfn, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_mfn_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 92, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_mfn_type, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 91, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_mfn_type, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/MFN.pyx":93
+  /* "SLEPc/MFN.pyx":92
  *         cdef SlepcMFNType cval = NULL
  *         mfn_type = str2bytes(mfn_type, &cval)
  *         CHKERR( MFNSetType(self.mfn, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def getType(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetType(__pyx_v_self->mfn, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(17, 93, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetType(__pyx_v_self->mfn, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 92, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":82
+  /* "SLEPc/MFN.pyx":81
  *         return self
  * 
  *     def setType(self, mfn_type):             # <<<<<<<<<<<<<<
@@ -49631,7 +51871,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_10setType(struct PySlepcMFNObjec
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":95
+/* "SLEPc/MFN.pyx":94
  *         CHKERR( MFNSetType(self.mfn, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -49664,7 +51904,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_12getType(struct PySlepcMFNObjec
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getType", 0);
 
-  /* "SLEPc/MFN.pyx":104
+  /* "SLEPc/MFN.pyx":103
  *             The solver currently being used.
  *         """
  *         cdef SlepcMFNType mfn_type = NULL             # <<<<<<<<<<<<<<
@@ -49673,16 +51913,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_12getType(struct PySlepcMFNObjec
  */
   __pyx_v_mfn_type = NULL;
 
-  /* "SLEPc/MFN.pyx":105
+  /* "SLEPc/MFN.pyx":104
  *         """
  *         cdef SlepcMFNType mfn_type = NULL
  *         CHKERR( MFNGetType(self.mfn, &mfn_type) )             # <<<<<<<<<<<<<<
  *         return bytes2str(mfn_type)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetType(__pyx_v_self->mfn, (&__pyx_v_mfn_type))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 105, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetType(__pyx_v_self->mfn, (&__pyx_v_mfn_type))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 104, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":106
+  /* "SLEPc/MFN.pyx":105
  *         cdef SlepcMFNType mfn_type = NULL
  *         CHKERR( MFNGetType(self.mfn, &mfn_type) )
  *         return bytes2str(mfn_type)             # <<<<<<<<<<<<<<
@@ -49690,13 +51930,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_12getType(struct PySlepcMFNObjec
  *     def getOptionsPrefix(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_mfn_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 106, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_mfn_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 105, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/MFN.pyx":95
+  /* "SLEPc/MFN.pyx":94
  *         CHKERR( MFNSetType(self.mfn, cval) )
  * 
  *     def getType(self):             # <<<<<<<<<<<<<<
@@ -49715,7 +51955,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_12getType(struct PySlepcMFNObjec
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":108
+/* "SLEPc/MFN.pyx":107
  *         return bytes2str(mfn_type)
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -49748,7 +51988,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_14getOptionsPrefix(struct PySlep
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getOptionsPrefix", 0);
 
-  /* "SLEPc/MFN.pyx":118
+  /* "SLEPc/MFN.pyx":117
  *             The prefix string set for this MFN object.
  *         """
  *         cdef const_char *prefix = NULL             # <<<<<<<<<<<<<<
@@ -49757,16 +51997,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_14getOptionsPrefix(struct PySlep
  */
   __pyx_v_prefix = NULL;
 
-  /* "SLEPc/MFN.pyx":119
+  /* "SLEPc/MFN.pyx":118
  *         """
  *         cdef const_char *prefix = NULL
  *         CHKERR( MFNGetOptionsPrefix(self.mfn, &prefix) )             # <<<<<<<<<<<<<<
  *         return bytes2str(prefix)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetOptionsPrefix(__pyx_v_self->mfn, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 119, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetOptionsPrefix(__pyx_v_self->mfn, (&__pyx_v_prefix))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 118, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":120
+  /* "SLEPc/MFN.pyx":119
  *         cdef const_char *prefix = NULL
  *         CHKERR( MFNGetOptionsPrefix(self.mfn, &prefix) )
  *         return bytes2str(prefix)             # <<<<<<<<<<<<<<
@@ -49774,13 +52014,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_14getOptionsPrefix(struct PySlep
  *     def setOptionsPrefix(self, prefix):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 120, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_bytes2str(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 119, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/MFN.pyx":108
+  /* "SLEPc/MFN.pyx":107
  *         return bytes2str(mfn_type)
  * 
  *     def getOptionsPrefix(self):             # <<<<<<<<<<<<<<
@@ -49799,7 +52039,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_14getOptionsPrefix(struct PySlep
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":122
+/* "SLEPc/MFN.pyx":121
  *         return bytes2str(prefix)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -49823,6 +52063,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_17setOptionsPrefix(PyObject *__p
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -49833,7 +52074,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_17setOptionsPrefix(PyObject *__p
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(17, 122, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOptionsPrefix") < 0)) __PYX_ERR(18, 121, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -49844,7 +52085,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_17setOptionsPrefix(PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 122, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(18, 121, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.MFN.setOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -49866,7 +52107,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_16setOptionsPrefix(struct PySlep
   __Pyx_RefNannySetupContext("setOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/MFN.pyx":132
+  /* "SLEPc/MFN.pyx":131
  *             The prefix string to prepend to all MFN option requests.
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -49875,28 +52116,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_16setOptionsPrefix(struct PySlep
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/MFN.pyx":133
+  /* "SLEPc/MFN.pyx":132
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( MFNSetOptionsPrefix(self.mfn, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 133, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 132, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/MFN.pyx":134
+  /* "SLEPc/MFN.pyx":133
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( MFNSetOptionsPrefix(self.mfn, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def appendOptionsPrefix(self, prefix):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetOptionsPrefix(__pyx_v_self->mfn, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(17, 134, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetOptionsPrefix(__pyx_v_self->mfn, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 133, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":122
+  /* "SLEPc/MFN.pyx":121
  *         return bytes2str(prefix)
  * 
  *     def setOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -49918,7 +52159,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_16setOptionsPrefix(struct PySlep
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":136
+/* "SLEPc/MFN.pyx":135
  *         CHKERR( MFNSetOptionsPrefix(self.mfn, cval) )
  * 
  *     def appendOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -49942,6 +52183,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_19appendOptionsPrefix(PyObject *
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -49952,7 +52194,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_19appendOptionsPrefix(PyObject *
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "appendOptionsPrefix") < 0)) __PYX_ERR(17, 136, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "appendOptionsPrefix") < 0)) __PYX_ERR(18, 135, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -49963,7 +52205,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_19appendOptionsPrefix(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("appendOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 136, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("appendOptionsPrefix", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(18, 135, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.MFN.appendOptionsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -49985,7 +52227,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_18appendOptionsPrefix(struct PyS
   __Pyx_RefNannySetupContext("appendOptionsPrefix", 0);
   __Pyx_INCREF(__pyx_v_prefix);
 
-  /* "SLEPc/MFN.pyx":146
+  /* "SLEPc/MFN.pyx":145
  *             The prefix string to prepend to all MFN option requests.
  *         """
  *         cdef const_char *cval = NULL             # <<<<<<<<<<<<<<
@@ -49994,28 +52236,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_18appendOptionsPrefix(struct PyS
  */
   __pyx_v_cval = NULL;
 
-  /* "SLEPc/MFN.pyx":147
+  /* "SLEPc/MFN.pyx":146
  *         """
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)             # <<<<<<<<<<<<<<
  *         CHKERR( MFNAppendOptionsPrefix(self.mfn, cval) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 147, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_str2bytes(__pyx_v_prefix, (&__pyx_v_cval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 146, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/MFN.pyx":148
+  /* "SLEPc/MFN.pyx":147
  *         cdef const_char *cval = NULL
  *         prefix = str2bytes(prefix, &cval)
  *         CHKERR( MFNAppendOptionsPrefix(self.mfn, cval) )             # <<<<<<<<<<<<<<
  * 
  *     def setFromOptions(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNAppendOptionsPrefix(__pyx_v_self->mfn, __pyx_v_cval)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(17, 148, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNAppendOptionsPrefix(__pyx_v_self->mfn, __pyx_v_cval)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 147, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":136
+  /* "SLEPc/MFN.pyx":135
  *         CHKERR( MFNSetOptionsPrefix(self.mfn, cval) )
  * 
  *     def appendOptionsPrefix(self, prefix):             # <<<<<<<<<<<<<<
@@ -50037,7 +52279,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_18appendOptionsPrefix(struct PyS
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":150
+/* "SLEPc/MFN.pyx":149
  *         CHKERR( MFNAppendOptionsPrefix(self.mfn, cval) )
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -50068,16 +52310,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_20setFromOptions(struct PySlepcM
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setFromOptions", 0);
 
-  /* "SLEPc/MFN.pyx":156
+  /* "SLEPc/MFN.pyx":155
  *         the solver type.
  *         """
  *         CHKERR( MFNSetFromOptions(self.mfn) )             # <<<<<<<<<<<<<<
  * 
  *     def getTolerances(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetFromOptions(__pyx_v_self->mfn)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 156, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetFromOptions(__pyx_v_self->mfn)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 155, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":150
+  /* "SLEPc/MFN.pyx":149
  *         CHKERR( MFNAppendOptionsPrefix(self.mfn, cval) )
  * 
  *     def setFromOptions(self):             # <<<<<<<<<<<<<<
@@ -50097,7 +52339,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_20setFromOptions(struct PySlepcM
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":158
+/* "SLEPc/MFN.pyx":157
  *         CHKERR( MFNSetFromOptions(self.mfn) )
  * 
  *     def getTolerances(self):             # <<<<<<<<<<<<<<
@@ -50133,7 +52375,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_22getTolerances(struct PySlepcMF
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("getTolerances", 0);
 
-  /* "SLEPc/MFN.pyx":170
+  /* "SLEPc/MFN.pyx":169
  *             The maximum number of iterations
  *         """
  *         cdef PetscReal rval = 0             # <<<<<<<<<<<<<<
@@ -50142,7 +52384,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_22getTolerances(struct PySlepcMF
  */
   __pyx_v_rval = 0.0;
 
-  /* "SLEPc/MFN.pyx":171
+  /* "SLEPc/MFN.pyx":170
  *         """
  *         cdef PetscReal rval = 0
  *         cdef PetscInt  ival = 0             # <<<<<<<<<<<<<<
@@ -50151,16 +52393,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_22getTolerances(struct PySlepcMF
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/MFN.pyx":172
+  /* "SLEPc/MFN.pyx":171
  *         cdef PetscReal rval = 0
  *         cdef PetscInt  ival = 0
  *         CHKERR( MFNGetTolerances(self.mfn, &rval, &ival) )             # <<<<<<<<<<<<<<
  *         return (toReal(rval), toInt(ival))
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetTolerances(__pyx_v_self->mfn, (&__pyx_v_rval), (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 172, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetTolerances(__pyx_v_self->mfn, (&__pyx_v_rval), (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 171, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":173
+  /* "SLEPc/MFN.pyx":172
  *         cdef PetscInt  ival = 0
  *         CHKERR( MFNGetTolerances(self.mfn, &rval, &ival) )
  *         return (toReal(rval), toInt(ival))             # <<<<<<<<<<<<<<
@@ -50168,11 +52410,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_22getTolerances(struct PySlepcMF
  *     def setTolerances(self, tol=None, max_it=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 173, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toReal(__pyx_v_rval); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 172, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 173, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 172, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 173, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 172, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
@@ -50184,7 +52426,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_22getTolerances(struct PySlepcMF
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/MFN.pyx":158
+  /* "SLEPc/MFN.pyx":157
  *         CHKERR( MFNSetFromOptions(self.mfn) )
  * 
  *     def getTolerances(self):             # <<<<<<<<<<<<<<
@@ -50205,7 +52447,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_22getTolerances(struct PySlepcMF
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":175
+/* "SLEPc/MFN.pyx":174
  *         return (toReal(rval), toInt(ival))
  * 
  *     def setTolerances(self, tol=None, max_it=None):             # <<<<<<<<<<<<<<
@@ -50232,7 +52474,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_25setTolerances(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -50243,6 +52487,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_25setTolerances(PyObject *__pyx_
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_tol);
           if (value) { values[0] = value; kw_args--; }
         }
+        CYTHON_FALLTHROUGH;
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_max_it);
@@ -50250,12 +52495,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_25setTolerances(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTolerances") < 0)) __PYX_ERR(17, 175, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setTolerances") < 0)) __PYX_ERR(18, 174, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -50265,7 +52512,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_25setTolerances(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setTolerances", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 175, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setTolerances", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(18, 174, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.MFN.setTolerances", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -50290,7 +52537,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_24setTolerances(struct PySlepcMF
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("setTolerances", 0);
 
-  /* "SLEPc/MFN.pyx":187
+  /* "SLEPc/MFN.pyx":186
  *             The maximum number of iterations
  *         """
  *         cdef PetscReal rval = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -50299,7 +52546,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_24setTolerances(struct PySlepcMF
  */
   __pyx_v_rval = PETSC_DEFAULT;
 
-  /* "SLEPc/MFN.pyx":188
+  /* "SLEPc/MFN.pyx":187
  *         """
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         cdef PetscInt  ival = PETSC_DEFAULT             # <<<<<<<<<<<<<<
@@ -50308,7 +52555,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_24setTolerances(struct PySlepcMF
  */
   __pyx_v_ival = PETSC_DEFAULT;
 
-  /* "SLEPc/MFN.pyx":189
+  /* "SLEPc/MFN.pyx":188
  *         cdef PetscReal rval = PETSC_DEFAULT
  *         cdef PetscInt  ival = PETSC_DEFAULT
  *         if tol    is not None: rval = asReal(tol)             # <<<<<<<<<<<<<<
@@ -50318,11 +52565,11 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_24setTolerances(struct PySlepcMF
   __pyx_t_1 = (__pyx_v_tol != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
-    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_tol); if (unlikely(__pyx_t_3 == -1.0 && PyErr_Occurred())) __PYX_ERR(17, 189, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_8slepc4py_5SLEPc_asReal(__pyx_v_tol); if (unlikely(__pyx_t_3 == ((PetscReal)-1.0) && PyErr_Occurred())) __PYX_ERR(18, 188, __pyx_L1_error)
     __pyx_v_rval = __pyx_t_3;
   }
 
-  /* "SLEPc/MFN.pyx":190
+  /* "SLEPc/MFN.pyx":189
  *         cdef PetscInt  ival = PETSC_DEFAULT
  *         if tol    is not None: rval = asReal(tol)
  *         if max_it is not None: ival = asInt(max_it)             # <<<<<<<<<<<<<<
@@ -50332,20 +52579,20 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_24setTolerances(struct PySlepcMF
   __pyx_t_2 = (__pyx_v_max_it != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
-    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_max_it); if (unlikely(__pyx_t_4 == -1L && PyErr_Occurred())) __PYX_ERR(17, 190, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_max_it); if (unlikely(__pyx_t_4 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(18, 189, __pyx_L1_error)
     __pyx_v_ival = __pyx_t_4;
   }
 
-  /* "SLEPc/MFN.pyx":191
+  /* "SLEPc/MFN.pyx":190
  *         if tol    is not None: rval = asReal(tol)
  *         if max_it is not None: ival = asInt(max_it)
  *         CHKERR( MFNSetTolerances(self.mfn, rval, ival) )             # <<<<<<<<<<<<<<
  * 
  *     def getDimensions(self):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetTolerances(__pyx_v_self->mfn, __pyx_v_rval, __pyx_v_ival)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(17, 191, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetTolerances(__pyx_v_self->mfn, __pyx_v_rval, __pyx_v_ival)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(18, 190, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":175
+  /* "SLEPc/MFN.pyx":174
  *         return (toReal(rval), toInt(ival))
  * 
  *     def setTolerances(self, tol=None, max_it=None):             # <<<<<<<<<<<<<<
@@ -50365,7 +52612,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_24setTolerances(struct PySlepcMF
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":193
+/* "SLEPc/MFN.pyx":192
  *         CHKERR( MFNSetTolerances(self.mfn, rval, ival) )
  * 
  *     def getDimensions(self):             # <<<<<<<<<<<<<<
@@ -50398,7 +52645,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_26getDimensions(struct PySlepcMF
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getDimensions", 0);
 
-  /* "SLEPc/MFN.pyx":202
+  /* "SLEPc/MFN.pyx":201
  *             Maximum dimension of the subspace to be used by the solver.
  *         """
  *         cdef PetscInt ival = 0             # <<<<<<<<<<<<<<
@@ -50407,16 +52654,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_26getDimensions(struct PySlepcMF
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/MFN.pyx":203
+  /* "SLEPc/MFN.pyx":202
  *         """
  *         cdef PetscInt ival = 0
  *         CHKERR( MFNGetDimensions(self.mfn, &ival) )             # <<<<<<<<<<<<<<
  *         return toInt(ival)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetDimensions(__pyx_v_self->mfn, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 203, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetDimensions(__pyx_v_self->mfn, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 202, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":204
+  /* "SLEPc/MFN.pyx":203
  *         cdef PetscInt ival = 0
  *         CHKERR( MFNGetDimensions(self.mfn, &ival) )
  *         return toInt(ival)             # <<<<<<<<<<<<<<
@@ -50424,13 +52671,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_26getDimensions(struct PySlepcMF
  *     def setDimensions(self, ncv):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 204, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 203, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/MFN.pyx":193
+  /* "SLEPc/MFN.pyx":192
  *         CHKERR( MFNSetTolerances(self.mfn, rval, ival) )
  * 
  *     def getDimensions(self):             # <<<<<<<<<<<<<<
@@ -50449,7 +52696,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_26getDimensions(struct PySlepcMF
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":206
+/* "SLEPc/MFN.pyx":205
  *         return toInt(ival)
  * 
  *     def setDimensions(self, ncv):             # <<<<<<<<<<<<<<
@@ -50473,6 +52720,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_29setDimensions(PyObject *__pyx_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -50483,7 +52731,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_29setDimensions(PyObject *__pyx_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDimensions") < 0)) __PYX_ERR(17, 206, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDimensions") < 0)) __PYX_ERR(18, 205, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -50494,7 +52742,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_29setDimensions(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setDimensions", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 206, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setDimensions", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(18, 205, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.MFN.setDimensions", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -50515,26 +52763,26 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_28setDimensions(struct PySlepcMF
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setDimensions", 0);
 
-  /* "SLEPc/MFN.pyx":216
+  /* "SLEPc/MFN.pyx":215
  *             solver.
  *         """
  *         cdef PetscInt ival = asInt(ncv)             # <<<<<<<<<<<<<<
  *         CHKERR( MFNSetDimensions(self.mfn, ival) )
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_ncv); if (unlikely(__pyx_t_1 == -1L && PyErr_Occurred())) __PYX_ERR(17, 216, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_asInt(__pyx_v_ncv); if (unlikely(__pyx_t_1 == ((PetscInt)-1L) && PyErr_Occurred())) __PYX_ERR(18, 215, __pyx_L1_error)
   __pyx_v_ival = __pyx_t_1;
 
-  /* "SLEPc/MFN.pyx":217
+  /* "SLEPc/MFN.pyx":216
  *         """
  *         cdef PetscInt ival = asInt(ncv)
  *         CHKERR( MFNSetDimensions(self.mfn, ival) )             # <<<<<<<<<<<<<<
  * 
  *     def getFN(self):
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetDimensions(__pyx_v_self->mfn, __pyx_v_ival)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(17, 217, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetDimensions(__pyx_v_self->mfn, __pyx_v_ival)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 216, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":206
+  /* "SLEPc/MFN.pyx":205
  *         return toInt(ival)
  * 
  *     def setDimensions(self, ncv):             # <<<<<<<<<<<<<<
@@ -50554,7 +52802,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_28setDimensions(struct PySlepcMF
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":219
+/* "SLEPc/MFN.pyx":218
  *         CHKERR( MFNSetDimensions(self.mfn, ival) )
  * 
  *     def getFN(self):             # <<<<<<<<<<<<<<
@@ -50587,28 +52835,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_30getFN(struct PySlepcMFNObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getFN", 0);
 
-  /* "SLEPc/MFN.pyx":228
+  /* "SLEPc/MFN.pyx":227
  *             The math function context.
  *         """
  *         cdef FN fn = FN()             # <<<<<<<<<<<<<<
  *         CHKERR( MFNGetFN(self.mfn, &fn.fn) )
  *         PetscINCREF(fn.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_FN), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 228, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_FN), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 227, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_fn = ((struct PySlepcFNObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/MFN.pyx":229
+  /* "SLEPc/MFN.pyx":228
  *         """
  *         cdef FN fn = FN()
  *         CHKERR( MFNGetFN(self.mfn, &fn.fn) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(fn.obj)
  *         return fn
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetFN(__pyx_v_self->mfn, (&__pyx_v_fn->fn))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(17, 229, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetFN(__pyx_v_self->mfn, (&__pyx_v_fn->fn))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 228, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":230
+  /* "SLEPc/MFN.pyx":229
  *         cdef FN fn = FN()
  *         CHKERR( MFNGetFN(self.mfn, &fn.fn) )
  *         PetscINCREF(fn.obj)             # <<<<<<<<<<<<<<
@@ -50617,19 +52865,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_30getFN(struct PySlepcMFNObject
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_fn->__pyx_base.obj);
 
-  /* "SLEPc/MFN.pyx":231
+  /* "SLEPc/MFN.pyx":230
  *         CHKERR( MFNGetFN(self.mfn, &fn.fn) )
  *         PetscINCREF(fn.obj)
  *         return fn             # <<<<<<<<<<<<<<
  * 
- *     def setFN(self, FN fn not None):
+ *     def setFN(self, FN fn):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_fn));
   __pyx_r = ((PyObject *)__pyx_v_fn);
   goto __pyx_L0;
 
-  /* "SLEPc/MFN.pyx":219
+  /* "SLEPc/MFN.pyx":218
  *         CHKERR( MFNSetDimensions(self.mfn, ival) )
  * 
  *     def getFN(self):             # <<<<<<<<<<<<<<
@@ -50649,10 +52897,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_30getFN(struct PySlepcMFNObject
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":233
+/* "SLEPc/MFN.pyx":232
  *         return fn
  * 
- *     def setFN(self, FN fn not None):             # <<<<<<<<<<<<<<
+ *     def setFN(self, FN fn):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a math function object to the MFN object.
  */
@@ -50673,6 +52921,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_33setFN(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -50683,7 +52932,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_33setFN(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setFN") < 0)) __PYX_ERR(17, 233, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setFN") < 0)) __PYX_ERR(18, 232, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -50694,13 +52943,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_33setFN(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setFN", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 233, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setFN", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(18, 232, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.MFN.setFN", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fn), __pyx_ptype_8slepc4py_5SLEPc_FN, 0, "fn", 0))) __PYX_ERR(17, 233, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fn), __pyx_ptype_8slepc4py_5SLEPc_FN, 0, "fn", 0))) __PYX_ERR(18, 232, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3MFN_32setFN(((struct PySlepcMFNObject *)__pyx_v_self), __pyx_v_fn);
 
   /* function exit code */
@@ -50718,19 +52967,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_32setFN(struct PySlepcMFNObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setFN", 0);
 
-  /* "SLEPc/MFN.pyx":242
+  /* "SLEPc/MFN.pyx":241
  *             The math function context.
  *         """
  *         CHKERR( MFNSetFN(self.mfn, fn.fn) )             # <<<<<<<<<<<<<<
  * 
  *     def getBV(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetFN(__pyx_v_self->mfn, __pyx_v_fn->fn)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 242, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetFN(__pyx_v_self->mfn, __pyx_v_fn->fn)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 241, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":233
+  /* "SLEPc/MFN.pyx":232
  *         return fn
  * 
- *     def setFN(self, FN fn not None):             # <<<<<<<<<<<<<<
+ *     def setFN(self, FN fn):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a math function object to the MFN object.
  */
@@ -50747,7 +52996,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_32setFN(struct PySlepcMFNObject
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":244
+/* "SLEPc/MFN.pyx":243
  *         CHKERR( MFNSetFN(self.mfn, fn.fn) )
  * 
  *     def getBV(self):             # <<<<<<<<<<<<<<
@@ -50780,28 +53029,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_34getBV(struct PySlepcMFNObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getBV", 0);
 
-  /* "SLEPc/MFN.pyx":253
+  /* "SLEPc/MFN.pyx":252
  *             The basis vectors context.
  *         """
  *         cdef BV bv = BV()             # <<<<<<<<<<<<<<
  *         CHKERR( MFNGetBV(self.mfn, &bv.bv) )
  *         PetscINCREF(bv.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 253, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 252, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bv = ((struct PySlepcBVObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/MFN.pyx":254
+  /* "SLEPc/MFN.pyx":253
  *         """
  *         cdef BV bv = BV()
  *         CHKERR( MFNGetBV(self.mfn, &bv.bv) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(bv.obj)
  *         return bv
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetBV(__pyx_v_self->mfn, (&__pyx_v_bv->bv))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(17, 254, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetBV(__pyx_v_self->mfn, (&__pyx_v_bv->bv))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 253, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":255
+  /* "SLEPc/MFN.pyx":254
  *         cdef BV bv = BV()
  *         CHKERR( MFNGetBV(self.mfn, &bv.bv) )
  *         PetscINCREF(bv.obj)             # <<<<<<<<<<<<<<
@@ -50810,19 +53059,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_34getBV(struct PySlepcMFNObject
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_bv->__pyx_base.obj);
 
-  /* "SLEPc/MFN.pyx":256
+  /* "SLEPc/MFN.pyx":255
  *         CHKERR( MFNGetBV(self.mfn, &bv.bv) )
  *         PetscINCREF(bv.obj)
  *         return bv             # <<<<<<<<<<<<<<
  * 
- *     def setBV(self, BV bv not None):
+ *     def setBV(self, BV bv):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_bv));
   __pyx_r = ((PyObject *)__pyx_v_bv);
   goto __pyx_L0;
 
-  /* "SLEPc/MFN.pyx":244
+  /* "SLEPc/MFN.pyx":243
  *         CHKERR( MFNSetFN(self.mfn, fn.fn) )
  * 
  *     def getBV(self):             # <<<<<<<<<<<<<<
@@ -50842,10 +53091,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_34getBV(struct PySlepcMFNObject
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":258
+/* "SLEPc/MFN.pyx":257
  *         return bv
  * 
- *     def setBV(self, BV bv not None):             # <<<<<<<<<<<<<<
+ *     def setBV(self, BV bv):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a basis vector object to the MFN object.
  */
@@ -50866,6 +53115,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_37setBV(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -50876,7 +53126,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_37setBV(PyObject *__pyx_v_self,
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBV") < 0)) __PYX_ERR(17, 258, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setBV") < 0)) __PYX_ERR(18, 257, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -50887,13 +53137,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_37setBV(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setBV", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 258, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setBV", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(18, 257, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.MFN.setBV", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bv), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "bv", 0))) __PYX_ERR(17, 258, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bv), __pyx_ptype_8slepc4py_5SLEPc_BV, 0, "bv", 0))) __PYX_ERR(18, 257, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3MFN_36setBV(((struct PySlepcMFNObject *)__pyx_v_self), __pyx_v_bv);
 
   /* function exit code */
@@ -50911,19 +53161,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_36setBV(struct PySlepcMFNObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setBV", 0);
 
-  /* "SLEPc/MFN.pyx":267
+  /* "SLEPc/MFN.pyx":266
  *             The basis vectors context.
  *         """
  *         CHKERR( MFNSetBV(self.mfn, bv.bv) )             # <<<<<<<<<<<<<<
  * 
  *     def getOperator(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetBV(__pyx_v_self->mfn, __pyx_v_bv->bv)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 267, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetBV(__pyx_v_self->mfn, __pyx_v_bv->bv)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 266, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":258
+  /* "SLEPc/MFN.pyx":257
  *         return bv
  * 
- *     def setBV(self, BV bv not None):             # <<<<<<<<<<<<<<
+ *     def setBV(self, BV bv):             # <<<<<<<<<<<<<<
  *         """
  *         Associates a basis vector object to the MFN object.
  */
@@ -50940,7 +53190,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_36setBV(struct PySlepcMFNObject
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":269
+/* "SLEPc/MFN.pyx":268
  *         CHKERR( MFNSetBV(self.mfn, bv.bv) )
  * 
  *     def getOperator(self):             # <<<<<<<<<<<<<<
@@ -50973,28 +53223,28 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_38getOperator(struct PySlepcMFNO
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("getOperator", 0);
 
-  /* "SLEPc/MFN.pyx":278
+  /* "SLEPc/MFN.pyx":277
  *             The matrix for which the matrix function is to be computed.
  *         """
  *         cdef Mat A = Mat()             # <<<<<<<<<<<<<<
  *         CHKERR( MFNGetOperator(self.mfn, &A.mat) )
  *         PetscINCREF(A.obj)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 278, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8petsc4py_5PETSc_Mat), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 277, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_A = ((struct PyPetscMatObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "SLEPc/MFN.pyx":279
+  /* "SLEPc/MFN.pyx":278
  *         """
  *         cdef Mat A = Mat()
  *         CHKERR( MFNGetOperator(self.mfn, &A.mat) )             # <<<<<<<<<<<<<<
  *         PetscINCREF(A.obj)
  *         return A
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetOperator(__pyx_v_self->mfn, (&__pyx_v_A->mat))); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(17, 279, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetOperator(__pyx_v_self->mfn, (&__pyx_v_A->mat))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 278, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":280
+  /* "SLEPc/MFN.pyx":279
  *         cdef Mat A = Mat()
  *         CHKERR( MFNGetOperator(self.mfn, &A.mat) )
  *         PetscINCREF(A.obj)             # <<<<<<<<<<<<<<
@@ -51003,19 +53253,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_38getOperator(struct PySlepcMFNO
  */
   __pyx_f_8slepc4py_5SLEPc_PetscINCREF(__pyx_v_A->__pyx_base.obj);
 
-  /* "SLEPc/MFN.pyx":281
+  /* "SLEPc/MFN.pyx":280
  *         CHKERR( MFNGetOperator(self.mfn, &A.mat) )
  *         PetscINCREF(A.obj)
  *         return A             # <<<<<<<<<<<<<<
  * 
- *     def setOperator(self, Mat A not None):
+ *     def setOperator(self, Mat A):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_A));
   __pyx_r = ((PyObject *)__pyx_v_A);
   goto __pyx_L0;
 
-  /* "SLEPc/MFN.pyx":269
+  /* "SLEPc/MFN.pyx":268
  *         CHKERR( MFNSetBV(self.mfn, bv.bv) )
  * 
  *     def getOperator(self):             # <<<<<<<<<<<<<<
@@ -51035,10 +53285,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_38getOperator(struct PySlepcMFNO
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":283
+/* "SLEPc/MFN.pyx":282
  *         return A
  * 
- *     def setOperator(self, Mat A not None):             # <<<<<<<<<<<<<<
+ *     def setOperator(self, Mat A):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the matrix associated with the MFN object.
  */
@@ -51059,6 +53309,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_41setOperator(PyObject *__pyx_v_
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -51069,7 +53320,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_41setOperator(PyObject *__pyx_v_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOperator") < 0)) __PYX_ERR(17, 283, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setOperator") < 0)) __PYX_ERR(18, 282, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -51080,13 +53331,13 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_41setOperator(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setOperator", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 283, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setOperator", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(18, 282, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.MFN.setOperator", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_A), __pyx_ptype_8petsc4py_5PETSc_Mat, 0, "A", 0))) __PYX_ERR(17, 283, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_A), __pyx_ptype_8petsc4py_5PETSc_Mat, 0, "A", 0))) __PYX_ERR(18, 282, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3MFN_40setOperator(((struct PySlepcMFNObject *)__pyx_v_self), __pyx_v_A);
 
   /* function exit code */
@@ -51104,19 +53355,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_40setOperator(struct PySlepcMFNO
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setOperator", 0);
 
-  /* "SLEPc/MFN.pyx":292
+  /* "SLEPc/MFN.pyx":291
  *             The problem matrix.
  *         """
  *         CHKERR( MFNSetOperator(self.mfn, A.mat) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetOperator(__pyx_v_self->mfn, __pyx_v_A->mat)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 292, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetOperator(__pyx_v_self->mfn, __pyx_v_A->mat)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 291, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":283
+  /* "SLEPc/MFN.pyx":282
  *         return A
  * 
- *     def setOperator(self, Mat A not None):             # <<<<<<<<<<<<<<
+ *     def setOperator(self, Mat A):             # <<<<<<<<<<<<<<
  *         """
  *         Sets the matrix associated with the MFN object.
  */
@@ -51133,7 +53384,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_40setOperator(struct PySlepcMFNO
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":296
+/* "SLEPc/MFN.pyx":295
  *     #
  * 
  *     def cancelMonitor(self):             # <<<<<<<<<<<<<<
@@ -51164,16 +53415,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_42cancelMonitor(struct PySlepcMF
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("cancelMonitor", 0);
 
-  /* "SLEPc/MFN.pyx":300
+  /* "SLEPc/MFN.pyx":299
  *         Clears all monitors for a MFN object.
  *         """
  *         CHKERR( MFNMonitorCancel(self.mfn) )             # <<<<<<<<<<<<<<
  * 
  *     #
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNMonitorCancel(__pyx_v_self->mfn)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 300, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNMonitorCancel(__pyx_v_self->mfn)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 299, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":296
+  /* "SLEPc/MFN.pyx":295
  *     #
  * 
  *     def cancelMonitor(self):             # <<<<<<<<<<<<<<
@@ -51193,7 +53444,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_42cancelMonitor(struct PySlepcMF
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":304
+/* "SLEPc/MFN.pyx":303
  *     #
  * 
  *     def setUp(self):             # <<<<<<<<<<<<<<
@@ -51224,16 +53475,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_44setUp(struct PySlepcMFNObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setUp", 0);
 
-  /* "SLEPc/MFN.pyx":309
+  /* "SLEPc/MFN.pyx":308
  *         execution of the eigensolver.
  *         """
  *         CHKERR( MFNSetUp(self.mfn) )             # <<<<<<<<<<<<<<
  * 
- *     def solve(self, Vec b not None, Vec x not None):
+ *     def solve(self, Vec b, Vec x):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetUp(__pyx_v_self->mfn)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 309, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSetUp(__pyx_v_self->mfn)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 308, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":304
+  /* "SLEPc/MFN.pyx":303
  *     #
  * 
  *     def setUp(self):             # <<<<<<<<<<<<<<
@@ -51253,10 +53504,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_44setUp(struct PySlepcMFNObject
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":311
+/* "SLEPc/MFN.pyx":310
  *         CHKERR( MFNSetUp(self.mfn) )
  * 
- *     def solve(self, Vec b not None, Vec x not None):             # <<<<<<<<<<<<<<
+ *     def solve(self, Vec b, Vec x):             # <<<<<<<<<<<<<<
  *         """
  *         Solves the matrix function problem. Given a vector b, the
  */
@@ -51278,7 +53529,9 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_47solve(PyObject *__pyx_v_self,
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -51287,14 +53540,15 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_47solve(PyObject *__pyx_v_self,
         case  0:
         if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_b)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("solve", 1, 2, 2, 1); __PYX_ERR(17, 311, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("solve", 1, 2, 2, 1); __PYX_ERR(18, 310, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "solve") < 0)) __PYX_ERR(17, 311, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "solve") < 0)) __PYX_ERR(18, 310, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -51307,14 +53561,14 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_3MFN_47solve(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("solve", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(17, 311, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("solve", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(18, 310, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc.MFN.solve", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_b), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "b", 0))) __PYX_ERR(17, 311, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "x", 0))) __PYX_ERR(17, 311, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_b), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "b", 0))) __PYX_ERR(18, 310, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_8petsc4py_5PETSc_Vec, 0, "x", 0))) __PYX_ERR(18, 310, __pyx_L1_error)
   __pyx_r = __pyx_pf_8slepc4py_5SLEPc_3MFN_46solve(((struct PySlepcMFNObject *)__pyx_v_self), __pyx_v_b, __pyx_v_x);
 
   /* function exit code */
@@ -51332,19 +53586,19 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_46solve(struct PySlepcMFNObject
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("solve", 0);
 
-  /* "SLEPc/MFN.pyx":323
+  /* "SLEPc/MFN.pyx":322
  *             The solution.
  *         """
  *         CHKERR( MFNSolve(self.mfn, b.vec, x.vec) )             # <<<<<<<<<<<<<<
  * 
  *     def getIterationNumber(self):
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSolve(__pyx_v_self->mfn, __pyx_v_b->vec, __pyx_v_x->vec)); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 323, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNSolve(__pyx_v_self->mfn, __pyx_v_b->vec, __pyx_v_x->vec)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 322, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":311
+  /* "SLEPc/MFN.pyx":310
  *         CHKERR( MFNSetUp(self.mfn) )
  * 
- *     def solve(self, Vec b not None, Vec x not None):             # <<<<<<<<<<<<<<
+ *     def solve(self, Vec b, Vec x):             # <<<<<<<<<<<<<<
  *         """
  *         Solves the matrix function problem. Given a vector b, the
  */
@@ -51361,7 +53615,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_46solve(struct PySlepcMFNObject
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":325
+/* "SLEPc/MFN.pyx":324
  *         CHKERR( MFNSolve(self.mfn, b.vec, x.vec) )
  * 
  *     def getIterationNumber(self):             # <<<<<<<<<<<<<<
@@ -51394,7 +53648,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_48getIterationNumber(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getIterationNumber", 0);
 
-  /* "SLEPc/MFN.pyx":336
+  /* "SLEPc/MFN.pyx":335
  *              Iteration number.
  *         """
  *         cdef PetscInt ival = 0             # <<<<<<<<<<<<<<
@@ -51403,16 +53657,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_48getIterationNumber(struct PySl
  */
   __pyx_v_ival = 0;
 
-  /* "SLEPc/MFN.pyx":337
+  /* "SLEPc/MFN.pyx":336
  *         """
  *         cdef PetscInt ival = 0
  *         CHKERR( MFNGetIterationNumber(self.mfn, &ival) )             # <<<<<<<<<<<<<<
  *         return toInt(ival)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetIterationNumber(__pyx_v_self->mfn, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 337, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetIterationNumber(__pyx_v_self->mfn, (&__pyx_v_ival))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 336, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":338
+  /* "SLEPc/MFN.pyx":337
  *         cdef PetscInt ival = 0
  *         CHKERR( MFNGetIterationNumber(self.mfn, &ival) )
  *         return toInt(ival)             # <<<<<<<<<<<<<<
@@ -51420,13 +53674,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_48getIterationNumber(struct PySl
  *     def getConvergedReason(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 338, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_toInt(__pyx_v_ival); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 337, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/MFN.pyx":325
+  /* "SLEPc/MFN.pyx":324
  *         CHKERR( MFNSolve(self.mfn, b.vec, x.vec) )
  * 
  *     def getIterationNumber(self):             # <<<<<<<<<<<<<<
@@ -51445,7 +53699,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_48getIterationNumber(struct PySl
   return __pyx_r;
 }
 
-/* "SLEPc/MFN.pyx":340
+/* "SLEPc/MFN.pyx":339
  *         return toInt(ival)
  * 
  *     def getConvergedReason(self):             # <<<<<<<<<<<<<<
@@ -51478,7 +53732,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_50getConvergedReason(struct PySl
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getConvergedReason", 0);
 
-  /* "SLEPc/MFN.pyx":350
+  /* "SLEPc/MFN.pyx":349
  *             converged.
  *         """
  *         cdef SlepcMFNConvergedReason val = MFN_CONVERGED_ITERATING             # <<<<<<<<<<<<<<
@@ -51487,16 +53741,16 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_50getConvergedReason(struct PySl
  */
   __pyx_v_val = MFN_CONVERGED_ITERATING;
 
-  /* "SLEPc/MFN.pyx":351
+  /* "SLEPc/MFN.pyx":350
  *         """
  *         cdef SlepcMFNConvergedReason val = MFN_CONVERGED_ITERATING
  *         CHKERR( MFNGetConvergedReason(self.mfn, &val) )             # <<<<<<<<<<<<<<
  *         return val
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetConvergedReason(__pyx_v_self->mfn, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(17, 351, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(MFNGetConvergedReason(__pyx_v_self->mfn, (&__pyx_v_val))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 350, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":352
+  /* "SLEPc/MFN.pyx":351
  *         cdef SlepcMFNConvergedReason val = MFN_CONVERGED_ITERATING
  *         CHKERR( MFNGetConvergedReason(self.mfn, &val) )
  *         return val             # <<<<<<<<<<<<<<
@@ -51504,13 +53758,13 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_3MFN_50getConvergedReason(struct PySl
  * 
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_MFNConvergedReason(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 352, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_MFNConvergedReason(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 351, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/MFN.pyx":340
+  /* "SLEPc/MFN.pyx":339
  *         return toInt(ival)
  * 
  *     def getConvergedReason(self):             # <<<<<<<<<<<<<<
@@ -51570,7 +53824,7 @@ static CYTHON_INLINE int __pyx_f_8slepc4py_5SLEPc_setref(void *__pyx_v_d, void *
  *     dest[0] = source
  *     return 0
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(__pyx_f_8slepc4py_5SLEPc_PetscINCREF((&__pyx_v_source))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(18, 6, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(__pyx_f_8slepc4py_5SLEPc_PetscINCREF((&__pyx_v_source))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(19, 6, __pyx_L1_error)
 
   /* "SLEPc/CAPI.pyx":7
  *     cdef PetscObject source = <PetscObject>  s
@@ -51631,7 +53885,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcST_New(ST __pyx_v_arg) {
  *     setref(&retv.st, arg)
  *     return retv
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_ST), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 15, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_ST), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 15, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_retv = ((struct PySlepcSTObject *)__pyx_t_1);
   __pyx_t_1 = 0;
@@ -51643,7 +53897,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcST_New(ST __pyx_v_arg) {
  *     return retv
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->st), __pyx_v_arg); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(18, 16, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->st), __pyx_v_arg); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(19, 16, __pyx_L1_error)
 
   /* "SLEPc/CAPI.pyx":17
  *     cdef ST retv = ST()
@@ -51710,7 +53964,7 @@ static ST __pyx_f_8slepc4py_5SLEPc_PySlepcST_Get(PyObject *__pyx_v_arg) {
  *     retv = ob.st
  *     return retv
  */
-  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_ST)))) __PYX_ERR(18, 21, __pyx_L1_error)
+  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_ST)))) __PYX_ERR(19, 21, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_arg;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_ob = ((struct PySlepcSTObject *)__pyx_t_1);
@@ -51778,7 +54032,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcBV_New(BV __pyx_v_arg) {
  *     setref(&retv.bv, arg)
  *     return retv
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 30, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 30, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_retv = ((struct PySlepcBVObject *)__pyx_t_1);
   __pyx_t_1 = 0;
@@ -51790,7 +54044,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcBV_New(BV __pyx_v_arg) {
  *     return retv
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->bv), __pyx_v_arg); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(18, 31, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->bv), __pyx_v_arg); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(19, 31, __pyx_L1_error)
 
   /* "SLEPc/CAPI.pyx":32
  *     cdef BV retv = BV()
@@ -51857,7 +54111,7 @@ static BV __pyx_f_8slepc4py_5SLEPc_PySlepcBV_Get(PyObject *__pyx_v_arg) {
  *     retv = ob.bv
  *     return retv
  */
-  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_BV)))) __PYX_ERR(18, 36, __pyx_L1_error)
+  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_BV)))) __PYX_ERR(19, 36, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_arg;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_ob = ((struct PySlepcBVObject *)__pyx_t_1);
@@ -51925,7 +54179,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcDS_New(DS __pyx_v_arg) {
  *     setref(&retv.ds, arg)
  *     return retv
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_DS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 45, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_DS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 45, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_retv = ((struct PySlepcDSObject *)__pyx_t_1);
   __pyx_t_1 = 0;
@@ -51937,7 +54191,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcDS_New(DS __pyx_v_arg) {
  *     return retv
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->ds), __pyx_v_arg); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(18, 46, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->ds), __pyx_v_arg); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(19, 46, __pyx_L1_error)
 
   /* "SLEPc/CAPI.pyx":47
  *     cdef DS retv = DS()
@@ -52004,7 +54258,7 @@ static DS __pyx_f_8slepc4py_5SLEPc_PySlepcDS_Get(PyObject *__pyx_v_arg) {
  *     retv = ob.ds
  *     return retv
  */
-  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_DS)))) __PYX_ERR(18, 51, __pyx_L1_error)
+  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_DS)))) __PYX_ERR(19, 51, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_arg;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_ob = ((struct PySlepcDSObject *)__pyx_t_1);
@@ -52072,7 +54326,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcFN_New(FN __pyx_v_arg) {
  *     setref(&retv.fn, arg)
  *     return retv
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_FN), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 60, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_FN), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 60, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_retv = ((struct PySlepcFNObject *)__pyx_t_1);
   __pyx_t_1 = 0;
@@ -52084,7 +54338,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcFN_New(FN __pyx_v_arg) {
  *     return retv
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->fn), __pyx_v_arg); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(18, 61, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->fn), __pyx_v_arg); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(19, 61, __pyx_L1_error)
 
   /* "SLEPc/CAPI.pyx":62
  *     cdef FN retv = FN()
@@ -52151,7 +54405,7 @@ static FN __pyx_f_8slepc4py_5SLEPc_PySlepcFN_Get(PyObject *__pyx_v_arg) {
  *     retv = ob.fn
  *     return retv
  */
-  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_FN)))) __PYX_ERR(18, 66, __pyx_L1_error)
+  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_FN)))) __PYX_ERR(19, 66, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_arg;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_ob = ((struct PySlepcFNObject *)__pyx_t_1);
@@ -52219,7 +54473,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcRG_New(RG __pyx_v_arg) {
  *     setref(&retv.rg, arg)
  *     return retv
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_RG), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 75, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_RG), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 75, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_retv = ((struct PySlepcRGObject *)__pyx_t_1);
   __pyx_t_1 = 0;
@@ -52231,7 +54485,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcRG_New(RG __pyx_v_arg) {
  *     return retv
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->rg), __pyx_v_arg); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(18, 76, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->rg), __pyx_v_arg); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(19, 76, __pyx_L1_error)
 
   /* "SLEPc/CAPI.pyx":77
  *     cdef RG retv = RG()
@@ -52298,7 +54552,7 @@ static RG __pyx_f_8slepc4py_5SLEPc_PySlepcRG_Get(PyObject *__pyx_v_arg) {
  *     retv = ob.rg
  *     return retv
  */
-  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_RG)))) __PYX_ERR(18, 81, __pyx_L1_error)
+  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_RG)))) __PYX_ERR(19, 81, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_arg;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_ob = ((struct PySlepcRGObject *)__pyx_t_1);
@@ -52366,7 +54620,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcEPS_New(EPS __pyx_v_arg) {
  *     setref(&retv.eps, arg)
  *     return retv
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 90, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 90, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_retv = ((struct PySlepcEPSObject *)__pyx_t_1);
   __pyx_t_1 = 0;
@@ -52378,7 +54632,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcEPS_New(EPS __pyx_v_arg) {
  *     return retv
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->eps), __pyx_v_arg); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(18, 91, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->eps), __pyx_v_arg); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(19, 91, __pyx_L1_error)
 
   /* "SLEPc/CAPI.pyx":92
  *     cdef EPS retv = EPS()
@@ -52445,7 +54699,7 @@ static EPS __pyx_f_8slepc4py_5SLEPc_PySlepcEPS_Get(PyObject *__pyx_v_arg) {
  *     retv = ob.eps
  *     return retv
  */
-  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_EPS)))) __PYX_ERR(18, 96, __pyx_L1_error)
+  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_EPS)))) __PYX_ERR(19, 96, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_arg;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_ob = ((struct PySlepcEPSObject *)__pyx_t_1);
@@ -52513,7 +54767,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcSVD_New(SVD __pyx_v_arg) {
  *     setref(&retv.svd, arg)
  *     return retv
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_SVD), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 105, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_SVD), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 105, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_retv = ((struct PySlepcSVDObject *)__pyx_t_1);
   __pyx_t_1 = 0;
@@ -52525,7 +54779,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcSVD_New(SVD __pyx_v_arg) {
  *     return retv
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->svd), __pyx_v_arg); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(18, 106, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->svd), __pyx_v_arg); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(19, 106, __pyx_L1_error)
 
   /* "SLEPc/CAPI.pyx":107
  *     cdef SVD retv = SVD()
@@ -52592,7 +54846,7 @@ static SVD __pyx_f_8slepc4py_5SLEPc_PySlepcSVD_Get(PyObject *__pyx_v_arg) {
  *     retv = ob.svd
  *     return retv
  */
-  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_SVD)))) __PYX_ERR(18, 111, __pyx_L1_error)
+  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_SVD)))) __PYX_ERR(19, 111, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_arg;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_ob = ((struct PySlepcSVDObject *)__pyx_t_1);
@@ -52660,7 +54914,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcPEP_New(PEP __pyx_v_arg) {
  *     setref(&retv.pep, arg)
  *     return retv
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 120, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 120, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_retv = ((struct PySlepcPEPObject *)__pyx_t_1);
   __pyx_t_1 = 0;
@@ -52672,7 +54926,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcPEP_New(PEP __pyx_v_arg) {
  *     return retv
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->pep), __pyx_v_arg); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(18, 121, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->pep), __pyx_v_arg); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(19, 121, __pyx_L1_error)
 
   /* "SLEPc/CAPI.pyx":122
  *     cdef PEP retv = PEP()
@@ -52739,7 +54993,7 @@ static PEP __pyx_f_8slepc4py_5SLEPc_PySlepcPEP_Get(PyObject *__pyx_v_arg) {
  *     retv = ob.pep
  *     return retv
  */
-  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_PEP)))) __PYX_ERR(18, 126, __pyx_L1_error)
+  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_PEP)))) __PYX_ERR(19, 126, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_arg;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_ob = ((struct PySlepcPEPObject *)__pyx_t_1);
@@ -52807,7 +55061,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcNEP_New(NEP __pyx_v_arg) {
  *     setref(&retv.nep, arg)
  *     return retv
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 135, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 135, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_retv = ((struct PySlepcNEPObject *)__pyx_t_1);
   __pyx_t_1 = 0;
@@ -52819,7 +55073,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcNEP_New(NEP __pyx_v_arg) {
  *     return retv
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->nep), __pyx_v_arg); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(18, 136, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->nep), __pyx_v_arg); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(19, 136, __pyx_L1_error)
 
   /* "SLEPc/CAPI.pyx":137
  *     cdef NEP retv = NEP()
@@ -52886,7 +55140,7 @@ static NEP __pyx_f_8slepc4py_5SLEPc_PySlepcNEP_Get(PyObject *__pyx_v_arg) {
  *     retv = ob.nep
  *     return retv
  */
-  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_NEP)))) __PYX_ERR(18, 141, __pyx_L1_error)
+  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_NEP)))) __PYX_ERR(19, 141, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_arg;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_ob = ((struct PySlepcNEPObject *)__pyx_t_1);
@@ -52954,7 +55208,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcMFN_New(MFN __pyx_v_arg) {
  *     setref(&retv.mfn, arg)
  *     return retv
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_MFN), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 150, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_MFN), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 150, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_retv = ((struct PySlepcMFNObject *)__pyx_t_1);
   __pyx_t_1 = 0;
@@ -52966,7 +55220,7 @@ static PyObject *__pyx_f_8slepc4py_5SLEPc_PySlepcMFN_New(MFN __pyx_v_arg) {
  *     return retv
  * 
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->mfn), __pyx_v_arg); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(18, 151, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_setref((&__pyx_v_retv->mfn), __pyx_v_arg); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(19, 151, __pyx_L1_error)
 
   /* "SLEPc/CAPI.pyx":152
  *     cdef MFN retv = MFN()
@@ -53033,7 +55287,7 @@ static MFN __pyx_f_8slepc4py_5SLEPc_PySlepcMFN_Get(PyObject *__pyx_v_arg) {
  *     retv = ob.mfn
  *     return retv
  */
-  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_MFN)))) __PYX_ERR(18, 156, __pyx_L1_error)
+  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_8slepc4py_5SLEPc_MFN)))) __PYX_ERR(19, 156, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_arg;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_ob = ((struct PySlepcMFNObject *)__pyx_t_1);
@@ -53078,7 +55332,7 @@ static MFN __pyx_f_8slepc4py_5SLEPc_PySlepcMFN_Get(PyObject *__pyx_v_arg) {
   return __pyx_r;
 }
 
-/* "SLEPc/SLEPc.pyx":171
+/* "SLEPc/SLEPc.pyx":174
  *     int fprintf(FILE *, char *, ...)
  * 
  * cdef int initialize(object args) except -1:             # <<<<<<<<<<<<<<
@@ -53093,7 +55347,7 @@ static int __pyx_f_8slepc4py_5SLEPc_initialize(CYTHON_UNUSED PyObject *__pyx_v_a
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("initialize", 0);
 
-  /* "SLEPc/SLEPc.pyx":172
+  /* "SLEPc/SLEPc.pyx":175
  * 
  * cdef int initialize(object args) except -1:
  *     if (<int>SlepcInitializeCalled): return 1             # <<<<<<<<<<<<<<
@@ -53106,16 +55360,16 @@ static int __pyx_f_8slepc4py_5SLEPc_initialize(CYTHON_UNUSED PyObject *__pyx_v_a
     goto __pyx_L0;
   }
 
-  /* "SLEPc/SLEPc.pyx":174
+  /* "SLEPc/SLEPc.pyx":177
  *     if (<int>SlepcInitializeCalled): return 1
  *     # initialize SLEPC
  *     CHKERR( SlepcInitialize(NULL, NULL, NULL, NULL) )             # <<<<<<<<<<<<<<
  *     # register finalization function
  *     if Py_AtExit(finalize) < 0:
  */
-  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SlepcInitialize(NULL, NULL, NULL, NULL)); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(4, 174, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SlepcInitialize(NULL, NULL, NULL, NULL)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 177, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":176
+  /* "SLEPc/SLEPc.pyx":179
  *     CHKERR( SlepcInitialize(NULL, NULL, NULL, NULL) )
  *     # register finalization function
  *     if Py_AtExit(finalize) < 0:             # <<<<<<<<<<<<<<
@@ -53125,7 +55379,7 @@ static int __pyx_f_8slepc4py_5SLEPc_initialize(CYTHON_UNUSED PyObject *__pyx_v_a
   __pyx_t_1 = ((Py_AtExit(__pyx_f_8slepc4py_5SLEPc_finalize) < 0) != 0);
   if (__pyx_t_1) {
 
-    /* "SLEPc/SLEPc.pyx":177
+    /* "SLEPc/SLEPc.pyx":180
  *     # register finalization function
  *     if Py_AtExit(finalize) < 0:
  *         PySys_WriteStderr(b"warning: could not register %s with Py_AtExit()",             # <<<<<<<<<<<<<<
@@ -53134,7 +55388,7 @@ static int __pyx_f_8slepc4py_5SLEPc_initialize(CYTHON_UNUSED PyObject *__pyx_v_a
  */
     PySys_WriteStderr(((char *)"warning: could not register %s with Py_AtExit()"), ((char *)"SlepcFinalize()"));
 
-    /* "SLEPc/SLEPc.pyx":176
+    /* "SLEPc/SLEPc.pyx":179
  *     CHKERR( SlepcInitialize(NULL, NULL, NULL, NULL) )
  *     # register finalization function
  *     if Py_AtExit(finalize) < 0:             # <<<<<<<<<<<<<<
@@ -53143,7 +55397,7 @@ static int __pyx_f_8slepc4py_5SLEPc_initialize(CYTHON_UNUSED PyObject *__pyx_v_a
  */
   }
 
-  /* "SLEPc/SLEPc.pyx":179
+  /* "SLEPc/SLEPc.pyx":182
  *         PySys_WriteStderr(b"warning: could not register %s with Py_AtExit()",
  *                           b"SlepcFinalize()")
  *     return 1 # and we are done, enjoy !!             # <<<<<<<<<<<<<<
@@ -53153,7 +55407,7 @@ static int __pyx_f_8slepc4py_5SLEPc_initialize(CYTHON_UNUSED PyObject *__pyx_v_a
   __pyx_r = 1;
   goto __pyx_L0;
 
-  /* "SLEPc/SLEPc.pyx":171
+  /* "SLEPc/SLEPc.pyx":174
  *     int fprintf(FILE *, char *, ...)
  * 
  * cdef int initialize(object args) except -1:             # <<<<<<<<<<<<<<
@@ -53170,7 +55424,7 @@ static int __pyx_f_8slepc4py_5SLEPc_initialize(CYTHON_UNUSED PyObject *__pyx_v_a
   return __pyx_r;
 }
 
-/* "SLEPc/SLEPc.pyx":197
+/* "SLEPc/SLEPc.pyx":200
  *     PetscClassId SLEPC_MFN_CLASSID "MFN_CLASSID"
  * 
  * cdef int register(char path[]) except -1:             # <<<<<<<<<<<<<<
@@ -53184,106 +55438,106 @@ static int __pyx_f_8slepc4py_5SLEPc_register(CYTHON_UNUSED char *__pyx_v_path) {
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("register", 0);
 
-  /* "SLEPc/SLEPc.pyx":199
+  /* "SLEPc/SLEPc.pyx":202
  * cdef int register(char path[]) except -1:
  *     # make sure all SLEPc packages are initialized
  *     CHKERR( SlepcInitializePackageAll() )             # <<<<<<<<<<<<<<
  *     # register Python types
  *     PyPetscType_Register(SLEPC_ST_CLASSID,  ST)
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SlepcInitializePackageAll()); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(4, 199, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_CHKERR(SlepcInitializePackageAll()); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 202, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":201
+  /* "SLEPc/SLEPc.pyx":204
  *     CHKERR( SlepcInitializePackageAll() )
  *     # register Python types
  *     PyPetscType_Register(SLEPC_ST_CLASSID,  ST)             # <<<<<<<<<<<<<<
  *     PyPetscType_Register(SLEPC_BV_CLASSID,  BV)
  *     PyPetscType_Register(SLEPC_DS_CLASSID,  DS)
  */
-  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(ST_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_ST); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(4, 201, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(ST_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_ST); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 204, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":202
+  /* "SLEPc/SLEPc.pyx":205
  *     # register Python types
  *     PyPetscType_Register(SLEPC_ST_CLASSID,  ST)
  *     PyPetscType_Register(SLEPC_BV_CLASSID,  BV)             # <<<<<<<<<<<<<<
  *     PyPetscType_Register(SLEPC_DS_CLASSID,  DS)
  *     PyPetscType_Register(SLEPC_FN_CLASSID,  FN)
  */
-  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(BV_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_BV); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(4, 202, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(BV_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_BV); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 205, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":203
+  /* "SLEPc/SLEPc.pyx":206
  *     PyPetscType_Register(SLEPC_ST_CLASSID,  ST)
  *     PyPetscType_Register(SLEPC_BV_CLASSID,  BV)
  *     PyPetscType_Register(SLEPC_DS_CLASSID,  DS)             # <<<<<<<<<<<<<<
  *     PyPetscType_Register(SLEPC_FN_CLASSID,  FN)
  *     PyPetscType_Register(SLEPC_RG_CLASSID,  RG)
  */
-  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(DS_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_DS); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(4, 203, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(DS_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_DS); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 206, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":204
+  /* "SLEPc/SLEPc.pyx":207
  *     PyPetscType_Register(SLEPC_BV_CLASSID,  BV)
  *     PyPetscType_Register(SLEPC_DS_CLASSID,  DS)
  *     PyPetscType_Register(SLEPC_FN_CLASSID,  FN)             # <<<<<<<<<<<<<<
  *     PyPetscType_Register(SLEPC_RG_CLASSID,  RG)
  *     PyPetscType_Register(SLEPC_EPS_CLASSID, EPS)
  */
-  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(FN_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_FN); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(4, 204, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(FN_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_FN); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 207, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":205
+  /* "SLEPc/SLEPc.pyx":208
  *     PyPetscType_Register(SLEPC_DS_CLASSID,  DS)
  *     PyPetscType_Register(SLEPC_FN_CLASSID,  FN)
  *     PyPetscType_Register(SLEPC_RG_CLASSID,  RG)             # <<<<<<<<<<<<<<
  *     PyPetscType_Register(SLEPC_EPS_CLASSID, EPS)
  *     PyPetscType_Register(SLEPC_SVD_CLASSID, SVD)
  */
-  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(RG_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_RG); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(4, 205, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(RG_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_RG); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 208, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":206
+  /* "SLEPc/SLEPc.pyx":209
  *     PyPetscType_Register(SLEPC_FN_CLASSID,  FN)
  *     PyPetscType_Register(SLEPC_RG_CLASSID,  RG)
  *     PyPetscType_Register(SLEPC_EPS_CLASSID, EPS)             # <<<<<<<<<<<<<<
  *     PyPetscType_Register(SLEPC_SVD_CLASSID, SVD)
  *     PyPetscType_Register(SLEPC_PEP_CLASSID, PEP)
  */
-  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(EPS_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_EPS); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(4, 206, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(EPS_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_EPS); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 209, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":207
+  /* "SLEPc/SLEPc.pyx":210
  *     PyPetscType_Register(SLEPC_RG_CLASSID,  RG)
  *     PyPetscType_Register(SLEPC_EPS_CLASSID, EPS)
  *     PyPetscType_Register(SLEPC_SVD_CLASSID, SVD)             # <<<<<<<<<<<<<<
  *     PyPetscType_Register(SLEPC_PEP_CLASSID, PEP)
  *     PyPetscType_Register(SLEPC_NEP_CLASSID, NEP)
  */
-  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(SVD_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_SVD); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(4, 207, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(SVD_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_SVD); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 210, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":208
+  /* "SLEPc/SLEPc.pyx":211
  *     PyPetscType_Register(SLEPC_EPS_CLASSID, EPS)
  *     PyPetscType_Register(SLEPC_SVD_CLASSID, SVD)
  *     PyPetscType_Register(SLEPC_PEP_CLASSID, PEP)             # <<<<<<<<<<<<<<
  *     PyPetscType_Register(SLEPC_NEP_CLASSID, NEP)
  *     PyPetscType_Register(SLEPC_MFN_CLASSID, MFN)
  */
-  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(PEP_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_PEP); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(4, 208, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(PEP_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_PEP); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 211, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":209
+  /* "SLEPc/SLEPc.pyx":212
  *     PyPetscType_Register(SLEPC_SVD_CLASSID, SVD)
  *     PyPetscType_Register(SLEPC_PEP_CLASSID, PEP)
  *     PyPetscType_Register(SLEPC_NEP_CLASSID, NEP)             # <<<<<<<<<<<<<<
  *     PyPetscType_Register(SLEPC_MFN_CLASSID, MFN)
  *     return 0
  */
-  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(NEP_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_NEP); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(4, 209, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(NEP_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_NEP); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 212, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":210
+  /* "SLEPc/SLEPc.pyx":213
  *     PyPetscType_Register(SLEPC_PEP_CLASSID, PEP)
  *     PyPetscType_Register(SLEPC_NEP_CLASSID, NEP)
  *     PyPetscType_Register(SLEPC_MFN_CLASSID, MFN)             # <<<<<<<<<<<<<<
  *     return 0
  * 
  */
-  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(MFN_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_MFN); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(4, 210, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8petsc4py_5PETSc_PyPetscType_Register(MFN_CLASSID, __pyx_ptype_8slepc4py_5SLEPc_MFN); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 213, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":211
+  /* "SLEPc/SLEPc.pyx":214
  *     PyPetscType_Register(SLEPC_NEP_CLASSID, NEP)
  *     PyPetscType_Register(SLEPC_MFN_CLASSID, MFN)
  *     return 0             # <<<<<<<<<<<<<<
@@ -53293,7 +55547,7 @@ static int __pyx_f_8slepc4py_5SLEPc_register(CYTHON_UNUSED char *__pyx_v_path) {
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "SLEPc/SLEPc.pyx":197
+  /* "SLEPc/SLEPc.pyx":200
  *     PetscClassId SLEPC_MFN_CLASSID "MFN_CLASSID"
  * 
  * cdef int register(char path[]) except -1:             # <<<<<<<<<<<<<<
@@ -53310,7 +55564,7 @@ static int __pyx_f_8slepc4py_5SLEPc_register(CYTHON_UNUSED char *__pyx_v_path) {
   return __pyx_r;
 }
 
-/* "SLEPc/SLEPc.pyx":213
+/* "SLEPc/SLEPc.pyx":216
  *     return 0
  * 
  * cdef void finalize() nogil:             # <<<<<<<<<<<<<<
@@ -53322,7 +55576,7 @@ static void __pyx_f_8slepc4py_5SLEPc_finalize(void) {
   int __pyx_v_ierr;
   int __pyx_t_1;
 
-  /* "SLEPc/SLEPc.pyx":215
+  /* "SLEPc/SLEPc.pyx":218
  * cdef void finalize() nogil:
  *     # finalize SLEPc
  *     cdef int ierr = 0             # <<<<<<<<<<<<<<
@@ -53331,7 +55585,7 @@ static void __pyx_f_8slepc4py_5SLEPc_finalize(void) {
  */
   __pyx_v_ierr = 0;
 
-  /* "SLEPc/SLEPc.pyx":216
+  /* "SLEPc/SLEPc.pyx":219
  *     # finalize SLEPc
  *     cdef int ierr = 0
  *     ierr = SlepcFinalize()             # <<<<<<<<<<<<<<
@@ -53340,7 +55594,7 @@ static void __pyx_f_8slepc4py_5SLEPc_finalize(void) {
  */
   __pyx_v_ierr = SlepcFinalize();
 
-  /* "SLEPc/SLEPc.pyx":217
+  /* "SLEPc/SLEPc.pyx":220
  *     cdef int ierr = 0
  *     ierr = SlepcFinalize()
  *     if ierr != 0:             # <<<<<<<<<<<<<<
@@ -53350,7 +55604,7 @@ static void __pyx_f_8slepc4py_5SLEPc_finalize(void) {
   __pyx_t_1 = ((__pyx_v_ierr != 0) != 0);
   if (__pyx_t_1) {
 
-    /* "SLEPc/SLEPc.pyx":218
+    /* "SLEPc/SLEPc.pyx":221
  *     ierr = SlepcFinalize()
  *     if ierr != 0:
  *         fprintf(stderr, "SlepcFinalize() failed "             # <<<<<<<<<<<<<<
@@ -53359,7 +55613,7 @@ static void __pyx_f_8slepc4py_5SLEPc_finalize(void) {
  */
     fprintf(stderr, ((char *)"SlepcFinalize() failed [error code: %d]\n"), __pyx_v_ierr);
 
-    /* "SLEPc/SLEPc.pyx":217
+    /* "SLEPc/SLEPc.pyx":220
  *     cdef int ierr = 0
  *     ierr = SlepcFinalize()
  *     if ierr != 0:             # <<<<<<<<<<<<<<
@@ -53368,7 +55622,7 @@ static void __pyx_f_8slepc4py_5SLEPc_finalize(void) {
  */
   }
 
-  /* "SLEPc/SLEPc.pyx":213
+  /* "SLEPc/SLEPc.pyx":216
  *     return 0
  * 
  * cdef void finalize() nogil:             # <<<<<<<<<<<<<<
@@ -53379,7 +55633,7 @@ static void __pyx_f_8slepc4py_5SLEPc_finalize(void) {
   /* function exit code */
 }
 
-/* "SLEPc/SLEPc.pyx":224
+/* "SLEPc/SLEPc.pyx":227
  * # -----------------------------------------------------------------------------
  * 
  * def _initialize(args=None):             # <<<<<<<<<<<<<<
@@ -53405,6 +55659,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_1_initialize(PyObject *__pyx_self, Py
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -53417,11 +55672,12 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_1_initialize(PyObject *__pyx_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_initialize") < 0)) __PYX_ERR(4, 224, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_initialize") < 0)) __PYX_ERR(4, 227, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
         case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
@@ -53430,7 +55686,7 @@ static PyObject *__pyx_pw_8slepc4py_5SLEPc_1_initialize(PyObject *__pyx_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("_initialize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 224, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("_initialize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 227, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("slepc4py.SLEPc._initialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -53451,17 +55707,17 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc__initialize(CYTHON_UNUSED PyObject *_
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_initialize", 0);
 
-  /* "SLEPc/SLEPc.pyx":225
+  /* "SLEPc/SLEPc.pyx":228
  * 
  * def _initialize(args=None):
  *     cdef int ready = initialize(args)             # <<<<<<<<<<<<<<
  *     if ready: register(NULL)
  * 
  */
-  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_initialize(__pyx_v_args); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(4, 225, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_initialize(__pyx_v_args); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 228, __pyx_L1_error)
   __pyx_v_ready = __pyx_t_1;
 
-  /* "SLEPc/SLEPc.pyx":226
+  /* "SLEPc/SLEPc.pyx":229
  * def _initialize(args=None):
  *     cdef int ready = initialize(args)
  *     if ready: register(NULL)             # <<<<<<<<<<<<<<
@@ -53470,10 +55726,10 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc__initialize(CYTHON_UNUSED PyObject *_
  */
   __pyx_t_2 = (__pyx_v_ready != 0);
   if (__pyx_t_2) {
-    __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_register(NULL); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(4, 226, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_8slepc4py_5SLEPc_register(NULL); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 229, __pyx_L1_error)
   }
 
-  /* "SLEPc/SLEPc.pyx":224
+  /* "SLEPc/SLEPc.pyx":227
  * # -----------------------------------------------------------------------------
  * 
  * def _initialize(args=None):             # <<<<<<<<<<<<<<
@@ -53493,7 +55749,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc__initialize(CYTHON_UNUSED PyObject *_
   return __pyx_r;
 }
 
-/* "SLEPc/SLEPc.pyx":228
+/* "SLEPc/SLEPc.pyx":231
  *     if ready: register(NULL)
  * 
  * def _finalize():             # <<<<<<<<<<<<<<
@@ -53524,7 +55780,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2_finalize(CYTHON_UNUSED PyObject *__
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_finalize", 0);
 
-  /* "SLEPc/SLEPc.pyx":229
+  /* "SLEPc/SLEPc.pyx":232
  * 
  * def _finalize():
  *     finalize()             # <<<<<<<<<<<<<<
@@ -53533,7 +55789,7 @@ static PyObject *__pyx_pf_8slepc4py_5SLEPc_2_finalize(CYTHON_UNUSED PyObject *__
  */
   __pyx_f_8slepc4py_5SLEPc_finalize();
 
-  /* "SLEPc/SLEPc.pyx":228
+  /* "SLEPc/SLEPc.pyx":231
  *     if ready: register(NULL)
  * 
  * def _finalize():             # <<<<<<<<<<<<<<
@@ -53555,15 +55811,16 @@ static PyObject *__pyx_tp_new_8slepc4py_5SLEPc_ST(PyTypeObject *t, PyObject *a,
   if (unlikely(!o)) return 0;
   p = ((struct PySlepcSTObject *)o);
   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Object*)__pyx_vtabptr_8slepc4py_5SLEPc_ST;
-  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_2ST_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
-    Py_DECREF(o); o = 0;
-  }
+  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_2ST_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
   return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
 }
 
 static void __pyx_tp_dealloc_8slepc4py_5SLEPc_ST(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+  #if CYTHON_USE_TP_FINALIZE
+  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
@@ -53641,8 +55898,8 @@ static PyMethodDef __pyx_methods_8slepc4py_5SLEPc_ST[] = {
   {"getTransform", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_2ST_27getTransform, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_2ST_26getTransform},
   {"setMatMode", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_2ST_29setMatMode, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_2ST_28setMatMode},
   {"getMatMode", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_2ST_31getMatMode, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_2ST_30getMatMode},
-  {"setOperators", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_2ST_33setOperators, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_2ST_32setOperators},
-  {"getOperators", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_2ST_35getOperators, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_2ST_34getOperators},
+  {"setMatrices", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_2ST_33setMatrices, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_2ST_32setMatrices},
+  {"getMatrices", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_2ST_35getMatrices, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_2ST_34getMatrices},
   {"setMatStructure", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_2ST_37setMatStructure, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_2ST_36setMatStructure},
   {"setKSP", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_2ST_39setKSP, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_2ST_38setKSP},
   {"getKSP", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_2ST_41getKSP, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_2ST_40getKSP},
@@ -53725,15 +55982,16 @@ static PyObject *__pyx_tp_new_8slepc4py_5SLEPc_BV(PyTypeObject *t, PyObject *a,
   if (unlikely(!o)) return 0;
   p = ((struct PySlepcBVObject *)o);
   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Object*)__pyx_vtabptr_8slepc4py_5SLEPc_BV;
-  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_2BV_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
-    Py_DECREF(o); o = 0;
-  }
+  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_2BV_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
   return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
 }
 
 static void __pyx_tp_dealloc_8slepc4py_5SLEPc_BV(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+  #if CYTHON_USE_TP_FINALIZE
+  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
@@ -53859,15 +56117,16 @@ static PyObject *__pyx_tp_new_8slepc4py_5SLEPc_DS(PyTypeObject *t, PyObject *a,
   if (unlikely(!o)) return 0;
   p = ((struct PySlepcDSObject *)o);
   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Object*)__pyx_vtabptr_8slepc4py_5SLEPc_DS;
-  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_2DS_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
-    Py_DECREF(o); o = 0;
-  }
+  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_2DS_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
   return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
 }
 
 static void __pyx_tp_dealloc_8slepc4py_5SLEPc_DS(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+  #if CYTHON_USE_TP_FINALIZE
+  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
@@ -53981,15 +56240,16 @@ static PyObject *__pyx_tp_new_8slepc4py_5SLEPc_FN(PyTypeObject *t, PyObject *a,
   if (unlikely(!o)) return 0;
   p = ((struct PySlepcFNObject *)o);
   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Object*)__pyx_vtabptr_8slepc4py_5SLEPc_FN;
-  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_2FN_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
-    Py_DECREF(o); o = 0;
-  }
+  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_2FN_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
   return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
 }
 
 static void __pyx_tp_dealloc_8slepc4py_5SLEPc_FN(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+  #if CYTHON_USE_TP_FINALIZE
+  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
@@ -54092,15 +56352,16 @@ static PyObject *__pyx_tp_new_8slepc4py_5SLEPc_RG(PyTypeObject *t, PyObject *a,
   if (unlikely(!o)) return 0;
   p = ((struct PySlepcRGObject *)o);
   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Object*)__pyx_vtabptr_8slepc4py_5SLEPc_RG;
-  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_2RG_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
-    Py_DECREF(o); o = 0;
-  }
+  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_2RG_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
   return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
 }
 
 static void __pyx_tp_dealloc_8slepc4py_5SLEPc_RG(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+  #if CYTHON_USE_TP_FINALIZE
+  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
@@ -54204,15 +56465,16 @@ static PyObject *__pyx_tp_new_8slepc4py_5SLEPc_EPS(PyTypeObject *t, PyObject *a,
   if (unlikely(!o)) return 0;
   p = ((struct PySlepcEPSObject *)o);
   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Object*)__pyx_vtabptr_8slepc4py_5SLEPc_EPS;
-  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_3EPS_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
-    Py_DECREF(o); o = 0;
-  }
+  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_3EPS_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
   return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
 }
 
 static void __pyx_tp_dealloc_8slepc4py_5SLEPc_EPS(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+  #if CYTHON_USE_TP_FINALIZE
+  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
@@ -54392,42 +56654,45 @@ static PyMethodDef __pyx_methods_8slepc4py_5SLEPc_EPS[] = {
   {"setOperators", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_91setOperators, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_90setOperators},
   {"setDeflationSpace", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_93setDeflationSpace, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_92setDeflationSpace},
   {"setInitialSpace", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_95setInitialSpace, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_94setInitialSpace},
-  {"cancelMonitor", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_97cancelMonitor, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_96cancelMonitor},
-  {"setUp", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_99setUp, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_98setUp},
-  {"solve", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_101solve, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_100solve},
-  {"getIterationNumber", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_103getIterationNumber, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_102getIterationNumber},
-  {"getConvergedReason", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_105getConvergedReason, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_104getConvergedReason},
-  {"getConverged", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_107getConverged, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_106getConverged},
-  {"getEigenvalue", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_109getEigenvalue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_108getEigenvalue},
-  {"getEigenvector", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_111getEigenvector, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_110getEigenvector},
-  {"getEigenpair", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_113getEigenpair, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_112getEigenpair},
-  {"getInvariantSubspace", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_115getInvariantSubspace, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_114getInvariantSubspace},
-  {"getErrorEstimate", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_117getErrorEstimate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_116getErrorEstimate},
-  {"computeError", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_119computeError, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_118computeError},
-  {"errorView", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_121errorView, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_120errorView},
-  {"setPowerShiftType", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_123setPowerShiftType, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_122setPowerShiftType},
-  {"getPowerShiftType", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_125getPowerShiftType, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_124getPowerShiftType},
-  {"setArnoldiDelayed", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_127setArnoldiDelayed, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_126setArnoldiDelayed},
-  {"getArnoldiDelayed", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_129getArnoldiDelayed, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_128getArnoldiDelayed},
-  {"setLanczosReorthogType", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_131setLanczosReorthogType, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_130setLanczosReorthogType},
-  {"getLanczosReorthogType", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_133getLanczosReorthogType, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_132getLanczosReorthogType},
-  {"setKrylovSchurRestart", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_135setKrylovSchurRestart, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_134setKrylovSchurRestart},
-  {"getKrylovSchurRestart", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_137getKrylovSchurRestart, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_136getKrylovSchurRestart},
-  {"setKrylovSchurLocking", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_139setKrylovSchurLocking, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_138setKrylovSchurLocking},
-  {"getKrylovSchurLocking", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_141getKrylovSchurLocking, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_140getKrylovSchurLocking},
-  {"setKrylovSchurPartitions", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_143setKrylovSchurPartitions, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_142setKrylovSchurPartitions},
-  {"getKrylovSchurPartitions", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_145getKrylovSchurPartitions, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_144getKrylovSchurPartitions},
-  {"setKrylovSchurDetectZeros", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_147setKrylovSchurDetectZeros, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_146setKrylovSchurDetectZeros},
-  {"getKrylovSchurDetectZeros", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_149getKrylovSchurDetectZeros, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_148getKrylovSchurDetectZeros},
-  {"setKrylovSchurDimensions", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_151setKrylovSchurDimensions, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_150setKrylovSchurDimensions},
-  {"getKrylovSchurDimensions", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_153getKrylovSchurDimensions, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_152getKrylovSchurDimensions},
-  {"getKrylovSchurSubcommInfo", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_155getKrylovSchurSubcommInfo, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_154getKrylovSchurSubcommInfo},
-  {"getKrylovSchurSubcommPairs", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_157getKrylovSchurSubcommPairs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_156getKrylovSchurSubcommPairs},
-  {"getKrylovSchurSubcommMats", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_159getKrylovSchurSubcommMats, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_158getKrylovSchurSubcommMats},
-  {"updateKrylovSchurSubcommMats", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_161updateKrylovSchurSubcommMats, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_160updateKrylovSchurSubcommMats},
-  {"setKrylovSchurSubintervals", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_163setKrylovSchurSubintervals, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_162setKrylovSchurSubintervals},
-  {"setRQCGReset", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_165setRQCGReset, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_164setRQCGReset},
-  {"getRQCGReset", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_167getRQCGReset, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_166getRQCGReset},
+  {"setStoppingTest", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_97setStoppingTest, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_96setStoppingTest},
+  {"setMonitor", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_99setMonitor, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_98setMonitor},
+  {"getMonitor", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_101getMonitor, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_100getMonitor},
+  {"cancelMonitor", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_103cancelMonitor, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_102cancelMonitor},
+  {"setUp", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_105setUp, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_104setUp},
+  {"solve", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_107solve, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_106solve},
+  {"getIterationNumber", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_109getIterationNumber, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_108getIterationNumber},
+  {"getConvergedReason", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_111getConvergedReason, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_110getConvergedReason},
+  {"getConverged", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_113getConverged, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_112getConverged},
+  {"getEigenvalue", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_115getEigenvalue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_114getEigenvalue},
+  {"getEigenvector", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_117getEigenvector, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_116getEigenvector},
+  {"getEigenpair", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_119getEigenpair, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_118getEigenpair},
+  {"getInvariantSubspace", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_121getInvariantSubspace, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_120getInvariantSubspace},
+  {"getErrorEstimate", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_123getErrorEstimate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_122getErrorEstimate},
+  {"computeError", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_125computeError, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_124computeError},
+  {"errorView", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_127errorView, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_126errorView},
+  {"setPowerShiftType", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_129setPowerShiftType, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_128setPowerShiftType},
+  {"getPowerShiftType", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_131getPowerShiftType, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_130getPowerShiftType},
+  {"setArnoldiDelayed", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_133setArnoldiDelayed, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_132setArnoldiDelayed},
+  {"getArnoldiDelayed", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_135getArnoldiDelayed, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_134getArnoldiDelayed},
+  {"setLanczosReorthogType", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_137setLanczosReorthogType, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_136setLanczosReorthogType},
+  {"getLanczosReorthogType", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_139getLanczosReorthogType, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_138getLanczosReorthogType},
+  {"setKrylovSchurRestart", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_141setKrylovSchurRestart, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_140setKrylovSchurRestart},
+  {"getKrylovSchurRestart", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_143getKrylovSchurRestart, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_142getKrylovSchurRestart},
+  {"setKrylovSchurLocking", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_145setKrylovSchurLocking, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_144setKrylovSchurLocking},
+  {"getKrylovSchurLocking", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_147getKrylovSchurLocking, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_146getKrylovSchurLocking},
+  {"setKrylovSchurPartitions", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_149setKrylovSchurPartitions, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_148setKrylovSchurPartitions},
+  {"getKrylovSchurPartitions", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_151getKrylovSchurPartitions, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_150getKrylovSchurPartitions},
+  {"setKrylovSchurDetectZeros", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_153setKrylovSchurDetectZeros, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_152setKrylovSchurDetectZeros},
+  {"getKrylovSchurDetectZeros", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_155getKrylovSchurDetectZeros, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_154getKrylovSchurDetectZeros},
+  {"setKrylovSchurDimensions", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_157setKrylovSchurDimensions, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_156setKrylovSchurDimensions},
+  {"getKrylovSchurDimensions", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_159getKrylovSchurDimensions, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_158getKrylovSchurDimensions},
+  {"getKrylovSchurSubcommInfo", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_161getKrylovSchurSubcommInfo, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_160getKrylovSchurSubcommInfo},
+  {"getKrylovSchurSubcommPairs", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_163getKrylovSchurSubcommPairs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_162getKrylovSchurSubcommPairs},
+  {"getKrylovSchurSubcommMats", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_165getKrylovSchurSubcommMats, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_164getKrylovSchurSubcommMats},
+  {"updateKrylovSchurSubcommMats", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_167updateKrylovSchurSubcommMats, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_166updateKrylovSchurSubcommMats},
+  {"setKrylovSchurSubintervals", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_169setKrylovSchurSubintervals, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_168setKrylovSchurSubintervals},
+  {"setRQCGReset", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_171setRQCGReset, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_170setRQCGReset},
+  {"getRQCGReset", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3EPS_173getRQCGReset, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3EPS_172getRQCGReset},
   {0, 0, 0, 0}
 };
 
@@ -54508,15 +56773,16 @@ static PyObject *__pyx_tp_new_8slepc4py_5SLEPc_SVD(PyTypeObject *t, PyObject *a,
   if (unlikely(!o)) return 0;
   p = ((struct PySlepcSVDObject *)o);
   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Object*)__pyx_vtabptr_8slepc4py_5SLEPc_SVD;
-  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_3SVD_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
-    Py_DECREF(o); o = 0;
-  }
+  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_3SVD_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
   return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
 }
 
 static void __pyx_tp_dealloc_8slepc4py_5SLEPc_SVD(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+  #if CYTHON_USE_TP_FINALIZE
+  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
@@ -54629,7 +56895,7 @@ static PyMethodDef __pyx_methods_8slepc4py_5SLEPc_SVD[] = {
   {"setBV", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3SVD_41setBV, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3SVD_40setBV},
   {"getOperator", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3SVD_43getOperator, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3SVD_42getOperator},
   {"setOperator", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3SVD_45setOperator, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3SVD_44setOperator},
-  {"setInitialSpace", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3SVD_47setInitialSpace, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3SVD_46setInitialSpace},
+  {"setInitialSpaces", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3SVD_47setInitialSpaces, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3SVD_46setInitialSpaces},
   {"cancelMonitor", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3SVD_49cancelMonitor, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3SVD_48cancelMonitor},
   {"setUp", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3SVD_51setUp, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3SVD_50setUp},
   {"solve", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3SVD_53solve, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3SVD_52solve},
@@ -54726,15 +56992,16 @@ static PyObject *__pyx_tp_new_8slepc4py_5SLEPc_PEP(PyTypeObject *t, PyObject *a,
   if (unlikely(!o)) return 0;
   p = ((struct PySlepcPEPObject *)o);
   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Object*)__pyx_vtabptr_8slepc4py_5SLEPc_PEP;
-  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_3PEP_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
-    Py_DECREF(o); o = 0;
-  }
+  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_3PEP_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
   return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
 }
 
 static void __pyx_tp_dealloc_8slepc4py_5SLEPc_PEP(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+  #if CYTHON_USE_TP_FINALIZE
+  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
@@ -54771,43 +57038,45 @@ static PyMethodDef __pyx_methods_8slepc4py_5SLEPc_PEP[] = {
   {"setProblemType", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_29setProblemType, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_28setProblemType},
   {"getWhichEigenpairs", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_31getWhichEigenpairs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_30getWhichEigenpairs},
   {"setWhichEigenpairs", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_33setWhichEigenpairs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_32setWhichEigenpairs},
-  {"getTolerances", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_35getTolerances, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_34getTolerances},
-  {"setTolerances", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_37setTolerances, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_36setTolerances},
-  {"getConvergenceTest", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_39getConvergenceTest, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_38getConvergenceTest},
-  {"setConvergenceTest", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_41setConvergenceTest, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_40setConvergenceTest},
-  {"getRefine", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_43getRefine, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_42getRefine},
-  {"setRefine", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_45setRefine, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_44setRefine},
-  {"getTrackAll", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_47getTrackAll, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_46getTrackAll},
-  {"setTrackAll", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_49setTrackAll, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_48setTrackAll},
-  {"getDimensions", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_51getDimensions, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_50getDimensions},
-  {"setDimensions", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_53setDimensions, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_52setDimensions},
-  {"getST", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_55getST, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_54getST},
-  {"setST", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_57setST, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_56setST},
-  {"getScale", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_59getScale, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_58getScale},
-  {"setScale", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_61setScale, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_60setScale},
-  {"getBV", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_63getBV, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_62getBV},
-  {"setBV", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_65setBV, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_64setBV},
-  {"getRG", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_67getRG, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_66getRG},
-  {"setRG", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_69setRG, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_68setRG},
-  {"getOperators", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_71getOperators, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_70getOperators},
-  {"setOperators", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_73setOperators, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_72setOperators},
-  {"setInitialSpace", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_75setInitialSpace, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_74setInitialSpace},
-  {"cancelMonitor", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_77cancelMonitor, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_76cancelMonitor},
-  {"setUp", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_79setUp, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_78setUp},
-  {"solve", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_81solve, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_80solve},
-  {"getIterationNumber", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_83getIterationNumber, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_82getIterationNumber},
-  {"getConvergedReason", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_85getConvergedReason, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_84getConvergedReason},
-  {"getConverged", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_87getConverged, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_86getConverged},
-  {"getEigenpair", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_89getEigenpair, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_88getEigenpair},
-  {"getErrorEstimate", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_91getErrorEstimate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_90getErrorEstimate},
-  {"computeError", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_93computeError, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_92computeError},
-  {"errorView", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_95errorView, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_94errorView},
-  {"setLinearEPS", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_97setLinearEPS, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_96setLinearEPS},
-  {"getLinearEPS", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_99getLinearEPS, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_98getLinearEPS},
-  {"setLinearCompanionForm", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_101setLinearCompanionForm, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_100setLinearCompanionForm},
-  {"getLinearCompanionForm", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_103getLinearCompanionForm, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_102getLinearCompanionForm},
-  {"setLinearExplicitMatrix", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_105setLinearExplicitMatrix, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_104setLinearExplicitMatrix},
-  {"getLinearExplicitMatrix", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_107getLinearExplicitMatrix, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_106getLinearExplicitMatrix},
+  {"getTarget", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_35getTarget, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_34getTarget},
+  {"setTarget", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_37setTarget, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_36setTarget},
+  {"getTolerances", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_39getTolerances, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_38getTolerances},
+  {"setTolerances", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_41setTolerances, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_40setTolerances},
+  {"getConvergenceTest", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_43getConvergenceTest, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_42getConvergenceTest},
+  {"setConvergenceTest", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_45setConvergenceTest, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_44setConvergenceTest},
+  {"getRefine", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_47getRefine, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_46getRefine},
+  {"setRefine", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_49setRefine, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_48setRefine},
+  {"getTrackAll", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_51getTrackAll, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_50getTrackAll},
+  {"setTrackAll", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_53setTrackAll, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_52setTrackAll},
+  {"getDimensions", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_55getDimensions, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_54getDimensions},
+  {"setDimensions", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_57setDimensions, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_56setDimensions},
+  {"getST", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_59getST, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_58getST},
+  {"setST", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_61setST, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_60setST},
+  {"getScale", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_63getScale, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_62getScale},
+  {"setScale", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_65setScale, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_64setScale},
+  {"getBV", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_67getBV, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_66getBV},
+  {"setBV", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_69setBV, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_68setBV},
+  {"getRG", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_71getRG, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_70getRG},
+  {"setRG", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_73setRG, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_72setRG},
+  {"getOperators", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_75getOperators, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_74getOperators},
+  {"setOperators", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_77setOperators, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_76setOperators},
+  {"setInitialSpace", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_79setInitialSpace, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_78setInitialSpace},
+  {"cancelMonitor", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_81cancelMonitor, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_80cancelMonitor},
+  {"setUp", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_83setUp, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_82setUp},
+  {"solve", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_85solve, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_84solve},
+  {"getIterationNumber", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_87getIterationNumber, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_86getIterationNumber},
+  {"getConvergedReason", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_89getConvergedReason, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_88getConvergedReason},
+  {"getConverged", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_91getConverged, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_90getConverged},
+  {"getEigenpair", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_93getEigenpair, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_92getEigenpair},
+  {"getErrorEstimate", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_95getErrorEstimate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_94getErrorEstimate},
+  {"computeError", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_97computeError, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_96computeError},
+  {"errorView", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_99errorView, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_98errorView},
+  {"setLinearEPS", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_101setLinearEPS, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_100setLinearEPS},
+  {"getLinearEPS", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_103getLinearEPS, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_102getLinearEPS},
+  {"setLinearCompanionForm", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_105setLinearCompanionForm, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_104setLinearCompanionForm},
+  {"getLinearCompanionForm", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_107getLinearCompanionForm, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_106getLinearCompanionForm},
+  {"setLinearExplicitMatrix", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_109setLinearExplicitMatrix, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_108setLinearExplicitMatrix},
+  {"getLinearExplicitMatrix", (PyCFunction)__pyx_pw_8slepc4py_5SLEPc_3PEP_111getLinearExplicitMatrix, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8slepc4py_5SLEPc_3PEP_110getLinearExplicitMatrix},
   {0, 0, 0, 0}
 };
 
@@ -54876,15 +57145,16 @@ static PyObject *__pyx_tp_new_8slepc4py_5SLEPc_NEP(PyTypeObject *t, PyObject *a,
   if (unlikely(!o)) return 0;
   p = ((struct PySlepcNEPObject *)o);
   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Object*)__pyx_vtabptr_8slepc4py_5SLEPc_NEP;
-  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_3NEP_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
-    Py_DECREF(o); o = 0;
-  }
+  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_3NEP_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
   return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
 }
 
 static void __pyx_tp_dealloc_8slepc4py_5SLEPc_NEP(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+  #if CYTHON_USE_TP_FINALIZE
+  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
@@ -55011,15 +57281,16 @@ static PyObject *__pyx_tp_new_8slepc4py_5SLEPc_MFN(PyTypeObject *t, PyObject *a,
   if (unlikely(!o)) return 0;
   p = ((struct PySlepcMFNObject *)o);
   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Object*)__pyx_vtabptr_8slepc4py_5SLEPc_MFN;
-  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_3MFN_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
-    Py_DECREF(o); o = 0;
-  }
+  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_3MFN_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
   return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
 }
 
 static void __pyx_tp_dealloc_8slepc4py_5SLEPc_MFN(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
+  #if CYTHON_USE_TP_FINALIZE
+  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
@@ -55134,15 +57405,16 @@ static PyObject *__pyx_tp_new_8slepc4py_5SLEPc__p_mem(PyTypeObject *t, CYTHON_UN
     o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
   }
   if (unlikely(!o)) return 0;
-  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_6_p_mem_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
-    Py_DECREF(o); o = 0;
-  }
+  if (unlikely(__pyx_pw_8slepc4py_5SLEPc_6_p_mem_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
   return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
 }
 
 static void __pyx_tp_dealloc_8slepc4py_5SLEPc__p_mem(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
+  #if CYTHON_USE_TP_FINALIZE
+  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
@@ -55231,8 +57503,8 @@ static PyObject *__pyx_tp_new_8slepc4py_5SLEPc_Sys(PyTypeObject *t, CYTHON_UNUSE
 }
 
 static void __pyx_tp_dealloc_8slepc4py_5SLEPc_Sys(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
+  #if CYTHON_USE_TP_FINALIZE
+  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
     if (PyObject_CallFinalizerFromDealloc(o)) return;
   }
   #endif
@@ -55308,17 +57580,31 @@ static PyMethodDef __pyx_methods[] = {
 };
 
 #if PY_MAJOR_VERSION >= 3
+#if CYTHON_PEP489_MULTI_PHASE_INIT
+static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
+static int __pyx_pymod_exec_SLEPc(PyObject* module); /*proto*/
+static PyModuleDef_Slot __pyx_moduledef_slots[] = {
+  {Py_mod_create, (void*)__pyx_pymod_create},
+  {Py_mod_exec, (void*)__pyx_pymod_exec_SLEPc},
+  {0, NULL}
+};
+#endif
+
 static struct PyModuleDef __pyx_moduledef = {
-  #if PY_VERSION_HEX < 0x03020000
-    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
-  #else
     PyModuleDef_HEAD_INIT,
-  #endif
     "SLEPc",
     0, /* m_doc */
+  #if CYTHON_PEP489_MULTI_PHASE_INIT
+    0, /* m_size */
+  #else
     -1, /* m_size */
+  #endif
     __pyx_methods /* m_methods */,
+  #if CYTHON_PEP489_MULTI_PHASE_INIT
+    __pyx_moduledef_slots, /* m_slots */
+  #else
     NULL, /* m_reload */
+  #endif
     NULL, /* m_traverse */
     NULL, /* m_clear */
     (freefunc)__pyx_module_cleanup /* m_free */
@@ -55435,6 +57721,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_GENERAL, __pyx_k_GENERAL, sizeof(__pyx_k_GENERAL), 0, 0, 1, 1},
   {&__pyx_n_s_GHEP, __pyx_k_GHEP, sizeof(__pyx_k_GHEP), 0, 0, 1, 1},
   {&__pyx_n_s_GHIEP, __pyx_k_GHIEP, sizeof(__pyx_k_GHIEP), 0, 0, 1, 1},
+  {&__pyx_kp_s_GIT_Date, __pyx_k_GIT_Date, sizeof(__pyx_k_GIT_Date), 0, 0, 1, 0},
   {&__pyx_n_s_GNHEP, __pyx_k_GNHEP, sizeof(__pyx_k_GNHEP), 0, 0, 1, 1},
   {&__pyx_n_s_GS, __pyx_k_GS, sizeof(__pyx_k_GS), 0, 0, 1, 1},
   {&__pyx_n_s_GYROSCOPIC, __pyx_k_GYROSCOPIC, sizeof(__pyx_k_GYROSCOPIC), 0, 0, 1, 1},
@@ -55559,6 +57846,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_SHIFT, __pyx_k_SHIFT, sizeof(__pyx_k_SHIFT), 0, 0, 1, 1},
   {&__pyx_n_s_SIMPLE, __pyx_k_SIMPLE, sizeof(__pyx_k_SIMPLE), 0, 0, 1, 1},
   {&__pyx_n_s_SINVERT, __pyx_k_SINVERT, sizeof(__pyx_k_SINVERT), 0, 0, 1, 1},
+  {&__pyx_kp_s_SLEPc_SLEPc_pyx, __pyx_k_SLEPc_SLEPc_pyx, sizeof(__pyx_k_SLEPc_SLEPc_pyx), 0, 0, 1, 0},
   {&__pyx_n_s_SLP, __pyx_k_SLP, sizeof(__pyx_k_SLP), 0, 0, 1, 1},
   {&__pyx_n_s_SMALLEST, __pyx_k_SMALLEST, sizeof(__pyx_k_SMALLEST), 0, 0, 1, 1},
   {&__pyx_n_s_SMALLEST_IMAGINARY, __pyx_k_SMALLEST_IMAGINARY, sizeof(__pyx_k_SMALLEST_IMAGINARY), 0, 0, 1, 1},
@@ -55613,6 +57901,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_Y, __pyx_k_Y, sizeof(__pyx_k_Y), 0, 0, 1, 1},
   {&__pyx_n_s_Z, __pyx_k_Z, sizeof(__pyx_k_Z), 0, 0, 1, 1},
   {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0},
+  {&__pyx_kp_s__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 0, 1, 0},
   {&__pyx_n_s_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 0, 1, 1},
   {&__pyx_n_s_alpha, __pyx_k_alpha, sizeof(__pyx_k_alpha), 0, 0, 1, 1},
   {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1},
@@ -55629,6 +57918,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1},
   {&__pyx_n_s_center, __pyx_k_center, sizeof(__pyx_k_center), 0, 0, 1, 1},
   {&__pyx_n_s_cform, __pyx_k_cform, sizeof(__pyx_k_cform), 0, 0, 1, 1},
+  {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
   {&__pyx_n_s_comm, __pyx_k_comm, sizeof(__pyx_k_comm), 0, 0, 1, 1},
   {&__pyx_n_s_comp, __pyx_k_comp, sizeof(__pyx_k_comp), 0, 0, 1, 1},
   {&__pyx_n_s_conv, __pyx_k_conv, sizeof(__pyx_k_conv), 0, 0, 1, 1},
@@ -55674,7 +57964,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_getWhichSingularTriplets, __pyx_k_getWhichSingularTriplets, sizeof(__pyx_k_getWhichSingularTriplets), 0, 0, 1, 1},
   {&__pyx_n_s_ghostUpdate, __pyx_k_ghostUpdate, sizeof(__pyx_k_ghostUpdate), 0, 0, 1, 1},
   {&__pyx_n_s_globalup, __pyx_k_globalup, sizeof(__pyx_k_globalup), 0, 0, 1, 1},
-  {&__pyx_kp_s_home_dalcinl_Devel_slepc4py_dev, __pyx_k_home_dalcinl_Devel_slepc4py_dev, sizeof(__pyx_k_home_dalcinl_Devel_slepc4py_dev), 0, 0, 1, 0},
   {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
   {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
   {&__pyx_n_s_indef, __pyx_k_indef, sizeof(__pyx_k_indef), 0, 0, 1, 1},
@@ -55707,6 +57996,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_minor, __pyx_k_minor, sizeof(__pyx_k_minor), 0, 0, 1, 1},
   {&__pyx_n_s_mode, __pyx_k_mode, sizeof(__pyx_k_mode), 0, 0, 1, 1},
   {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
+  {&__pyx_n_s_monitor, __pyx_k_monitor, sizeof(__pyx_k_monitor), 0, 0, 1, 1},
   {&__pyx_n_s_mpd, __pyx_k_mpd, sizeof(__pyx_k_mpd), 0, 0, 1, 1},
   {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1},
   {&__pyx_n_s_ncv, __pyx_k_ncv, sizeof(__pyx_k_ncv), 0, 0, 1, 1},
@@ -55719,7 +58009,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1},
   {&__pyx_n_s_operators, __pyx_k_operators, sizeof(__pyx_k_operators), 0, 0, 1, 1},
   {&__pyx_n_s_orth, __pyx_k_orth, sizeof(__pyx_k_orth), 0, 0, 1, 1},
-  {&__pyx_n_s_patch, __pyx_k_patch, sizeof(__pyx_k_patch), 0, 0, 1, 1},
   {&__pyx_n_s_pep_type, __pyx_k_pep_type, sizeof(__pyx_k_pep_type), 0, 0, 1, 1},
   {&__pyx_n_s_petsc4py_PETSc, __pyx_k_petsc4py_PETSc, sizeof(__pyx_k_petsc4py_PETSc), 0, 0, 1, 1},
   {&__pyx_n_s_prefix, __pyx_k_prefix, sizeof(__pyx_k_prefix), 0, 0, 1, 1},
@@ -55763,10 +58052,13 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_sizes, __pyx_k_sizes, sizeof(__pyx_k_sizes), 0, 0, 1, 1},
   {&__pyx_n_s_slepc4py_SLEPc, __pyx_k_slepc4py_SLEPc, sizeof(__pyx_k_slepc4py_SLEPc), 0, 0, 1, 1},
   {&__pyx_n_s_space, __pyx_k_space, sizeof(__pyx_k_space), 0, 0, 1, 1},
+  {&__pyx_n_s_spaceleft, __pyx_k_spaceleft, sizeof(__pyx_k_spaceleft), 0, 0, 1, 1},
+  {&__pyx_n_s_spaceright, __pyx_k_spaceright, sizeof(__pyx_k_spaceright), 0, 0, 1, 1},
   {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1},
   {&__pyx_n_s_st, __pyx_k_st, sizeof(__pyx_k_st), 0, 0, 1, 1},
   {&__pyx_n_s_st_type, __pyx_k_st_type, sizeof(__pyx_k_st_type), 0, 0, 1, 1},
   {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1},
+  {&__pyx_n_s_stopping, __pyx_k_stopping, sizeof(__pyx_k_stopping), 0, 0, 1, 1},
   {&__pyx_n_s_strip, __pyx_k_strip, sizeof(__pyx_k_strip), 0, 0, 1, 1},
   {&__pyx_n_s_structure, __pyx_k_structure, sizeof(__pyx_k_structure), 0, 0, 1, 1},
   {&__pyx_n_s_subint, __pyx_k_subint, sizeof(__pyx_k_subint), 0, 0, 1, 1},
@@ -55793,7 +58085,7 @@ static int __Pyx_InitCachedBuiltins(void) {
   __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(1, 21, __pyx_L1_error)
   __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(2, 83, __pyx_L1_error)
   __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(2, 83, __pyx_L1_error)
-  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(3, 461, __pyx_L1_error)
+  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(3, 300, __pyx_L1_error)
   return 0;
   __pyx_L1_error:;
   return -1;
@@ -55814,59 +58106,576 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_GOTREF(__pyx_tuple_);
   __Pyx_GIVEREF(__pyx_tuple_);
 
-  /* "SLEPc/Sys.pyx":26
- *                 out.append(bytes2str(cdate))
- *             if author:
- *                 author = bytes2str(cauthorinfo).split('\n')             # <<<<<<<<<<<<<<
- *                 author = [s.strip() for s in author if s]
- *                 out.append(author)
+  /* "SLEPc/Sys.pyx":19
+ *                 vstr = bytes2str(cversion)
+ *                 if release != 0:
+ *                     date = vstr.split(",", 1)[-1].strip()             # <<<<<<<<<<<<<<
+ *                 else:
+ *                     date = vstr.split("GIT Date:")[-1].strip()
  */
-  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(9, 26, __pyx_L1_error)
+  __pyx_tuple__3 = PyTuple_Pack(2, __pyx_kp_s__2, __pyx_int_1); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(9, 19, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__3);
   __Pyx_GIVEREF(__pyx_tuple__3);
 
-  /* "SLEPc/Sys.pyx":40
- *         cdef const_char *cdate       = SLEPC_VERSION_DATE
- *         cdef const_char *cauthorinfo = SLEPC_AUTHOR_INFO
- *         author = bytes2str(cauthorinfo).split('\n')             # <<<<<<<<<<<<<<
- *         author = [s.strip() for s in author if s]
- *         return dict(major      = cmajor,
+  /* "SLEPc/Sys.pyx":21
+ *                     date = vstr.split(",", 1)[-1].strip()
+ *                 else:
+ *                     date = vstr.split("GIT Date:")[-1].strip()             # <<<<<<<<<<<<<<
+ *                 out.append(date)
+ *             if author:
  */
-  __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(9, 40, __pyx_L1_error)
+  __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_GIT_Date); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(9, 21, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__4);
   __Pyx_GIVEREF(__pyx_tuple__4);
 
-  /* "SLEPc/BV.pyx":496
+  /* "SLEPc/Sys.pyx":24
+ *                 out.append(date)
+ *             if author:
+ *                 author = bytes2str(SLEPC_AUTHOR_INFO).split('\n')             # <<<<<<<<<<<<<<
+ *                 author = tuple([s.strip() for s in author if s])
+ *                 out.append(author)
+ */
+  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s__5); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(9, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__6);
+  __Pyx_GIVEREF(__pyx_tuple__6);
+
+  /* "SLEPc/Sys.pyx":31
+ *     @classmethod
+ *     def getVersionInfo(cls):
+ *         version, dev, date, author = cls.getVersion(True, True, True)             # <<<<<<<<<<<<<<
+ *         return dict(major      = version[0],
+ *                     minor      = version[1],
+ */
+  __pyx_tuple__7 = PyTuple_Pack(3, Py_True, Py_True, Py_True); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(9, 31, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__7);
+  __Pyx_GIVEREF(__pyx_tuple__7);
+
+  /* "SLEPc/BV.pyx":495
  * 
  *         v = Vec().create(COMM_SELF)
  *         v.setType('seq')             # <<<<<<<<<<<<<<
- *         v.setSizes((DECIDE,k-l))
- *         v.setArray([mval[i] for i in range(0, k - l)])
+ *         v.setSizes((DECIDE, k-l))
+ *         v.setArray([toScalar(mval[i]) for i in range(0, k - l)])
+ */
+  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_seq); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(10, 495, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__8);
+  __Pyx_GIVEREF(__pyx_tuple__8);
+
+  /* "SLEPc/ST.pyx":3
+ * # -----------------------------------------------------------------------------
+ * 
+ * class STType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     ST types
+ */
+  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__9);
+  __Pyx_GIVEREF(__pyx_tuple__9);
+
+  /* "SLEPc/ST.pyx":19
+ *     PRECOND = S_(STPRECOND)
+ * 
+ * class STMatMode(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     ST matrix mode
+ */
+  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__10);
+  __Pyx_GIVEREF(__pyx_tuple__10);
+
+  /* "SLEPc/BV.pyx":3
+ * # -----------------------------------------------------------------------------
+ * 
+ * class BVType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     BV type
+ */
+  __pyx_tuple__11 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__11);
+  __Pyx_GIVEREF(__pyx_tuple__11);
+
+  /* "SLEPc/BV.pyx":12
+ *     CONTIGUOUS = S_(BVCONTIGUOUS)
+ * 
+ * class BVOrthogType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     BV orthogonalization types
+ */
+  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__12);
+  __Pyx_GIVEREF(__pyx_tuple__12);
+
+  /* "SLEPc/BV.pyx":22
+ *     MGS = BV_ORTHOG_MGS
+ * 
+ * class BVOrthogRefineType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     BV orthogonalization refinement types
+ */
+  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(10, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__13);
+  __Pyx_GIVEREF(__pyx_tuple__13);
+
+  /* "SLEPc/BV.pyx":34
+ *     ALWAYS   = BV_ORTHOG_REFINE_ALWAYS
+ * 
+ * class BVOrthogBlockType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     BV block-orthogonalization types
+ */
+  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(10, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__14);
+  __Pyx_GIVEREF(__pyx_tuple__14);
+
+  /* "SLEPc/DS.pyx":3
+ * # -----------------------------------------------------------------------------
+ * 
+ * class DSType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     DS type
+ */
+  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(11, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__15);
+  __Pyx_GIVEREF(__pyx_tuple__15);
+
+  /* "SLEPc/DS.pyx":16
+ *     NEP     = S_(DSNEP)
+ * 
+ * class DSStateType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     DS state types
+ */
+  __pyx_tuple__16 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(11, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__16);
+  __Pyx_GIVEREF(__pyx_tuple__16);
+
+  /* "SLEPc/DS.pyx":30
+ *     TRUNCATED    = DS_STATE_TRUNCATED
+ * 
+ * class DSMatType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     To refer to one of the matrices stored internally in DS
+ */
+  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(11, 30, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__17);
+  __Pyx_GIVEREF(__pyx_tuple__17);
+
+  /* "SLEPc/FN.pyx":3
+ * # -----------------------------------------------------------------------------
+ * 
+ * class FNType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     FN type
+ */
+  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(12, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__18);
+  __Pyx_GIVEREF(__pyx_tuple__18);
+
+  /* "SLEPc/FN.pyx":15
+ *     INVSQRT  = S_(FNINVSQRT)
+ * 
+ * class FNCombineType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     FN type of combination of child functions
+ */
+  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(12, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__19);
+  __Pyx_GIVEREF(__pyx_tuple__19);
+
+  /* "SLEPc/RG.pyx":3
+ * # -----------------------------------------------------------------------------
+ * 
+ * class RGType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     RG type
+ */
+  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(13, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__20);
+  __Pyx_GIVEREF(__pyx_tuple__20);
+
+  /* "SLEPc/EPS.pyx":3
+ * # -----------------------------------------------------------------------------
+ * 
+ * class EPSType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     EPS type
+ */
+  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(14, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__21);
+  __Pyx_GIVEREF(__pyx_tuple__21);
+
+  /* "SLEPc/EPS.pyx":51
+ *     FEAST        = S_(EPSFEAST)
+ * 
+ * class EPSProblemType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     EPS problem type
+ */
+  __pyx_tuple__22 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(14, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__22);
+  __Pyx_GIVEREF(__pyx_tuple__22);
+
+  /* "SLEPc/EPS.pyx":70
+ *     GHIEP  = EPS_GHIEP
+ * 
+ * class EPSExtraction(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     EPS extraction technique
+ */
+  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(14, 70, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__23);
+  __Pyx_GIVEREF(__pyx_tuple__23);
+
+  /* "SLEPc/EPS.pyx":90
+ *     REFINED_HARMONIC  = EPS_REFINED_HARMONIC
+ * 
+ * class EPSBalance(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     EPS type of balancing used for non-Hermitian problems
+ */
+  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(14, 90, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__24);
+  __Pyx_GIVEREF(__pyx_tuple__24);
+
+  /* "SLEPc/EPS.pyx":104
+ *     USER    = EPS_BALANCE_USER
+ * 
+ * class EPSErrorType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     EPS error type to assess accuracy of computed solutions
+ */
+  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(14, 104, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__25);
+  __Pyx_GIVEREF(__pyx_tuple__25);
+
+  /* "SLEPc/EPS.pyx":116
+ *     BACKWARD = EPS_ERROR_BACKWARD
+ * 
+ * class EPSWhich(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     EPS desired piece of spectrum
+ */
+  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(14, 116, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__26);
+  __Pyx_GIVEREF(__pyx_tuple__26);
+
+  /* "SLEPc/EPS.pyx":144
+ *     USER               = EPS_WHICH_USER
+ * 
+ * class EPSConv(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     EPS convergence test
+ */
+  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(14, 144, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__27);
+  __Pyx_GIVEREF(__pyx_tuple__27);
+
+  /* "SLEPc/EPS.pyx":158
+ *     USER = EPS_CONV_USER
+ * 
+ * class EPSConvergedReason(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     EPS convergence reasons
+ */
+  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(14, 158, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__28);
+  __Pyx_GIVEREF(__pyx_tuple__28);
+
+  /* "SLEPc/EPS.pyx":177
+ *     ITERATING              = EPS_CONVERGED_ITERATING
+ * 
+ * class EPSPowerShiftType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     EPS Power shift type.
+ */
+  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(14, 177, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__29);
+  __Pyx_GIVEREF(__pyx_tuple__29);
+
+  /* "SLEPc/EPS.pyx":189
+ *     WILKINSON = EPS_POWER_SHIFT_WILKINSON
+ * 
+ * class EPSLanczosReorthogType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     EPS Lanczos reorthogonalization type
+ */
+  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(14, 189, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__30);
+  __Pyx_GIVEREF(__pyx_tuple__30);
+
+  /* "SLEPc/SVD.pyx":3
+ * # -----------------------------------------------------------------------------
+ * 
+ * class SVDType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     SVD types
+ */
+  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(15, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__31);
+  __Pyx_GIVEREF(__pyx_tuple__31);
+
+  /* "SLEPc/SVD.pyx":19
+ *     TRLANCZOS = S_(SVDTRLANCZOS)
+ * 
+ * class SVDErrorType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     SVD error type to assess accuracy of computed solutions
+ */
+  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(15, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__32);
+  __Pyx_GIVEREF(__pyx_tuple__32);
+
+  /* "SLEPc/SVD.pyx":29
+ *     RELATIVE = SVD_ERROR_RELATIVE
+ * 
+ * class SVDWhich(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     SVD desired piece of spectrum
+ */
+  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(15, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__33);
+  __Pyx_GIVEREF(__pyx_tuple__33);
+
+  /* "SLEPc/SVD.pyx":39
+ *     SMALLEST = SVD_SMALLEST
+ * 
+ * class SVDConvergedReason(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     SVD convergence reasons
  */
-  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_n_s_seq); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(3, 496, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__5);
-  __Pyx_GIVEREF(__pyx_tuple__5);
+  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(15, 39, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__34);
+  __Pyx_GIVEREF(__pyx_tuple__34);
 
-  /* "SLEPc/SLEPc.pyx":224
+  /* "SLEPc/PEP.pyx":3
+ * # -----------------------------------------------------------------------------
+ * 
+ * class PEPType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     PEP type
+ */
+  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(16, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__35);
+  __Pyx_GIVEREF(__pyx_tuple__35);
+
+  /* "SLEPc/PEP.pyx":21
+ *     JD       = S_(PEPJD)
+ * 
+ * class PEPProblemType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     PEP problem type
+ */
+  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(16, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__36);
+  __Pyx_GIVEREF(__pyx_tuple__36);
+
+  /* "SLEPc/PEP.pyx":33
+ *     GYROSCOPIC = PEP_GYROSCOPIC
+ * 
+ * class PEPWhich(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     PEP desired part of spectrum
+ */
+  __pyx_tuple__37 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(16, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__37);
+  __Pyx_GIVEREF(__pyx_tuple__37);
+
+  /* "SLEPc/PEP.pyx":59
+ *     USER               = PEP_WHICH_USER
+ * 
+ * class PEPBasis(object):             # <<<<<<<<<<<<<<
+ *     MONOMIAL   = PEP_BASIS_MONOMIAL
+ *     CHEBYSHEV1 = PEP_BASIS_CHEBYSHEV1
+ */
+  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(16, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__38);
+  __Pyx_GIVEREF(__pyx_tuple__38);
+
+  /* "SLEPc/PEP.pyx":67
+ *     HERMITE    = PEP_BASIS_HERMITE
+ * 
+ * class PEPScale(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     PEP scaling strategy
+ */
+  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(16, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__39);
+  __Pyx_GIVEREF(__pyx_tuple__39);
+
+  /* "SLEPc/PEP.pyx":81
+ *     BOTH     = PEP_SCALE_BOTH
+ * 
+ * class PEPRefine(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     PEP refinement strategy
+ */
+  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(16, 81, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__40);
+  __Pyx_GIVEREF(__pyx_tuple__40);
+
+  /* "SLEPc/PEP.pyx":93
+ *     MULTIPLE = PEP_REFINE_MULTIPLE
+ * 
+ * class PEPRefineScheme(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     Scheme for solving linear systems during iterative refinement
+ */
+  __pyx_tuple__41 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(16, 93, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__41);
+  __Pyx_GIVEREF(__pyx_tuple__41);
+
+  /* "SLEPc/PEP.pyx":105
+ *     EXPLICIT = PEP_REFINE_SCHEME_EXPLICIT
+ * 
+ * class PEPExtract(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     Extraction strategy used to obtain eigenvectors of the PEP from the
+ */
+  __pyx_tuple__42 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(16, 105, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__42);
+  __Pyx_GIVEREF(__pyx_tuple__42);
+
+  /* "SLEPc/PEP.pyx":120
+ *     STRUCTURED = PEP_EXTRACT_STRUCTURED
+ * 
+ * class PEPErrorType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     PEP error type to assess accuracy of computed solutions
+ */
+  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(16, 120, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__43);
+  __Pyx_GIVEREF(__pyx_tuple__43);
+
+  /* "SLEPc/PEP.pyx":132
+ *     BACKWARD = PEP_ERROR_BACKWARD
+ * 
+ * class PEPConv(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     PEP convergence test
+ */
+  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(16, 132, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__44);
+  __Pyx_GIVEREF(__pyx_tuple__44);
+
+  /* "SLEPc/PEP.pyx":146
+ *     USER = PEP_CONV_USER
+ * 
+ * class PEPConvergedReason(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     PEP convergence reasons
+ */
+  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(16, 146, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__45);
+  __Pyx_GIVEREF(__pyx_tuple__45);
+
+  /* "SLEPc/NEP.pyx":3
+ * # -----------------------------------------------------------------------------
+ * 
+ * class NEPType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     NEP type
+ */
+  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(17, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__46);
+  __Pyx_GIVEREF(__pyx_tuple__46);
+
+  /* "SLEPc/NEP.pyx":23
+ *     NLEIGS   = S_(NEPNLEIGS)
+ * 
+ * class NEPErrorType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     NEP error type to assess accuracy of computed solutions
+ */
+  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(17, 23, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__47);
+  __Pyx_GIVEREF(__pyx_tuple__47);
+
+  /* "SLEPc/NEP.pyx":35
+ *     BACKWARD = NEP_ERROR_BACKWARD
+ * 
+ * class NEPWhich(object):             # <<<<<<<<<<<<<<
+ *     LARGEST_MAGNITUDE  = NEP_LARGEST_MAGNITUDE
+ *     SMALLEST_MAGNITUDE = NEP_SMALLEST_MAGNITUDE
+ */
+  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(17, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__48);
+  __Pyx_GIVEREF(__pyx_tuple__48);
+
+  /* "SLEPc/NEP.pyx":48
+ *     USER               = NEP_WHICH_USER
+ * 
+ * class NEPConvergedReason(object):             # <<<<<<<<<<<<<<
+ *     CONVERGED_TOL          = NEP_CONVERGED_TOL
+ *     CONVERGED_USER         = NEP_CONVERGED_USER
+ */
+  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(17, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__49);
+  __Pyx_GIVEREF(__pyx_tuple__49);
+
+  /* "SLEPc/NEP.pyx":57
+ *     ITERATING              = NEP_CONVERGED_ITERATING
+ * 
+ * class NEPRefine(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     NEP refinement strategy
+ */
+  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(17, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__50);
+  __Pyx_GIVEREF(__pyx_tuple__50);
+
+  /* "SLEPc/NEP.pyx":69
+ *     MULTIPLE = NEP_REFINE_MULTIPLE
+ * 
+ * class NEPRefineScheme(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     Scheme for solving linear systems during iterative refinement
+ */
+  __pyx_tuple__51 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(17, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__51);
+  __Pyx_GIVEREF(__pyx_tuple__51);
+
+  /* "SLEPc/MFN.pyx":3
+ * # -----------------------------------------------------------------------------
+ * 
+ * class MFNType(object):             # <<<<<<<<<<<<<<
+ *     """
+ *     MFN type
+ */
+  __pyx_tuple__52 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(18, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__52);
+  __Pyx_GIVEREF(__pyx_tuple__52);
+
+  /* "SLEPc/MFN.pyx":15
+ *     EXPOKIT  = S_(MFNEXPOKIT)
+ * 
+ * class MFNConvergedReason(object):             # <<<<<<<<<<<<<<
+ *     CONVERGED_TOL       = MFN_CONVERGED_TOL
+ *     CONVERGED_ITS       = MFN_CONVERGED_ITS
+ */
+  __pyx_tuple__53 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(18, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__53);
+  __Pyx_GIVEREF(__pyx_tuple__53);
+
+  /* "SLEPc/SLEPc.pyx":227
  * # -----------------------------------------------------------------------------
  * 
  * def _initialize(args=None):             # <<<<<<<<<<<<<<
  *     cdef int ready = initialize(args)
  *     if ready: register(NULL)
  */
-  __pyx_tuple__6 = PyTuple_Pack(2, __pyx_n_s_args, __pyx_n_s_ready); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(4, 224, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__6);
-  __Pyx_GIVEREF(__pyx_tuple__6);
-  __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__6, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_dalcinl_Devel_slepc4py_dev, __pyx_n_s_initialize, 224, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(4, 224, __pyx_L1_error)
+  __pyx_tuple__54 = PyTuple_Pack(2, __pyx_n_s_args, __pyx_n_s_ready); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(4, 227, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__54);
+  __Pyx_GIVEREF(__pyx_tuple__54);
+  __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_SLEPc_SLEPc_pyx, __pyx_n_s_initialize, 227, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(4, 227, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":228
+  /* "SLEPc/SLEPc.pyx":231
  *     if ready: register(NULL)
  * 
  * def _finalize():             # <<<<<<<<<<<<<<
  *     finalize()
  * 
  */
-  __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_dalcinl_Devel_slepc4py_dev, __pyx_n_s_finalize, 228, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(4, 228, __pyx_L1_error)
+  __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_SLEPc_SLEPc_pyx, __pyx_n_s_finalize, 231, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(4, 231, __pyx_L1_error)
   __Pyx_RefNannyFinishContext();
   return 0;
   __pyx_L1_error:;
@@ -55875,9 +58684,10 @@ static int __Pyx_InitCachedConstants(void) {
 }
 
 static int __Pyx_InitGlobals(void) {
-  if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(19, 1, __pyx_L1_error);
-  __pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) __PYX_ERR(19, 1, __pyx_L1_error)
-  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(20, 1, __pyx_L1_error);
+  __pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) __PYX_ERR(20, 1, __pyx_L1_error)
+  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(20, 1, __pyx_L1_error)
+  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(20, 1, __pyx_L1_error)
   return 0;
   __pyx_L1_error:;
   return -1;
@@ -55889,14 +58699,57 @@ PyMODINIT_FUNC initSLEPc(void)
 #else
 PyMODINIT_FUNC PyInit_SLEPc(void); /*proto*/
 PyMODINIT_FUNC PyInit_SLEPc(void)
+#if CYTHON_PEP489_MULTI_PHASE_INIT
+{
+  return PyModuleDef_Init(&__pyx_moduledef);
+}
+static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+    PyObject *value = PyObject_GetAttrString(spec, from_name);
+    int result = 0;
+    if (likely(value)) {
+        result = PyDict_SetItemString(moddict, to_name, value);
+        Py_DECREF(value);
+    } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
+        PyErr_Clear();
+    } else {
+        result = -1;
+    }
+    return result;
+}
+static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+    PyObject *module = NULL, *moddict, *modname;
+    if (__pyx_m)
+        return __Pyx_NewRef(__pyx_m);
+    modname = PyObject_GetAttrString(spec, "name");
+    if (unlikely(!modname)) goto bad;
+    module = PyModule_NewObject(modname);
+    Py_DECREF(modname);
+    if (unlikely(!module)) goto bad;
+    moddict = PyModule_GetDict(module);
+    if (unlikely(!moddict)) goto bad;
+    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad;
+    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad;
+    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad;
+    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad;
+    return module;
+bad:
+    Py_XDECREF(module);
+    return NULL;
+}
+
+
+static int __pyx_pymod_exec_SLEPc(PyObject *__pyx_pyinit_module)
+#endif
 #endif
 {
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannyDeclarations
+  #if CYTHON_PEP489_MULTI_PHASE_INIT
+  if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+  #endif
   #if CYTHON_REFNANNY
   __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
   if (!__Pyx_RefNanny) {
@@ -55907,24 +58760,27 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
   }
   #endif
   __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_SLEPc(void)", 0);
-  if (__Pyx_check_binary_version() < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(19, 1, __pyx_L1_error)
-  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(19, 1, __pyx_L1_error)
-  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (__Pyx_check_binary_version() < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(20, 1, __pyx_L1_error)
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(20, 1, __pyx_L1_error)
+  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(20, 1, __pyx_L1_error)
   #ifdef __Pyx_CyFunction_USED
-  if (__pyx_CyFunction_init() < 0) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (__pyx_CyFunction_init() < 0) __PYX_ERR(20, 1, __pyx_L1_error)
   #endif
   #ifdef __Pyx_FusedFunction_USED
-  if (__pyx_FusedFunction_init() < 0) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (__pyx_FusedFunction_init() < 0) __PYX_ERR(20, 1, __pyx_L1_error)
   #endif
   #ifdef __Pyx_Coroutine_USED
-  if (__pyx_Coroutine_init() < 0) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (__pyx_Coroutine_init() < 0) __PYX_ERR(20, 1, __pyx_L1_error)
   #endif
   #ifdef __Pyx_Generator_USED
-  if (__pyx_Generator_init() < 0) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (__pyx_Generator_init() < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  #endif
+  #ifdef __Pyx_AsyncGen_USED
+  if (__pyx_AsyncGen_init() < 0) __PYX_ERR(20, 1, __pyx_L1_error)
   #endif
   #ifdef __Pyx_StopAsyncIteration_USED
-  if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(20, 1, __pyx_L1_error)
   #endif
   /*--- Library function declarations ---*/
   /*--- Threads initialization code ---*/
@@ -55934,66 +58790,72 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
   #endif
   #endif
   /*--- Module creation code ---*/
+  #if CYTHON_PEP489_MULTI_PHASE_INIT
+  __pyx_m = __pyx_pyinit_module;
+  Py_INCREF(__pyx_m);
+  #else
   #if PY_MAJOR_VERSION < 3
   __pyx_m = Py_InitModule4("SLEPc", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
   #else
   __pyx_m = PyModule_Create(&__pyx_moduledef);
   #endif
-  if (unlikely(!__pyx_m)) __PYX_ERR(19, 1, __pyx_L1_error)
-  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (unlikely(!__pyx_m)) __PYX_ERR(20, 1, __pyx_L1_error)
+  #endif
+  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(20, 1, __pyx_L1_error)
   Py_INCREF(__pyx_d);
-  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(19, 1, __pyx_L1_error)
+  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(20, 1, __pyx_L1_error)
+  __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(20, 1, __pyx_L1_error)
   #if CYTHON_COMPILING_IN_PYPY
   Py_INCREF(__pyx_b);
   #endif
-  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(19, 1, __pyx_L1_error);
+  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(20, 1, __pyx_L1_error);
   /*--- Initialize various global constants etc. ---*/
-  if (__Pyx_InitGlobals() < 0) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (__Pyx_InitGlobals() < 0) __PYX_ERR(20, 1, __pyx_L1_error)
   #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
-  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(20, 1, __pyx_L1_error)
   #endif
   if (__pyx_module_is_main_slepc4py__SLEPc) {
-    if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(19, 1, __pyx_L1_error)
+    if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(20, 1, __pyx_L1_error)
   }
   #if PY_MAJOR_VERSION >= 3
   {
-    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(19, 1, __pyx_L1_error)
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(20, 1, __pyx_L1_error)
     if (!PyDict_GetItemString(modules, "slepc4py.SLEPc")) {
-      if (unlikely(PyDict_SetItemString(modules, "slepc4py.SLEPc", __pyx_m) < 0)) __PYX_ERR(19, 1, __pyx_L1_error)
+      if (unlikely(PyDict_SetItemString(modules, "slepc4py.SLEPc", __pyx_m) < 0)) __PYX_ERR(20, 1, __pyx_L1_error)
     }
   }
   #endif
   /*--- Builtin init code ---*/
-  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(20, 1, __pyx_L1_error)
   /*--- Constants init code ---*/
-  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(20, 1, __pyx_L1_error)
   /*--- Global init code ---*/
   __pyx_v_8slepc4py_5SLEPc_PetscError = Py_None; Py_INCREF(Py_None);
   /*--- Variable export code ---*/
   /*--- Function export code ---*/
-  if (__Pyx_ExportFunction("PySlepcST_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcST_New, "PyObject *(ST)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcST_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcST_Get, "ST (PyObject *)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcBV_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcBV_New, "PyObject *(BV)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcBV_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcBV_Get, "BV (PyObject *)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcDS_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcDS_New, "PyObject *(DS)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcDS_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcDS_Get, "DS (PyObject *)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcFN_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcFN_New, "PyObject *(FN)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcFN_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcFN_Get, "FN (PyObject *)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcRG_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcRG_New, "PyObject *(RG)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcRG_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcRG_Get, "RG (PyObject *)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcEPS_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcEPS_New, "PyObject *(EPS)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcEPS_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcEPS_Get, "EPS (PyObject *)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcSVD_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcSVD_New, "PyObject *(SVD)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcSVD_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcSVD_Get, "SVD (PyObject *)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcPEP_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcPEP_New, "PyObject *(PEP)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcPEP_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcPEP_Get, "PEP (PyObject *)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcNEP_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcNEP_New, "PyObject *(NEP)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcNEP_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcNEP_Get, "NEP (PyObject *)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcMFN_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcMFN_New, "PyObject *(MFN)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ExportFunction("PySlepcMFN_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcMFN_Get, "MFN (PyObject *)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcST_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcST_New, "PyObject *(ST)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcST_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcST_Get, "ST (PyObject *)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcBV_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcBV_New, "PyObject *(BV)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcBV_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcBV_Get, "BV (PyObject *)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcDS_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcDS_New, "PyObject *(DS)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcDS_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcDS_Get, "DS (PyObject *)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcFN_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcFN_New, "PyObject *(FN)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcFN_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcFN_Get, "FN (PyObject *)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcRG_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcRG_New, "PyObject *(RG)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcRG_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcRG_Get, "RG (PyObject *)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcEPS_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcEPS_New, "PyObject *(EPS)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcEPS_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcEPS_Get, "EPS (PyObject *)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcSVD_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcSVD_New, "PyObject *(SVD)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcSVD_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcSVD_Get, "SVD (PyObject *)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcPEP_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcPEP_New, "PyObject *(PEP)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcPEP_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcPEP_Get, "PEP (PyObject *)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcNEP_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcNEP_New, "PyObject *(NEP)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcNEP_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcNEP_Get, "NEP (PyObject *)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcMFN_New", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcMFN_New, "PyObject *(MFN)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("PySlepcMFN_Get", (void (*)(void))__pyx_f_8slepc4py_5SLEPc_PySlepcMFN_Get, "MFN (PyObject *)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
   /*--- Type init code ---*/
-  __pyx_ptype_8petsc4py_5PETSc_Object = __Pyx_ImportType("petsc4py.PETSc", "Object", sizeof(struct PyPetscObjectObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Object)) __PYX_ERR(19, 1, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_Object = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Object*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Object->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Object)) __PYX_ERR(19, 1, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_Object = __Pyx_ImportType("petsc4py.PETSc", "Object", sizeof(struct PyPetscObjectObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Object)) __PYX_ERR(20, 1, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_Object = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Object*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Object->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Object)) __PYX_ERR(20, 1, __pyx_L1_error)
   __pyx_vtabptr_8slepc4py_5SLEPc_ST = &__pyx_vtable_8slepc4py_5SLEPc_ST;
   __pyx_vtable_8slepc4py_5SLEPc_ST.__pyx_base = *__pyx_vtabptr_8petsc4py_5PETSc_Object;
   PySlepcST_Type.tp_base = __pyx_ptype_8petsc4py_5PETSc_Object;
@@ -56006,82 +58868,82 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
   __pyx_vtabptr_8slepc4py_5SLEPc_BV = &__pyx_vtable_8slepc4py_5SLEPc_BV;
   __pyx_vtable_8slepc4py_5SLEPc_BV.__pyx_base = *__pyx_vtabptr_8petsc4py_5PETSc_Object;
   PySlepcBV_Type.tp_base = __pyx_ptype_8petsc4py_5PETSc_Object;
-  if (PyType_Ready(&PySlepcBV_Type) < 0) __PYX_ERR(3, 46, __pyx_L1_error)
+  if (PyType_Ready(&PySlepcBV_Type) < 0) __PYX_ERR(10, 46, __pyx_L1_error)
   PySlepcBV_Type.tp_print = 0;
-  if (__Pyx_SetVtable(PySlepcBV_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_BV) < 0) __PYX_ERR(3, 46, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "BV", (PyObject *)&PySlepcBV_Type) < 0) __PYX_ERR(3, 46, __pyx_L1_error)
+  if (__Pyx_SetVtable(PySlepcBV_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_BV) < 0) __PYX_ERR(10, 46, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "BV", (PyObject *)&PySlepcBV_Type) < 0) __PYX_ERR(10, 46, __pyx_L1_error)
   if (PySlepcBV_Type.tp_weaklistoffset == 0) PySlepcBV_Type.tp_weaklistoffset = offsetof(struct PySlepcBVObject, __pyx_base.__weakref__);
   __pyx_ptype_8slepc4py_5SLEPc_BV = &PySlepcBV_Type;
   __pyx_vtabptr_8slepc4py_5SLEPc_DS = &__pyx_vtable_8slepc4py_5SLEPc_DS;
   __pyx_vtable_8slepc4py_5SLEPc_DS.__pyx_base = *__pyx_vtabptr_8petsc4py_5PETSc_Object;
   PySlepcDS_Type.tp_base = __pyx_ptype_8petsc4py_5PETSc_Object;
-  if (PyType_Ready(&PySlepcDS_Type) < 0) __PYX_ERR(10, 62, __pyx_L1_error)
+  if (PyType_Ready(&PySlepcDS_Type) < 0) __PYX_ERR(11, 62, __pyx_L1_error)
   PySlepcDS_Type.tp_print = 0;
-  if (__Pyx_SetVtable(PySlepcDS_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_DS) < 0) __PYX_ERR(10, 62, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "DS", (PyObject *)&PySlepcDS_Type) < 0) __PYX_ERR(10, 62, __pyx_L1_error)
+  if (__Pyx_SetVtable(PySlepcDS_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_DS) < 0) __PYX_ERR(11, 62, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "DS", (PyObject *)&PySlepcDS_Type) < 0) __PYX_ERR(11, 62, __pyx_L1_error)
   if (PySlepcDS_Type.tp_weaklistoffset == 0) PySlepcDS_Type.tp_weaklistoffset = offsetof(struct PySlepcDSObject, __pyx_base.__weakref__);
   __pyx_ptype_8slepc4py_5SLEPc_DS = &PySlepcDS_Type;
   __pyx_vtabptr_8slepc4py_5SLEPc_FN = &__pyx_vtable_8slepc4py_5SLEPc_FN;
   __pyx_vtable_8slepc4py_5SLEPc_FN.__pyx_base = *__pyx_vtabptr_8petsc4py_5PETSc_Object;
   PySlepcFN_Type.tp_base = __pyx_ptype_8petsc4py_5PETSc_Object;
-  if (PyType_Ready(&PySlepcFN_Type) < 0) __PYX_ERR(11, 31, __pyx_L1_error)
+  if (PyType_Ready(&PySlepcFN_Type) < 0) __PYX_ERR(12, 31, __pyx_L1_error)
   PySlepcFN_Type.tp_print = 0;
-  if (__Pyx_SetVtable(PySlepcFN_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_FN) < 0) __PYX_ERR(11, 31, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "FN", (PyObject *)&PySlepcFN_Type) < 0) __PYX_ERR(11, 31, __pyx_L1_error)
+  if (__Pyx_SetVtable(PySlepcFN_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_FN) < 0) __PYX_ERR(12, 31, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "FN", (PyObject *)&PySlepcFN_Type) < 0) __PYX_ERR(12, 31, __pyx_L1_error)
   if (PySlepcFN_Type.tp_weaklistoffset == 0) PySlepcFN_Type.tp_weaklistoffset = offsetof(struct PySlepcFNObject, __pyx_base.__weakref__);
   __pyx_ptype_8slepc4py_5SLEPc_FN = &PySlepcFN_Type;
   __pyx_vtabptr_8slepc4py_5SLEPc_RG = &__pyx_vtable_8slepc4py_5SLEPc_RG;
   __pyx_vtable_8slepc4py_5SLEPc_RG.__pyx_base = *__pyx_vtabptr_8petsc4py_5PETSc_Object;
   PySlepcRG_Type.tp_base = __pyx_ptype_8petsc4py_5PETSc_Object;
-  if (PyType_Ready(&PySlepcRG_Type) < 0) __PYX_ERR(12, 14, __pyx_L1_error)
+  if (PyType_Ready(&PySlepcRG_Type) < 0) __PYX_ERR(13, 14, __pyx_L1_error)
   PySlepcRG_Type.tp_print = 0;
-  if (__Pyx_SetVtable(PySlepcRG_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_RG) < 0) __PYX_ERR(12, 14, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "RG", (PyObject *)&PySlepcRG_Type) < 0) __PYX_ERR(12, 14, __pyx_L1_error)
+  if (__Pyx_SetVtable(PySlepcRG_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_RG) < 0) __PYX_ERR(13, 14, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "RG", (PyObject *)&PySlepcRG_Type) < 0) __PYX_ERR(13, 14, __pyx_L1_error)
   if (PySlepcRG_Type.tp_weaklistoffset == 0) PySlepcRG_Type.tp_weaklistoffset = offsetof(struct PySlepcRGObject, __pyx_base.__weakref__);
   __pyx_ptype_8slepc4py_5SLEPc_RG = &PySlepcRG_Type;
   __pyx_vtabptr_8slepc4py_5SLEPc_EPS = &__pyx_vtable_8slepc4py_5SLEPc_EPS;
   __pyx_vtable_8slepc4py_5SLEPc_EPS.__pyx_base = *__pyx_vtabptr_8petsc4py_5PETSc_Object;
   PySlepcEPS_Type.tp_base = __pyx_ptype_8petsc4py_5PETSc_Object;
-  if (PyType_Ready(&PySlepcEPS_Type) < 0) __PYX_ERR(13, 209, __pyx_L1_error)
+  if (PyType_Ready(&PySlepcEPS_Type) < 0) __PYX_ERR(14, 209, __pyx_L1_error)
   PySlepcEPS_Type.tp_print = 0;
-  if (__Pyx_SetVtable(PySlepcEPS_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_EPS) < 0) __PYX_ERR(13, 209, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "EPS", (PyObject *)&PySlepcEPS_Type) < 0) __PYX_ERR(13, 209, __pyx_L1_error)
+  if (__Pyx_SetVtable(PySlepcEPS_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_EPS) < 0) __PYX_ERR(14, 209, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "EPS", (PyObject *)&PySlepcEPS_Type) < 0) __PYX_ERR(14, 209, __pyx_L1_error)
   if (PySlepcEPS_Type.tp_weaklistoffset == 0) PySlepcEPS_Type.tp_weaklistoffset = offsetof(struct PySlepcEPSObject, __pyx_base.__weakref__);
   __pyx_ptype_8slepc4py_5SLEPc_EPS = &PySlepcEPS_Type;
   __pyx_vtabptr_8slepc4py_5SLEPc_SVD = &__pyx_vtable_8slepc4py_5SLEPc_SVD;
   __pyx_vtable_8slepc4py_5SLEPc_SVD.__pyx_base = *__pyx_vtabptr_8petsc4py_5PETSc_Object;
   PySlepcSVD_Type.tp_base = __pyx_ptype_8petsc4py_5PETSc_Object;
-  if (PyType_Ready(&PySlepcSVD_Type) < 0) __PYX_ERR(14, 58, __pyx_L1_error)
+  if (PyType_Ready(&PySlepcSVD_Type) < 0) __PYX_ERR(15, 58, __pyx_L1_error)
   PySlepcSVD_Type.tp_print = 0;
-  if (__Pyx_SetVtable(PySlepcSVD_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_SVD) < 0) __PYX_ERR(14, 58, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "SVD", (PyObject *)&PySlepcSVD_Type) < 0) __PYX_ERR(14, 58, __pyx_L1_error)
+  if (__Pyx_SetVtable(PySlepcSVD_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_SVD) < 0) __PYX_ERR(15, 58, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "SVD", (PyObject *)&PySlepcSVD_Type) < 0) __PYX_ERR(15, 58, __pyx_L1_error)
   if (PySlepcSVD_Type.tp_weaklistoffset == 0) PySlepcSVD_Type.tp_weaklistoffset = offsetof(struct PySlepcSVDObject, __pyx_base.__weakref__);
   __pyx_ptype_8slepc4py_5SLEPc_SVD = &PySlepcSVD_Type;
   __pyx_vtabptr_8slepc4py_5SLEPc_PEP = &__pyx_vtable_8slepc4py_5SLEPc_PEP;
   __pyx_vtable_8slepc4py_5SLEPc_PEP.__pyx_base = *__pyx_vtabptr_8petsc4py_5PETSc_Object;
   PySlepcPEP_Type.tp_base = __pyx_ptype_8petsc4py_5PETSc_Object;
-  if (PyType_Ready(&PySlepcPEP_Type) < 0) __PYX_ERR(15, 167, __pyx_L1_error)
+  if (PyType_Ready(&PySlepcPEP_Type) < 0) __PYX_ERR(16, 167, __pyx_L1_error)
   PySlepcPEP_Type.tp_print = 0;
-  if (__Pyx_SetVtable(PySlepcPEP_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_PEP) < 0) __PYX_ERR(15, 167, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "PEP", (PyObject *)&PySlepcPEP_Type) < 0) __PYX_ERR(15, 167, __pyx_L1_error)
+  if (__Pyx_SetVtable(PySlepcPEP_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_PEP) < 0) __PYX_ERR(16, 167, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "PEP", (PyObject *)&PySlepcPEP_Type) < 0) __PYX_ERR(16, 167, __pyx_L1_error)
   if (PySlepcPEP_Type.tp_weaklistoffset == 0) PySlepcPEP_Type.tp_weaklistoffset = offsetof(struct PySlepcPEPObject, __pyx_base.__weakref__);
   __pyx_ptype_8slepc4py_5SLEPc_PEP = &PySlepcPEP_Type;
   __pyx_vtabptr_8slepc4py_5SLEPc_NEP = &__pyx_vtable_8slepc4py_5SLEPc_NEP;
   __pyx_vtable_8slepc4py_5SLEPc_NEP.__pyx_base = *__pyx_vtabptr_8petsc4py_5PETSc_Object;
   PySlepcNEP_Type.tp_base = __pyx_ptype_8petsc4py_5PETSc_Object;
-  if (PyType_Ready(&PySlepcNEP_Type) < 0) __PYX_ERR(16, 83, __pyx_L1_error)
+  if (PyType_Ready(&PySlepcNEP_Type) < 0) __PYX_ERR(17, 83, __pyx_L1_error)
   PySlepcNEP_Type.tp_print = 0;
-  if (__Pyx_SetVtable(PySlepcNEP_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_NEP) < 0) __PYX_ERR(16, 83, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "NEP", (PyObject *)&PySlepcNEP_Type) < 0) __PYX_ERR(16, 83, __pyx_L1_error)
+  if (__Pyx_SetVtable(PySlepcNEP_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_NEP) < 0) __PYX_ERR(17, 83, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "NEP", (PyObject *)&PySlepcNEP_Type) < 0) __PYX_ERR(17, 83, __pyx_L1_error)
   if (PySlepcNEP_Type.tp_weaklistoffset == 0) PySlepcNEP_Type.tp_weaklistoffset = offsetof(struct PySlepcNEPObject, __pyx_base.__weakref__);
   __pyx_ptype_8slepc4py_5SLEPc_NEP = &PySlepcNEP_Type;
   __pyx_vtabptr_8slepc4py_5SLEPc_MFN = &__pyx_vtable_8slepc4py_5SLEPc_MFN;
   __pyx_vtable_8slepc4py_5SLEPc_MFN.__pyx_base = *__pyx_vtabptr_8petsc4py_5PETSc_Object;
   PySlepcMFN_Type.tp_base = __pyx_ptype_8petsc4py_5PETSc_Object;
-  if (PyType_Ready(&PySlepcMFN_Type) < 0) __PYX_ERR(17, 25, __pyx_L1_error)
+  if (PyType_Ready(&PySlepcMFN_Type) < 0) __PYX_ERR(18, 25, __pyx_L1_error)
   PySlepcMFN_Type.tp_print = 0;
-  if (__Pyx_SetVtable(PySlepcMFN_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_MFN) < 0) __PYX_ERR(17, 25, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "MFN", (PyObject *)&PySlepcMFN_Type) < 0) __PYX_ERR(17, 25, __pyx_L1_error)
+  if (__Pyx_SetVtable(PySlepcMFN_Type.tp_dict, __pyx_vtabptr_8slepc4py_5SLEPc_MFN) < 0) __PYX_ERR(18, 25, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "MFN", (PyObject *)&PySlepcMFN_Type) < 0) __PYX_ERR(18, 25, __pyx_L1_error)
   if (PySlepcMFN_Type.tp_weaklistoffset == 0) PySlepcMFN_Type.tp_weaklistoffset = offsetof(struct PySlepcMFNObject, __pyx_base.__weakref__);
   __pyx_ptype_8slepc4py_5SLEPc_MFN = &PySlepcMFN_Type;
   if (PyType_Ready(&__pyx_type_8slepc4py_5SLEPc__p_mem) < 0) __PYX_ERR(1, 11, __pyx_L1_error)
@@ -56093,53 +58955,53 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
   if (PyObject_SetAttrString(__pyx_m, "Sys", (PyObject *)&__pyx_type_8slepc4py_5SLEPc_Sys) < 0) __PYX_ERR(9, 3, __pyx_L1_error)
   __pyx_ptype_8slepc4py_5SLEPc_Sys = &__pyx_type_8slepc4py_5SLEPc_Sys;
   /*--- Type import code ---*/
-  __pyx_ptype_8petsc4py_5PETSc_Comm = __Pyx_ImportType("petsc4py.PETSc", "Comm", sizeof(struct PyPetscCommObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Comm)) __PYX_ERR(20, 70, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_Viewer = __Pyx_ImportType("petsc4py.PETSc", "Viewer", sizeof(struct PyPetscViewerObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Viewer)) __PYX_ERR(20, 90, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_Viewer = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Viewer*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Viewer->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Viewer)) __PYX_ERR(20, 90, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_Random = __Pyx_ImportType("petsc4py.PETSc", "Random", sizeof(struct PyPetscRandomObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Random)) __PYX_ERR(20, 96, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_Random = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Random*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Random->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Random)) __PYX_ERR(20, 96, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_IS = __Pyx_ImportType("petsc4py.PETSc", "IS", sizeof(struct PyPetscISObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_IS)) __PYX_ERR(20, 102, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_IS = (struct __pyx_vtabstruct_8petsc4py_5PETSc_IS*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_IS->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_IS)) __PYX_ERR(20, 102, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_LGMap = __Pyx_ImportType("petsc4py.PETSc", "LGMap", sizeof(struct PyPetscLGMapObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_LGMap)) __PYX_ERR(20, 108, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_LGMap = (struct __pyx_vtabstruct_8petsc4py_5PETSc_LGMap*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_LGMap->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_LGMap)) __PYX_ERR(20, 108, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_SF = __Pyx_ImportType("petsc4py.PETSc", "SF", sizeof(struct PyPetscSFObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_SF)) __PYX_ERR(20, 114, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_SF = (struct __pyx_vtabstruct_8petsc4py_5PETSc_SF*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_SF->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_SF)) __PYX_ERR(20, 114, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_Vec = __Pyx_ImportType("petsc4py.PETSc", "Vec", sizeof(struct PyPetscVecObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Vec)) __PYX_ERR(20, 120, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_Vec = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Vec*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Vec->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Vec)) __PYX_ERR(20, 120, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_Scatter = __Pyx_ImportType("petsc4py.PETSc", "Scatter", sizeof(struct PyPetscScatterObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Scatter)) __PYX_ERR(20, 126, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_Scatter = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Scatter*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Scatter->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Scatter)) __PYX_ERR(20, 126, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_Section = __Pyx_ImportType("petsc4py.PETSc", "Section", sizeof(struct PyPetscSectionObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Section)) __PYX_ERR(20, 132, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_Section = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Section*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Section->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Section)) __PYX_ERR(20, 132, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_Mat = __Pyx_ImportType("petsc4py.PETSc", "Mat", sizeof(struct PyPetscMatObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Mat)) __PYX_ERR(20, 138, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_Mat = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Mat*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Mat->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Mat)) __PYX_ERR(20, 138, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_NullSpace = __Pyx_ImportType("petsc4py.PETSc", "NullSpace", sizeof(struct PyPetscNullSpaceObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_NullSpace)) __PYX_ERR(20, 144, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_NullSpace = (struct __pyx_vtabstruct_8petsc4py_5PETSc_NullSpace*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_NullSpace->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_NullSpace)) __PYX_ERR(20, 144, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_PC = __Pyx_ImportType("petsc4py.PETSc", "PC", sizeof(struct PyPetscPCObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_PC)) __PYX_ERR(20, 150, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_PC = (struct __pyx_vtabstruct_8petsc4py_5PETSc_PC*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_PC->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_PC)) __PYX_ERR(20, 150, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_KSP = __Pyx_ImportType("petsc4py.PETSc", "KSP", sizeof(struct PyPetscKSPObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_KSP)) __PYX_ERR(20, 156, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_KSP = (struct __pyx_vtabstruct_8petsc4py_5PETSc_KSP*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_KSP->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_KSP)) __PYX_ERR(20, 156, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_SNES = __Pyx_ImportType("petsc4py.PETSc", "SNES", sizeof(struct PyPetscSNESObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_SNES)) __PYX_ERR(20, 162, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_SNES = (struct __pyx_vtabstruct_8petsc4py_5PETSc_SNES*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_SNES->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_SNES)) __PYX_ERR(20, 162, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_TS = __Pyx_ImportType("petsc4py.PETSc", "TS", sizeof(struct PyPetscTSObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_TS)) __PYX_ERR(20, 168, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_TS = (struct __pyx_vtabstruct_8petsc4py_5PETSc_TS*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_TS->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_TS)) __PYX_ERR(20, 168, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_TAO = __Pyx_ImportType("petsc4py.PETSc", "TAO", sizeof(struct PyPetscTAOObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_TAO)) __PYX_ERR(20, 174, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_TAO = (struct __pyx_vtabstruct_8petsc4py_5PETSc_TAO*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_TAO->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_TAO)) __PYX_ERR(20, 174, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_AO = __Pyx_ImportType("petsc4py.PETSc", "AO", sizeof(struct PyPetscAOObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_AO)) __PYX_ERR(20, 180, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_AO = (struct __pyx_vtabstruct_8petsc4py_5PETSc_AO*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_AO->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_AO)) __PYX_ERR(20, 180, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_DM = __Pyx_ImportType("petsc4py.PETSc", "DM", sizeof(struct PyPetscDMObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_DM)) __PYX_ERR(20, 186, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_DM = (struct __pyx_vtabstruct_8petsc4py_5PETSc_DM*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_DM->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_DM)) __PYX_ERR(20, 186, __pyx_L1_error)
-  __pyx_ptype_8petsc4py_5PETSc_Partitioner = __Pyx_ImportType("petsc4py.PETSc", "Partitioner", sizeof(struct PyPetscPartitionerObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Partitioner)) __PYX_ERR(20, 192, __pyx_L1_error)
-  __pyx_vtabptr_8petsc4py_5PETSc_Partitioner = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Partitioner*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Partitioner->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Partitioner)) __PYX_ERR(20, 192, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_Comm = __Pyx_ImportType("petsc4py.PETSc", "Comm", sizeof(struct PyPetscCommObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Comm)) __PYX_ERR(21, 73, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_Viewer = __Pyx_ImportType("petsc4py.PETSc", "Viewer", sizeof(struct PyPetscViewerObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Viewer)) __PYX_ERR(21, 93, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_Viewer = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Viewer*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Viewer->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Viewer)) __PYX_ERR(21, 93, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_Random = __Pyx_ImportType("petsc4py.PETSc", "Random", sizeof(struct PyPetscRandomObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Random)) __PYX_ERR(21, 99, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_Random = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Random*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Random->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Random)) __PYX_ERR(21, 99, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_IS = __Pyx_ImportType("petsc4py.PETSc", "IS", sizeof(struct PyPetscISObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_IS)) __PYX_ERR(21, 105, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_IS = (struct __pyx_vtabstruct_8petsc4py_5PETSc_IS*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_IS->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_IS)) __PYX_ERR(21, 105, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_LGMap = __Pyx_ImportType("petsc4py.PETSc", "LGMap", sizeof(struct PyPetscLGMapObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_LGMap)) __PYX_ERR(21, 111, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_LGMap = (struct __pyx_vtabstruct_8petsc4py_5PETSc_LGMap*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_LGMap->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_LGMap)) __PYX_ERR(21, 111, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_SF = __Pyx_ImportType("petsc4py.PETSc", "SF", sizeof(struct PyPetscSFObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_SF)) __PYX_ERR(21, 117, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_SF = (struct __pyx_vtabstruct_8petsc4py_5PETSc_SF*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_SF->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_SF)) __PYX_ERR(21, 117, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_Vec = __Pyx_ImportType("petsc4py.PETSc", "Vec", sizeof(struct PyPetscVecObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Vec)) __PYX_ERR(21, 123, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_Vec = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Vec*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Vec->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Vec)) __PYX_ERR(21, 123, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_Scatter = __Pyx_ImportType("petsc4py.PETSc", "Scatter", sizeof(struct PyPetscScatterObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Scatter)) __PYX_ERR(21, 129, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_Scatter = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Scatter*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Scatter->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Scatter)) __PYX_ERR(21, 129, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_Section = __Pyx_ImportType("petsc4py.PETSc", "Section", sizeof(struct PyPetscSectionObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Section)) __PYX_ERR(21, 135, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_Section = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Section*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Section->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Section)) __PYX_ERR(21, 135, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_Mat = __Pyx_ImportType("petsc4py.PETSc", "Mat", sizeof(struct PyPetscMatObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Mat)) __PYX_ERR(21, 141, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_Mat = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Mat*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Mat->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Mat)) __PYX_ERR(21, 141, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_NullSpace = __Pyx_ImportType("petsc4py.PETSc", "NullSpace", sizeof(struct PyPetscNullSpaceObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_NullSpace)) __PYX_ERR(21, 147, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_NullSpace = (struct __pyx_vtabstruct_8petsc4py_5PETSc_NullSpace*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_NullSpace->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_NullSpace)) __PYX_ERR(21, 147, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_PC = __Pyx_ImportType("petsc4py.PETSc", "PC", sizeof(struct PyPetscPCObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_PC)) __PYX_ERR(21, 153, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_PC = (struct __pyx_vtabstruct_8petsc4py_5PETSc_PC*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_PC->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_PC)) __PYX_ERR(21, 153, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_KSP = __Pyx_ImportType("petsc4py.PETSc", "KSP", sizeof(struct PyPetscKSPObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_KSP)) __PYX_ERR(21, 159, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_KSP = (struct __pyx_vtabstruct_8petsc4py_5PETSc_KSP*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_KSP->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_KSP)) __PYX_ERR(21, 159, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_SNES = __Pyx_ImportType("petsc4py.PETSc", "SNES", sizeof(struct PyPetscSNESObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_SNES)) __PYX_ERR(21, 165, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_SNES = (struct __pyx_vtabstruct_8petsc4py_5PETSc_SNES*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_SNES->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_SNES)) __PYX_ERR(21, 165, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_TS = __Pyx_ImportType("petsc4py.PETSc", "TS", sizeof(struct PyPetscTSObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_TS)) __PYX_ERR(21, 171, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_TS = (struct __pyx_vtabstruct_8petsc4py_5PETSc_TS*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_TS->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_TS)) __PYX_ERR(21, 171, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_TAO = __Pyx_ImportType("petsc4py.PETSc", "TAO", sizeof(struct PyPetscTAOObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_TAO)) __PYX_ERR(21, 177, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_TAO = (struct __pyx_vtabstruct_8petsc4py_5PETSc_TAO*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_TAO->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_TAO)) __PYX_ERR(21, 177, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_AO = __Pyx_ImportType("petsc4py.PETSc", "AO", sizeof(struct PyPetscAOObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_AO)) __PYX_ERR(21, 183, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_AO = (struct __pyx_vtabstruct_8petsc4py_5PETSc_AO*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_AO->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_AO)) __PYX_ERR(21, 183, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_DM = __Pyx_ImportType("petsc4py.PETSc", "DM", sizeof(struct PyPetscDMObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_DM)) __PYX_ERR(21, 189, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_DM = (struct __pyx_vtabstruct_8petsc4py_5PETSc_DM*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_DM->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_DM)) __PYX_ERR(21, 189, __pyx_L1_error)
+  __pyx_ptype_8petsc4py_5PETSc_Partitioner = __Pyx_ImportType("petsc4py.PETSc", "Partitioner", sizeof(struct PyPetscPartitionerObject), 1); if (unlikely(!__pyx_ptype_8petsc4py_5PETSc_Partitioner)) __PYX_ERR(21, 195, __pyx_L1_error)
+  __pyx_vtabptr_8petsc4py_5PETSc_Partitioner = (struct __pyx_vtabstruct_8petsc4py_5PETSc_Partitioner*)__Pyx_GetVtable(__pyx_ptype_8petsc4py_5PETSc_Partitioner->tp_dict); if (unlikely(!__pyx_vtabptr_8petsc4py_5PETSc_Partitioner)) __PYX_ERR(21, 195, __pyx_L1_error)
   /*--- Variable import code ---*/
   /*--- Function import code ---*/
-  __pyx_t_1 = __Pyx_ImportModule("petsc4py.PETSc"); if (!__pyx_t_1) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ImportFunction(__pyx_t_1, "GetComm", (void (**)(void))&__pyx_f_8petsc4py_5PETSc_GetComm, "MPI_Comm (PyObject *, MPI_Comm)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ImportFunction(__pyx_t_1, "GetCommDefault", (void (**)(void))&__pyx_f_8petsc4py_5PETSc_GetCommDefault, "MPI_Comm (void)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
-  if (__Pyx_ImportFunction(__pyx_t_1, "PyPetscType_Register", (void (**)(void))&__pyx_f_8petsc4py_5PETSc_PyPetscType_Register, "int (int, PyTypeObject *)") < 0) __PYX_ERR(19, 1, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_ImportModule("petsc4py.PETSc"); if (!__pyx_t_1) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ImportFunction(__pyx_t_1, "GetComm", (void (**)(void))&__pyx_f_8petsc4py_5PETSc_GetComm, "MPI_Comm (PyObject *, MPI_Comm)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ImportFunction(__pyx_t_1, "GetCommDefault", (void (**)(void))&__pyx_f_8petsc4py_5PETSc_GetCommDefault, "MPI_Comm (void)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
+  if (__Pyx_ImportFunction(__pyx_t_1, "PyPetscType_Register", (void (**)(void))&__pyx_f_8petsc4py_5PETSc_PyPetscType_Register, "int (int, PyTypeObject *)") < 0) __PYX_ERR(20, 1, __pyx_L1_error)
   Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   /*--- Execution code ---*/
   #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
-  if (__Pyx_patch_abc() < 0) __PYX_ERR(19, 1, __pyx_L1_error)
+  if (__Pyx_patch_abc() < 0) __PYX_ERR(20, 1, __pyx_L1_error)
   #endif
 
   /* "SLEPc/SLEPc.pyx":3
@@ -56154,7 +59016,7 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
   __Pyx_INCREF(__pyx_n_s_COMM_NULL);
   __Pyx_GIVEREF(__pyx_n_s_COMM_NULL);
   PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_COMM_NULL);
-  __pyx_t_3 = __Pyx_Import(__pyx_n_s_petsc4py_PETSc, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 3, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Import(__pyx_n_s_petsc4py_PETSc, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_COMM_NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 3, __pyx_L1_error)
@@ -56175,7 +59037,7 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
   __Pyx_INCREF(__pyx_n_s_COMM_SELF);
   __Pyx_GIVEREF(__pyx_n_s_COMM_SELF);
   PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_COMM_SELF);
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_petsc4py_PETSc, __pyx_t_3, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 4, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_petsc4py_PETSc, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 4, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 4, __pyx_L1_error)
@@ -56196,7 +59058,7 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
   __Pyx_INCREF(__pyx_n_s_COMM_WORLD);
   __Pyx_GIVEREF(__pyx_n_s_COMM_WORLD);
   PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_COMM_WORLD);
-  __pyx_t_3 = __Pyx_Import(__pyx_n_s_petsc4py_PETSc, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 5, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Import(__pyx_n_s_petsc4py_PETSc, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 5, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 5, __pyx_L1_error)
@@ -56231,7 +59093,7 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
   __Pyx_INCREF(__pyx_n_s_Error);
   __Pyx_GIVEREF(__pyx_n_s_Error);
   PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_Error);
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_petsc4py_PETSc, __pyx_t_3, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 63, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_petsc4py_PETSc, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 63, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Error); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 63, __pyx_L1_error)
@@ -56243,57 +59105,57 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "SLEPc/SLEPc.pyx":136
+  /* "SLEPc/SLEPc.pyx":139
  * 
  * __doc__ = \
  * """             # <<<<<<<<<<<<<<
  * Scalable Library for Eigenvalue Problem Computations.
  * """
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_doc, __pyx_kp_s_Scalable_Library_for_Eigenvalue) < 0) __PYX_ERR(4, 135, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_doc, __pyx_kp_s_Scalable_Library_for_Eigenvalue) < 0) __PYX_ERR(4, 138, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":140
+  /* "SLEPc/SLEPc.pyx":143
  * """
  * 
  * DECIDE    = PETSC_DECIDE             # <<<<<<<<<<<<<<
  * DEFAULT   = PETSC_DEFAULT
  * DETERMINE = PETSC_DETERMINE
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(PETSC_DECIDE); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 140, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(PETSC_DECIDE); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 143, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DECIDE, __pyx_t_2) < 0) __PYX_ERR(4, 140, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DECIDE, __pyx_t_2) < 0) __PYX_ERR(4, 143, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "SLEPc/SLEPc.pyx":141
+  /* "SLEPc/SLEPc.pyx":144
  * 
  * DECIDE    = PETSC_DECIDE
  * DEFAULT   = PETSC_DEFAULT             # <<<<<<<<<<<<<<
  * DETERMINE = PETSC_DETERMINE
  * 
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(PETSC_DEFAULT); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 141, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(PETSC_DEFAULT); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 144, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DEFAULT, __pyx_t_2) < 0) __PYX_ERR(4, 141, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DEFAULT, __pyx_t_2) < 0) __PYX_ERR(4, 144, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "SLEPc/SLEPc.pyx":142
+  /* "SLEPc/SLEPc.pyx":145
  * DECIDE    = PETSC_DECIDE
  * DEFAULT   = PETSC_DEFAULT
  * DETERMINE = PETSC_DETERMINE             # <<<<<<<<<<<<<<
  * 
  * include "Sys.pyx"
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(PETSC_DETERMINE); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 142, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(PETSC_DETERMINE); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 145, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DETERMINE, __pyx_t_2) < 0) __PYX_ERR(4, 142, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DETERMINE, __pyx_t_2) < 0) __PYX_ERR(4, 145, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "SLEPc/Sys.pyx":6
  * 
  *     @classmethod
- *     def getVersion(cls, patch=False, devel=False,             # <<<<<<<<<<<<<<
- *                    date=False, author=False):
- *         cdef int cmajor = SLEPC_VERSION_MAJOR
+ *     def getVersion(cls, devel=False, date=False, author=False):             # <<<<<<<<<<<<<<
+ *         cdef char cversion[256]
+ *         cdef PetscInt major=0, minor=0, micro=0, release=0
  */
   __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_Sys, __pyx_n_s_getVersion); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 6, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -56302,8 +59164,8 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * cdef class Sys:
  * 
  *     @classmethod             # <<<<<<<<<<<<<<
- *     def getVersion(cls, patch=False, devel=False,
- *                    date=False, author=False):
+ *     def getVersion(cls, devel=False, date=False, author=False):
+ *         cdef char cversion[256]
  */
   __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 5, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -56312,27 +59174,27 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_Sys);
 
-  /* "SLEPc/Sys.pyx":32
+  /* "SLEPc/Sys.pyx":30
  * 
  *     @classmethod
  *     def getVersionInfo(cls):             # <<<<<<<<<<<<<<
- *         cdef int cmajor = SLEPC_VERSION_MAJOR
- *         cdef int cminor = SLEPC_VERSION_MINOR
+ *         version, dev, date, author = cls.getVersion(True, True, True)
+ *         return dict(major      = version[0],
  */
-  __pyx_t_3 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_Sys, __pyx_n_s_getVersionInfo); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 32, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_Sys, __pyx_n_s_getVersionInfo); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 30, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
 
-  /* "SLEPc/Sys.pyx":31
+  /* "SLEPc/Sys.pyx":29
  *         return tuple(out)
  * 
  *     @classmethod             # <<<<<<<<<<<<<<
  *     def getVersionInfo(cls):
- *         cdef int cmajor = SLEPC_VERSION_MAJOR
+ *         version, dev, date, author = cls.getVersion(True, True, True)
  */
-  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 31, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 29, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_Sys->tp_dict, __pyx_n_s_getVersionInfo, __pyx_t_2) < 0) __PYX_ERR(9, 32, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_Sys->tp_dict, __pyx_n_s_getVersionInfo, __pyx_t_2) < 0) __PYX_ERR(9, 30, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_Sys);
 
@@ -56343,15 +59205,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     ST types
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__9, __pyx_n_s_STType, __pyx_n_s_STType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_ST_types_SHELL_User_defined_SHI); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_STType, __pyx_n_s_STType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_ST_types_SHELL_User_defined_SHI); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/ST.pyx":13
  *     - `PRECOND`: Preconditioner.
@@ -56360,10 +59217,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SHIFT   = S_(STSHIFT)
  *     SINVERT = S_(STSINVERT)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(STSHELL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 13, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SHELL, __pyx_t_5) < 0) __PYX_ERR(0, 13, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(STSHELL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 13, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SHELL, __pyx_t_4) < 0) __PYX_ERR(0, 13, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/ST.pyx":14
  *     """
@@ -56372,10 +59229,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SINVERT = S_(STSINVERT)
  *     CAYLEY  = S_(STCAYLEY)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(STSHIFT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 14, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SHIFT, __pyx_t_5) < 0) __PYX_ERR(0, 14, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(STSHIFT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 14, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SHIFT, __pyx_t_4) < 0) __PYX_ERR(0, 14, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/ST.pyx":15
  *     SHELL   = S_(STSHELL)
@@ -56384,10 +59241,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CAYLEY  = S_(STCAYLEY)
  *     PRECOND = S_(STPRECOND)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(STSINVERT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 15, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SINVERT, __pyx_t_5) < 0) __PYX_ERR(0, 15, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(STSINVERT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SINVERT, __pyx_t_4) < 0) __PYX_ERR(0, 15, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/ST.pyx":16
  *     SHIFT   = S_(STSHIFT)
@@ -56396,10 +59253,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     PRECOND = S_(STPRECOND)
  * 
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(STCAYLEY); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CAYLEY, __pyx_t_5) < 0) __PYX_ERR(0, 16, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(STCAYLEY); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CAYLEY, __pyx_t_4) < 0) __PYX_ERR(0, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/ST.pyx":17
  *     SINVERT = S_(STSINVERT)
@@ -56408,10 +59265,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class STMatMode(object):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(STPRECOND); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 17, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_PRECOND, __pyx_t_5) < 0) __PYX_ERR(0, 17, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(STPRECOND); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_PRECOND, __pyx_t_4) < 0) __PYX_ERR(0, 17, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/ST.pyx":3
  * # -----------------------------------------------------------------------------
@@ -56420,10 +59277,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     ST types
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_STType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_STType, __pyx_t_5) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_STType, __pyx_tuple__9, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_STType, __pyx_t_4) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -56435,15 +59291,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     ST matrix mode
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__10, __pyx_n_s_STMatMode, __pyx_n_s_STMatMode, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_ST_matrix_mode_COPY_A_working_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_STMatMode, __pyx_n_s_STMatMode, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_ST_matrix_mode_COPY_A_working_c); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/ST.pyx":28
  *       implicit matrix.
@@ -56452,10 +59303,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     INPLACE = ST_MATMODE_INPLACE
  *     SHELL   = ST_MATMODE_SHELL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_STMatMode(ST_MATMODE_COPY); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 28, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_COPY, __pyx_t_5) < 0) __PYX_ERR(0, 28, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_STMatMode(ST_MATMODE_COPY); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 28, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_COPY, __pyx_t_4) < 0) __PYX_ERR(0, 28, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/ST.pyx":29
  *     """
@@ -56464,10 +59315,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SHELL   = ST_MATMODE_SHELL
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_STMatMode(ST_MATMODE_INPLACE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 29, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_INPLACE, __pyx_t_5) < 0) __PYX_ERR(0, 29, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_STMatMode(ST_MATMODE_INPLACE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_INPLACE, __pyx_t_4) < 0) __PYX_ERR(0, 29, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/ST.pyx":30
  *     COPY    = ST_MATMODE_COPY
@@ -56476,10 +59327,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_5 = __Pyx_PyInt_From_STMatMode(ST_MATMODE_SHELL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 30, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SHELL, __pyx_t_5) < 0) __PYX_ERR(0, 30, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_STMatMode(ST_MATMODE_SHELL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 30, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SHELL, __pyx_t_4) < 0) __PYX_ERR(0, 30, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/ST.pyx":19
  *     PRECOND = S_(STPRECOND)
@@ -56488,10 +59339,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     ST matrix mode
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_STMatMode, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_STMatMode, __pyx_t_5) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_STMatMode, __pyx_tuple__10, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_STMatMode, __pyx_t_4) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -56522,23 +59372,23 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_ST);
 
-  /* "SLEPc/ST.pyx":469
+  /* "SLEPc/ST.pyx":468
  * # -----------------------------------------------------------------------------
  * 
  * del STType             # <<<<<<<<<<<<<<
  * del STMatMode
  * 
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_STType) < 0) __PYX_ERR(0, 469, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_STType) < 0) __PYX_ERR(0, 468, __pyx_L1_error)
 
-  /* "SLEPc/ST.pyx":470
+  /* "SLEPc/ST.pyx":469
  * 
  * del STType
  * del STMatMode             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_STMatMode) < 0) __PYX_ERR(0, 470, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_STMatMode) < 0) __PYX_ERR(0, 469, __pyx_L1_error)
 
   /* "SLEPc/BV.pyx":3
  * # -----------------------------------------------------------------------------
@@ -56547,15 +59397,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     BV type
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__11); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 3, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__11, __pyx_n_s_BVType, __pyx_n_s_BVType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_BV_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_BVType, __pyx_n_s_BVType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_BV_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/BV.pyx":7
  *     BV type
@@ -56564,10 +59409,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SVEC       = S_(BVSVEC)
  *     VECS       = S_(BVVECS)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(BVMAT); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 7, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_MAT, __pyx_t_5) < 0) __PYX_ERR(3, 7, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(BVMAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 7, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_MAT, __pyx_t_4) < 0) __PYX_ERR(10, 7, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/BV.pyx":8
  *     """
@@ -56576,10 +59421,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     VECS       = S_(BVVECS)
  *     CONTIGUOUS = S_(BVCONTIGUOUS)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(BVSVEC); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 8, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SVEC, __pyx_t_5) < 0) __PYX_ERR(3, 8, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(BVSVEC); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 8, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SVEC, __pyx_t_4) < 0) __PYX_ERR(10, 8, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/BV.pyx":9
  *     MAT        = S_(BVMAT)
@@ -56588,10 +59433,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONTIGUOUS = S_(BVCONTIGUOUS)
  * 
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(BVVECS); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 9, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_VECS, __pyx_t_5) < 0) __PYX_ERR(3, 9, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(BVVECS); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 9, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_VECS, __pyx_t_4) < 0) __PYX_ERR(10, 9, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/BV.pyx":10
  *     SVEC       = S_(BVSVEC)
@@ -56600,10 +59445,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class BVOrthogType(object):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(BVCONTIGUOUS); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 10, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONTIGUOUS, __pyx_t_5) < 0) __PYX_ERR(3, 10, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(BVCONTIGUOUS); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 10, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONTIGUOUS, __pyx_t_4) < 0) __PYX_ERR(10, 10, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/BV.pyx":3
  * # -----------------------------------------------------------------------------
@@ -56612,10 +59457,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     BV type
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_BVType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BVType, __pyx_t_5) < 0) __PYX_ERR(3, 3, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_BVType, __pyx_tuple__11, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BVType, __pyx_t_4) < 0) __PYX_ERR(10, 3, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -56627,15 +59471,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     BV orthogonalization types
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 12, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__12); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 12, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 12, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__12, __pyx_n_s_BVOrthogType, __pyx_n_s_BVOrthogType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_BV_orthogonalization_types_CGS); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 12, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_BVOrthogType, __pyx_n_s_BVOrthogType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_BV_orthogonalization_types_CGS); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 12, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/BV.pyx":19
  *     - `MGS`: Modified Gram-Schmidt.
@@ -56644,10 +59483,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     MGS = BV_ORTHOG_MGS
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_BVOrthogType(BV_ORTHOG_CGS); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CGS, __pyx_t_5) < 0) __PYX_ERR(3, 19, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_BVOrthogType(BV_ORTHOG_CGS); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CGS, __pyx_t_4) < 0) __PYX_ERR(10, 19, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/BV.pyx":20
  *     """
@@ -56656,10 +59495,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class BVOrthogRefineType(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_BVOrthogType(BV_ORTHOG_MGS); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 20, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_MGS, __pyx_t_5) < 0) __PYX_ERR(3, 20, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_BVOrthogType(BV_ORTHOG_MGS); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 20, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_MGS, __pyx_t_4) < 0) __PYX_ERR(10, 20, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/BV.pyx":12
  *     CONTIGUOUS = S_(BVCONTIGUOUS)
@@ -56668,10 +59507,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     BV orthogonalization types
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_BVOrthogType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 12, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BVOrthogType, __pyx_t_5) < 0) __PYX_ERR(3, 12, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_BVOrthogType, __pyx_tuple__12, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BVOrthogType, __pyx_t_4) < 0) __PYX_ERR(10, 12, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -56683,15 +59521,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     BV orthogonalization refinement types
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 22, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__13); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 22, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 22, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__13, __pyx_n_s_BVOrthogRefineType, __pyx_n_s_BVOrthogRefineType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_BV_orthogonalization_refinement); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 22, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_BVOrthogRefineType, __pyx_n_s_BVOrthogRefineType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_BV_orthogonalization_refinement); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 22, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/BV.pyx":30
  *     - `ALWAYS`:   Always reorthogonalize.
@@ -56700,10 +59533,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     NEVER    = BV_ORTHOG_REFINE_NEVER
  *     ALWAYS   = BV_ORTHOG_REFINE_ALWAYS
  */
-  __pyx_t_5 = __Pyx_PyInt_From_BVOrthogRefineType(BV_ORTHOG_REFINE_IFNEEDED); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 30, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_IFNEEDED, __pyx_t_5) < 0) __PYX_ERR(3, 30, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_BVOrthogRefineType(BV_ORTHOG_REFINE_IFNEEDED); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 30, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_IFNEEDED, __pyx_t_4) < 0) __PYX_ERR(10, 30, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/BV.pyx":31
  *     """
@@ -56712,10 +59545,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ALWAYS   = BV_ORTHOG_REFINE_ALWAYS
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_BVOrthogRefineType(BV_ORTHOG_REFINE_NEVER); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 31, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NEVER, __pyx_t_5) < 0) __PYX_ERR(3, 31, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_BVOrthogRefineType(BV_ORTHOG_REFINE_NEVER); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 31, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NEVER, __pyx_t_4) < 0) __PYX_ERR(10, 31, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/BV.pyx":32
  *     IFNEEDED = BV_ORTHOG_REFINE_IFNEEDED
@@ -56724,10 +59557,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class BVOrthogBlockType(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_BVOrthogRefineType(BV_ORTHOG_REFINE_ALWAYS); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 32, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ALWAYS, __pyx_t_5) < 0) __PYX_ERR(3, 32, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_BVOrthogRefineType(BV_ORTHOG_REFINE_ALWAYS); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 32, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ALWAYS, __pyx_t_4) < 0) __PYX_ERR(10, 32, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/BV.pyx":22
  *     MGS = BV_ORTHOG_MGS
@@ -56736,10 +59569,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     BV orthogonalization refinement types
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_BVOrthogRefineType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 22, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BVOrthogRefineType, __pyx_t_5) < 0) __PYX_ERR(3, 22, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_BVOrthogRefineType, __pyx_tuple__13, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BVOrthogRefineType, __pyx_t_4) < 0) __PYX_ERR(10, 22, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -56751,15 +59583,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     BV block-orthogonalization types
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 34, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__14); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 34, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 34, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__14, __pyx_n_s_BVOrthogBlockType, __pyx_n_s_BVOrthogBlockType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_BV_block_orthogonalization_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 34, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_BVOrthogBlockType, __pyx_n_s_BVOrthogBlockType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_BV_block_orthogonalization_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 34, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/BV.pyx":41
  *     - `CHOL`: Cholesky.
@@ -56768,10 +59595,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CHOL = BV_ORTHOG_BLOCK_CHOL
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_BVOrthogBlockType(BV_ORTHOG_BLOCK_GS); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 41, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_GS, __pyx_t_5) < 0) __PYX_ERR(3, 41, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_BVOrthogBlockType(BV_ORTHOG_BLOCK_GS); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 41, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_GS, __pyx_t_4) < 0) __PYX_ERR(10, 41, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/BV.pyx":42
  *     """
@@ -56780,10 +59607,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_5 = __Pyx_PyInt_From_BVOrthogBlockType(BV_ORTHOG_BLOCK_CHOL); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 42, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CHOL, __pyx_t_5) < 0) __PYX_ERR(3, 42, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_BVOrthogBlockType(BV_ORTHOG_BLOCK_CHOL); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 42, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CHOL, __pyx_t_4) < 0) __PYX_ERR(10, 42, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/BV.pyx":34
  *     ALWAYS   = BV_ORTHOG_REFINE_ALWAYS
@@ -56792,10 +59619,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     BV block-orthogonalization types
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_BVOrthogBlockType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 34, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BVOrthogBlockType, __pyx_t_5) < 0) __PYX_ERR(3, 34, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_BVOrthogBlockType, __pyx_tuple__14, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BVOrthogBlockType, __pyx_t_4) < 0) __PYX_ERR(10, 34, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -56807,9 +59633,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     OrthogType       = BVOrthogType
  *     OrthogRefineType = BVOrthogRefineType
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BVType); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 52, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BVType); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 52, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(3, 52, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(10, 52, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_BV);
 
@@ -56820,9 +59646,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     OrthogRefineType = BVOrthogRefineType
  *     RefineType       = BVOrthogRefineType
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BVOrthogType); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 53, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BVOrthogType); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 53, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV->tp_dict, __pyx_n_s_OrthogType, __pyx_t_2) < 0) __PYX_ERR(3, 53, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV->tp_dict, __pyx_n_s_OrthogType, __pyx_t_2) < 0) __PYX_ERR(10, 53, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_BV);
 
@@ -56833,9 +59659,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     RefineType       = BVOrthogRefineType
  *     OrthogBlockType  = BVOrthogBlockType
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BVOrthogRefineType); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 54, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BVOrthogRefineType); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 54, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV->tp_dict, __pyx_n_s_OrthogRefineType, __pyx_t_2) < 0) __PYX_ERR(3, 54, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV->tp_dict, __pyx_n_s_OrthogRefineType, __pyx_t_2) < 0) __PYX_ERR(10, 54, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_BV);
 
@@ -56846,9 +59672,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     OrthogBlockType  = BVOrthogBlockType
  *     BlockType        = BVOrthogBlockType
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BVOrthogRefineType); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 55, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BVOrthogRefineType); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 55, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV->tp_dict, __pyx_n_s_RefineType, __pyx_t_2) < 0) __PYX_ERR(3, 55, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV->tp_dict, __pyx_n_s_RefineType, __pyx_t_2) < 0) __PYX_ERR(10, 55, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_BV);
 
@@ -56859,9 +59685,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     BlockType        = BVOrthogBlockType
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BVOrthogBlockType); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 56, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BVOrthogBlockType); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 56, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV->tp_dict, __pyx_n_s_OrthogBlockType, __pyx_t_2) < 0) __PYX_ERR(3, 56, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV->tp_dict, __pyx_n_s_OrthogBlockType, __pyx_t_2) < 0) __PYX_ERR(10, 56, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_BV);
 
@@ -56872,47 +59698,47 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  *     def __cinit__(self):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BVOrthogBlockType); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 57, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_BVOrthogBlockType); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 57, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV->tp_dict, __pyx_n_s_BlockType, __pyx_t_2) < 0) __PYX_ERR(3, 57, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_BV->tp_dict, __pyx_n_s_BlockType, __pyx_t_2) < 0) __PYX_ERR(10, 57, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_BV);
 
-  /* "SLEPc/BV.pyx":845
+  /* "SLEPc/BV.pyx":844
  * # -----------------------------------------------------------------------------
  * 
  * del BVType             # <<<<<<<<<<<<<<
  * del BVOrthogType
  * del BVOrthogRefineType
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_BVType) < 0) __PYX_ERR(3, 845, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_BVType) < 0) __PYX_ERR(10, 844, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":846
+  /* "SLEPc/BV.pyx":845
  * 
  * del BVType
  * del BVOrthogType             # <<<<<<<<<<<<<<
  * del BVOrthogRefineType
  * del BVOrthogBlockType
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_BVOrthogType) < 0) __PYX_ERR(3, 846, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_BVOrthogType) < 0) __PYX_ERR(10, 845, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":847
+  /* "SLEPc/BV.pyx":846
  * del BVType
  * del BVOrthogType
  * del BVOrthogRefineType             # <<<<<<<<<<<<<<
  * del BVOrthogBlockType
  * 
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_BVOrthogRefineType) < 0) __PYX_ERR(3, 847, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_BVOrthogRefineType) < 0) __PYX_ERR(10, 846, __pyx_L1_error)
 
-  /* "SLEPc/BV.pyx":848
+  /* "SLEPc/BV.pyx":847
  * del BVOrthogType
  * del BVOrthogRefineType
  * del BVOrthogBlockType             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_BVOrthogBlockType) < 0) __PYX_ERR(3, 848, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_BVOrthogBlockType) < 0) __PYX_ERR(10, 847, __pyx_L1_error)
 
   /* "SLEPc/DS.pyx":3
  * # -----------------------------------------------------------------------------
@@ -56921,15 +59747,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     DS type
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 3, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__15); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 3, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__15, __pyx_n_s_DSType, __pyx_n_s_DSType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_DS_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_DSType, __pyx_n_s_DSType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_DS_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/DS.pyx":7
  *     DS type
@@ -56938,10 +59759,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     NHEP    = S_(DSNHEP)
  *     GHEP    = S_(DSGHEP)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(DSHEP); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 7, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_HEP, __pyx_t_5) < 0) __PYX_ERR(10, 7, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(DSHEP); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 7, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_HEP, __pyx_t_4) < 0) __PYX_ERR(11, 7, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":8
  *     """
@@ -56950,10 +59771,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     GHEP    = S_(DSGHEP)
  *     GHIEP   = S_(DSGHIEP)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(DSNHEP); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 8, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NHEP, __pyx_t_5) < 0) __PYX_ERR(10, 8, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(DSNHEP); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 8, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NHEP, __pyx_t_4) < 0) __PYX_ERR(11, 8, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":9
  *     HEP     = S_(DSHEP)
@@ -56962,10 +59783,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     GHIEP   = S_(DSGHIEP)
  *     GNHEP   = S_(DSGNHEP)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(DSGHEP); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 9, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_GHEP, __pyx_t_5) < 0) __PYX_ERR(10, 9, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(DSGHEP); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 9, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_GHEP, __pyx_t_4) < 0) __PYX_ERR(11, 9, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":10
  *     NHEP    = S_(DSNHEP)
@@ -56974,10 +59795,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     GNHEP   = S_(DSGNHEP)
  *     SVD     = S_(DSSVD)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(DSGHIEP); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 10, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_GHIEP, __pyx_t_5) < 0) __PYX_ERR(10, 10, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(DSGHIEP); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 10, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_GHIEP, __pyx_t_4) < 0) __PYX_ERR(11, 10, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":11
  *     GHEP    = S_(DSGHEP)
@@ -56986,10 +59807,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SVD     = S_(DSSVD)
  *     PEP     = S_(DSPEP)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(DSGNHEP); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 11, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_GNHEP, __pyx_t_5) < 0) __PYX_ERR(10, 11, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(DSGNHEP); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 11, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_GNHEP, __pyx_t_4) < 0) __PYX_ERR(11, 11, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":12
  *     GHIEP   = S_(DSGHIEP)
@@ -56998,10 +59819,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     PEP     = S_(DSPEP)
  *     NEP     = S_(DSNEP)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(DSSVD); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 12, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SVD, __pyx_t_5) < 0) __PYX_ERR(10, 12, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(DSSVD); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SVD, __pyx_t_4) < 0) __PYX_ERR(11, 12, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":13
  *     GNHEP   = S_(DSGNHEP)
@@ -57010,10 +59831,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     NEP     = S_(DSNEP)
  * 
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(DSPEP); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 13, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_PEP, __pyx_t_5) < 0) __PYX_ERR(10, 13, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(DSPEP); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 13, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_PEP, __pyx_t_4) < 0) __PYX_ERR(11, 13, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":14
  *     SVD     = S_(DSSVD)
@@ -57022,10 +59843,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class DSStateType(object):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(DSNEP); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 14, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NEP, __pyx_t_5) < 0) __PYX_ERR(10, 14, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(DSNEP); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 14, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NEP, __pyx_t_4) < 0) __PYX_ERR(11, 14, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":3
  * # -----------------------------------------------------------------------------
@@ -57034,10 +59855,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     DS type
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_DSType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DSType, __pyx_t_5) < 0) __PYX_ERR(10, 3, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_DSType, __pyx_tuple__15, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DSType, __pyx_t_4) < 0) __PYX_ERR(11, 3, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -57049,15 +59869,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     DS state types
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 16, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__16); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 16, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 16, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__16, __pyx_n_s_DSStateType, __pyx_n_s_DSStateType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_DS_state_types_RAW_Not_processe); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 16, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_DSStateType, __pyx_n_s_DSStateType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_DS_state_types_RAW_Not_processe); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 16, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/DS.pyx":25
  *     - `TRUNCATED`: Condensed form truncated to a smaller size.
@@ -57066,10 +59881,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     INTERMEDIATE = DS_STATE_INTERMEDIATE
  *     CONDENSED    = DS_STATE_CONDENSED
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSStateType(DS_STATE_RAW); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 25, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RAW, __pyx_t_5) < 0) __PYX_ERR(10, 25, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSStateType(DS_STATE_RAW); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 25, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_RAW, __pyx_t_4) < 0) __PYX_ERR(11, 25, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":26
  *     """
@@ -57078,10 +59893,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONDENSED    = DS_STATE_CONDENSED
  *     TRUNCATED    = DS_STATE_TRUNCATED
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSStateType(DS_STATE_INTERMEDIATE); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 26, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_INTERMEDIATE, __pyx_t_5) < 0) __PYX_ERR(10, 26, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSStateType(DS_STATE_INTERMEDIATE); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 26, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_INTERMEDIATE, __pyx_t_4) < 0) __PYX_ERR(11, 26, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":27
  *     RAW          = DS_STATE_RAW
@@ -57090,10 +59905,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TRUNCATED    = DS_STATE_TRUNCATED
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSStateType(DS_STATE_CONDENSED); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 27, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONDENSED, __pyx_t_5) < 0) __PYX_ERR(10, 27, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSStateType(DS_STATE_CONDENSED); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 27, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONDENSED, __pyx_t_4) < 0) __PYX_ERR(11, 27, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":28
  *     INTERMEDIATE = DS_STATE_INTERMEDIATE
@@ -57102,10 +59917,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class DSMatType(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSStateType(DS_STATE_TRUNCATED); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 28, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TRUNCATED, __pyx_t_5) < 0) __PYX_ERR(10, 28, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSStateType(DS_STATE_TRUNCATED); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 28, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TRUNCATED, __pyx_t_4) < 0) __PYX_ERR(11, 28, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":16
  *     NEP     = S_(DSNEP)
@@ -57114,10 +59929,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     DS state types
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_DSStateType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 16, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DSStateType, __pyx_t_5) < 0) __PYX_ERR(10, 16, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_DSStateType, __pyx_tuple__16, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DSStateType, __pyx_t_4) < 0) __PYX_ERR(11, 16, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -57129,15 +59943,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     To refer to one of the matrices stored internally in DS
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 30, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__17); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 30, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 30, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__17, __pyx_n_s_DSMatType, __pyx_n_s_DSMatType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_To_refer_to_one_of_the_matrices); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 30, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_DSMatType, __pyx_n_s_DSMatType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_To_refer_to_one_of_the_matrices); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 30, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/DS.pyx":47
  *     - `W`:  workspace matrix.
@@ -57146,10 +59955,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     B  = DS_MAT_B
  *     C  = DS_MAT_C
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSMatType(DS_MAT_A); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 47, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_A, __pyx_t_5) < 0) __PYX_ERR(10, 47, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSMatType(DS_MAT_A); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 47, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_A, __pyx_t_4) < 0) __PYX_ERR(11, 47, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":48
  *     """
@@ -57158,10 +59967,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     C  = DS_MAT_C
  *     T  = DS_MAT_T
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSMatType(DS_MAT_B); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 48, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_B, __pyx_t_5) < 0) __PYX_ERR(10, 48, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSMatType(DS_MAT_B); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_B, __pyx_t_4) < 0) __PYX_ERR(11, 48, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":49
  *     A  = DS_MAT_A
@@ -57170,10 +59979,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     T  = DS_MAT_T
  *     D  = DS_MAT_D
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSMatType(DS_MAT_C); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 49, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_C, __pyx_t_5) < 0) __PYX_ERR(10, 49, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSMatType(DS_MAT_C); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 49, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_C, __pyx_t_4) < 0) __PYX_ERR(11, 49, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":50
  *     B  = DS_MAT_B
@@ -57182,10 +59991,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     D  = DS_MAT_D
  *     Q  = DS_MAT_Q
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSMatType(DS_MAT_T); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 50, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_T, __pyx_t_5) < 0) __PYX_ERR(10, 50, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSMatType(DS_MAT_T); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 50, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_T, __pyx_t_4) < 0) __PYX_ERR(11, 50, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":51
  *     C  = DS_MAT_C
@@ -57194,10 +60003,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Q  = DS_MAT_Q
  *     Z  = DS_MAT_Z
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSMatType(DS_MAT_D); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 51, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_D, __pyx_t_5) < 0) __PYX_ERR(10, 51, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSMatType(DS_MAT_D); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_D, __pyx_t_4) < 0) __PYX_ERR(11, 51, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":52
  *     T  = DS_MAT_T
@@ -57206,10 +60015,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Z  = DS_MAT_Z
  *     X  = DS_MAT_X
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSMatType(DS_MAT_Q); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 52, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Q, __pyx_t_5) < 0) __PYX_ERR(10, 52, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSMatType(DS_MAT_Q); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_Q, __pyx_t_4) < 0) __PYX_ERR(11, 52, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":53
  *     D  = DS_MAT_D
@@ -57218,10 +60027,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     X  = DS_MAT_X
  *     Y  = DS_MAT_Y
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSMatType(DS_MAT_Z); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 53, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Z, __pyx_t_5) < 0) __PYX_ERR(10, 53, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSMatType(DS_MAT_Z); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 53, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_Z, __pyx_t_4) < 0) __PYX_ERR(11, 53, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":54
  *     Q  = DS_MAT_Q
@@ -57230,10 +60039,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Y  = DS_MAT_Y
  *     U  = DS_MAT_U
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSMatType(DS_MAT_X); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 54, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_X, __pyx_t_5) < 0) __PYX_ERR(10, 54, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSMatType(DS_MAT_X); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 54, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_X, __pyx_t_4) < 0) __PYX_ERR(11, 54, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":55
  *     Z  = DS_MAT_Z
@@ -57242,10 +60051,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     U  = DS_MAT_U
  *     VT = DS_MAT_VT
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSMatType(DS_MAT_Y); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 55, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Y, __pyx_t_5) < 0) __PYX_ERR(10, 55, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSMatType(DS_MAT_Y); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 55, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_Y, __pyx_t_4) < 0) __PYX_ERR(11, 55, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":56
  *     X  = DS_MAT_X
@@ -57254,10 +60063,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     VT = DS_MAT_VT
  *     W  = DS_MAT_W
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSMatType(DS_MAT_U); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_U, __pyx_t_5) < 0) __PYX_ERR(10, 56, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSMatType(DS_MAT_U); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_U, __pyx_t_4) < 0) __PYX_ERR(11, 56, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":57
  *     Y  = DS_MAT_Y
@@ -57266,10 +60075,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     W  = DS_MAT_W
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSMatType(DS_MAT_VT); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 57, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_VT, __pyx_t_5) < 0) __PYX_ERR(10, 57, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSMatType(DS_MAT_VT); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_VT, __pyx_t_4) < 0) __PYX_ERR(11, 57, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":58
  *     U  = DS_MAT_U
@@ -57278,10 +60087,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_5 = __Pyx_PyInt_From_DSMatType(DS_MAT_W); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 58, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_W, __pyx_t_5) < 0) __PYX_ERR(10, 58, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_DSMatType(DS_MAT_W); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_W, __pyx_t_4) < 0) __PYX_ERR(11, 58, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/DS.pyx":30
  *     TRUNCATED    = DS_STATE_TRUNCATED
@@ -57290,10 +60099,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     To refer to one of the matrices stored internally in DS
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_DSMatType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 30, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DSMatType, __pyx_t_5) < 0) __PYX_ERR(10, 30, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_DSMatType, __pyx_tuple__17, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 30, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DSMatType, __pyx_t_4) < 0) __PYX_ERR(11, 30, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -57305,9 +60113,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     StateType = DSStateType
  *     MatType   = DSMatType
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DSType); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 68, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DSType); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 68, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_DS->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(10, 68, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_DS->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(11, 68, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_DS);
 
@@ -57318,9 +60126,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     MatType   = DSMatType
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DSStateType); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 69, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DSStateType); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 69, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_DS->tp_dict, __pyx_n_s_StateType, __pyx_t_2) < 0) __PYX_ERR(10, 69, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_DS->tp_dict, __pyx_n_s_StateType, __pyx_t_2) < 0) __PYX_ERR(11, 69, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_DS);
 
@@ -57331,38 +60139,38 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  *     def __cinit__(self):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DSMatType); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 70, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DSMatType); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 70, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_DS->tp_dict, __pyx_n_s_MatType, __pyx_t_2) < 0) __PYX_ERR(10, 70, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_DS->tp_dict, __pyx_n_s_MatType, __pyx_t_2) < 0) __PYX_ERR(11, 70, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_DS);
 
-  /* "SLEPc/DS.pyx":468
+  /* "SLEPc/DS.pyx":467
  * # -----------------------------------------------------------------------------
  * 
  * del DSType             # <<<<<<<<<<<<<<
  * del DSStateType
  * del DSMatType
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_DSType) < 0) __PYX_ERR(10, 468, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_DSType) < 0) __PYX_ERR(11, 467, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":469
+  /* "SLEPc/DS.pyx":468
  * 
  * del DSType
  * del DSStateType             # <<<<<<<<<<<<<<
  * del DSMatType
  * 
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_DSStateType) < 0) __PYX_ERR(10, 469, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_DSStateType) < 0) __PYX_ERR(11, 468, __pyx_L1_error)
 
-  /* "SLEPc/DS.pyx":470
+  /* "SLEPc/DS.pyx":469
  * del DSType
  * del DSStateType
  * del DSMatType             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_DSMatType) < 0) __PYX_ERR(10, 470, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_DSMatType) < 0) __PYX_ERR(11, 469, __pyx_L1_error)
 
   /* "SLEPc/FN.pyx":3
  * # -----------------------------------------------------------------------------
@@ -57371,15 +60179,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     FN type
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 3, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__18); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 3, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__18, __pyx_n_s_FNType, __pyx_n_s_FNType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_FN_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_FNType, __pyx_n_s_FNType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_FN_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/FN.pyx":7
  *     FN type
@@ -57388,10 +60191,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     RATIONAL = S_(FNRATIONAL)
  *     EXP      = S_(FNEXP)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(FNCOMBINE); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 7, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_COMBINE, __pyx_t_5) < 0) __PYX_ERR(11, 7, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(FNCOMBINE); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 7, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_COMBINE, __pyx_t_4) < 0) __PYX_ERR(12, 7, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/FN.pyx":8
  *     """
@@ -57400,10 +60203,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     EXP      = S_(FNEXP)
  *     LOG      = S_(FNLOG)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(FNRATIONAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 8, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RATIONAL, __pyx_t_5) < 0) __PYX_ERR(11, 8, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(FNRATIONAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 8, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_RATIONAL, __pyx_t_4) < 0) __PYX_ERR(12, 8, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/FN.pyx":9
  *     COMBINE  = S_(FNCOMBINE)
@@ -57412,10 +60215,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LOG      = S_(FNLOG)
  *     PHI      = S_(FNPHI)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(FNEXP); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 9, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_EXP, __pyx_t_5) < 0) __PYX_ERR(11, 9, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(FNEXP); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 9, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_EXP, __pyx_t_4) < 0) __PYX_ERR(12, 9, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/FN.pyx":10
  *     RATIONAL = S_(FNRATIONAL)
@@ -57424,10 +60227,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     PHI      = S_(FNPHI)
  *     SQRT     = S_(FNSQRT)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(FNLOG); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 10, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LOG, __pyx_t_5) < 0) __PYX_ERR(11, 10, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(FNLOG); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 10, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LOG, __pyx_t_4) < 0) __PYX_ERR(12, 10, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/FN.pyx":11
  *     EXP      = S_(FNEXP)
@@ -57436,10 +60239,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SQRT     = S_(FNSQRT)
  *     INVSQRT  = S_(FNINVSQRT)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(FNPHI); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 11, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_PHI, __pyx_t_5) < 0) __PYX_ERR(11, 11, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(FNPHI); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 11, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_PHI, __pyx_t_4) < 0) __PYX_ERR(12, 11, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/FN.pyx":12
  *     LOG      = S_(FNLOG)
@@ -57448,10 +60251,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     INVSQRT  = S_(FNINVSQRT)
  * 
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(FNSQRT); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 12, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SQRT, __pyx_t_5) < 0) __PYX_ERR(11, 12, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(FNSQRT); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SQRT, __pyx_t_4) < 0) __PYX_ERR(12, 12, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/FN.pyx":13
  *     PHI      = S_(FNPHI)
@@ -57460,10 +60263,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class FNCombineType(object):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(FNINVSQRT); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 13, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_INVSQRT, __pyx_t_5) < 0) __PYX_ERR(11, 13, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(FNINVSQRT); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 13, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_INVSQRT, __pyx_t_4) < 0) __PYX_ERR(12, 13, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/FN.pyx":3
  * # -----------------------------------------------------------------------------
@@ -57472,10 +60275,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     FN type
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_FNType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FNType, __pyx_t_5) < 0) __PYX_ERR(11, 3, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_FNType, __pyx_tuple__18, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FNType, __pyx_t_4) < 0) __PYX_ERR(12, 3, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -57487,15 +60289,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     FN type of combination of child functions
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 15, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__19); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 15, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 15, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__19, __pyx_n_s_FNCombineType, __pyx_n_s_FNCombineType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_FN_type_of_combination_of_child); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 15, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_FNCombineType, __pyx_n_s_FNCombineType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_FN_type_of_combination_of_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 15, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/FN.pyx":24
  *     - `COMPOSE`:   Composition      f(x) = f2(f1(x))
@@ -57504,10 +60301,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     MULTIPLY = FN_COMBINE_MULTIPLY
  *     DIVIDE   = FN_COMBINE_DIVIDE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_FNCombineType(FN_COMBINE_ADD); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 24, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ADD, __pyx_t_5) < 0) __PYX_ERR(11, 24, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_FNCombineType(FN_COMBINE_ADD); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ADD, __pyx_t_4) < 0) __PYX_ERR(12, 24, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/FN.pyx":25
  *     """
@@ -57516,10 +60313,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVIDE   = FN_COMBINE_DIVIDE
  *     COMPOSE  = FN_COMBINE_COMPOSE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_FNCombineType(FN_COMBINE_MULTIPLY); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 25, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_MULTIPLY, __pyx_t_5) < 0) __PYX_ERR(11, 25, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_FNCombineType(FN_COMBINE_MULTIPLY); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 25, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_MULTIPLY, __pyx_t_4) < 0) __PYX_ERR(12, 25, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/FN.pyx":26
  *     ADD      = FN_COMBINE_ADD
@@ -57528,10 +60325,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     COMPOSE  = FN_COMBINE_COMPOSE
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_FNCombineType(FN_COMBINE_DIVIDE); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 26, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVIDE, __pyx_t_5) < 0) __PYX_ERR(11, 26, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_FNCombineType(FN_COMBINE_DIVIDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 26, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVIDE, __pyx_t_4) < 0) __PYX_ERR(12, 26, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/FN.pyx":27
  *     MULTIPLY = FN_COMBINE_MULTIPLY
@@ -57540,10 +60337,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_5 = __Pyx_PyInt_From_FNCombineType(FN_COMBINE_COMPOSE); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 27, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_COMPOSE, __pyx_t_5) < 0) __PYX_ERR(11, 27, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_FNCombineType(FN_COMBINE_COMPOSE); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 27, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_COMPOSE, __pyx_t_4) < 0) __PYX_ERR(12, 27, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/FN.pyx":15
  *     INVSQRT  = S_(FNINVSQRT)
@@ -57552,10 +60349,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     FN type of combination of child functions
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_FNCombineType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 15, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FNCombineType, __pyx_t_5) < 0) __PYX_ERR(11, 15, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_FNCombineType, __pyx_tuple__19, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FNCombineType, __pyx_t_4) < 0) __PYX_ERR(12, 15, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -57567,9 +60363,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CombineType = FNCombineType
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_FNType); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 37, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_FNType); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 37, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_FN->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(11, 37, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_FN->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(12, 37, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_FN);
 
@@ -57580,29 +60376,29 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  *     def __cinit__(self):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_FNCombineType); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 38, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_FNCombineType); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 38, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_FN->tp_dict, __pyx_n_s_CombineType, __pyx_t_2) < 0) __PYX_ERR(11, 38, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_FN->tp_dict, __pyx_n_s_CombineType, __pyx_t_2) < 0) __PYX_ERR(12, 38, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_FN);
 
-  /* "SLEPc/FN.pyx":256
+  /* "SLEPc/FN.pyx":255
  * # -----------------------------------------------------------------------------
  * 
  * del FNType             # <<<<<<<<<<<<<<
  * del FNCombineType
  * 
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_FNType) < 0) __PYX_ERR(11, 256, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_FNType) < 0) __PYX_ERR(12, 255, __pyx_L1_error)
 
-  /* "SLEPc/FN.pyx":257
+  /* "SLEPc/FN.pyx":256
  * 
  * del FNType
  * del FNCombineType             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_FNCombineType) < 0) __PYX_ERR(11, 257, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_FNCombineType) < 0) __PYX_ERR(12, 256, __pyx_L1_error)
 
   /* "SLEPc/RG.pyx":3
  * # -----------------------------------------------------------------------------
@@ -57611,15 +60407,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     RG type
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 3, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__20); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 3, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__20, __pyx_n_s_RGType, __pyx_n_s_RGType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_RG_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_RGType, __pyx_n_s_RGType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_RG_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/RG.pyx":7
  *     RG type
@@ -57628,10 +60419,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     POLYGON    = S_(RGPOLYGON)
  *     ELLIPSE    = S_(RGELLIPSE)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(RGINTERVAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 7, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_INTERVAL, __pyx_t_5) < 0) __PYX_ERR(12, 7, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(RGINTERVAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 7, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_INTERVAL, __pyx_t_4) < 0) __PYX_ERR(13, 7, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/RG.pyx":8
  *     """
@@ -57640,10 +60431,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ELLIPSE    = S_(RGELLIPSE)
  *     RING       = S_(RGRING)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(RGPOLYGON); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 8, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_POLYGON, __pyx_t_5) < 0) __PYX_ERR(12, 8, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(RGPOLYGON); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 8, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_POLYGON, __pyx_t_4) < 0) __PYX_ERR(13, 8, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/RG.pyx":9
  *     INTERVAL   = S_(RGINTERVAL)
@@ -57652,10 +60443,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     RING       = S_(RGRING)
  * 
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(RGELLIPSE); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 9, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ELLIPSE, __pyx_t_5) < 0) __PYX_ERR(12, 9, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(RGELLIPSE); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 9, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ELLIPSE, __pyx_t_4) < 0) __PYX_ERR(13, 9, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/RG.pyx":10
  *     POLYGON    = S_(RGPOLYGON)
@@ -57664,10 +60455,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(RGRING); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 10, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RING, __pyx_t_5) < 0) __PYX_ERR(12, 10, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(RGRING); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 10, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_RING, __pyx_t_4) < 0) __PYX_ERR(13, 10, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/RG.pyx":3
  * # -----------------------------------------------------------------------------
@@ -57676,10 +60467,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     RG type
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_RGType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RGType, __pyx_t_5) < 0) __PYX_ERR(12, 3, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_RGType, __pyx_tuple__20, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RGType, __pyx_t_4) < 0) __PYX_ERR(13, 3, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -57691,20 +60481,20 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  *     def __cinit__(self):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGType); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 20, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_RGType); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 20, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_RG->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(12, 20, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_RG->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(13, 20, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_RG);
 
-  /* "SLEPc/RG.pyx":263
+  /* "SLEPc/RG.pyx":262
  * # -----------------------------------------------------------------------------
  * 
  * del RGType             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_RGType) < 0) __PYX_ERR(12, 263, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_RGType) < 0) __PYX_ERR(13, 262, __pyx_L1_error)
 
   /* "SLEPc/EPS.pyx":3
  * # -----------------------------------------------------------------------------
@@ -57713,15 +60503,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS type
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 3, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__21); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 3, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__21, __pyx_n_s_EPSType, __pyx_n_s_EPSType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_type_Native_sparse_eigensol); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_EPSType, __pyx_n_s_EPSType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_type_Native_sparse_eigensol); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/EPS.pyx":32
  *     """
@@ -57730,10 +60515,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SUBSPACE     = S_(EPSSUBSPACE)
  *     ARNOLDI      = S_(EPSARNOLDI)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSPOWER); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 32, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_POWER, __pyx_t_5) < 0) __PYX_ERR(13, 32, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSPOWER); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 32, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_POWER, __pyx_t_4) < 0) __PYX_ERR(14, 32, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":33
  *     # provided implementations
@@ -57742,10 +60527,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ARNOLDI      = S_(EPSARNOLDI)
  *     LANCZOS      = S_(EPSLANCZOS)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSSUBSPACE); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 33, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SUBSPACE, __pyx_t_5) < 0) __PYX_ERR(13, 33, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSSUBSPACE); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SUBSPACE, __pyx_t_4) < 0) __PYX_ERR(14, 33, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":34
  *     POWER        = S_(EPSPOWER)
@@ -57754,10 +60539,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LANCZOS      = S_(EPSLANCZOS)
  *     KRYLOVSCHUR  = S_(EPSKRYLOVSCHUR)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSARNOLDI); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 34, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ARNOLDI, __pyx_t_5) < 0) __PYX_ERR(13, 34, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSARNOLDI); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ARNOLDI, __pyx_t_4) < 0) __PYX_ERR(14, 34, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":35
  *     SUBSPACE     = S_(EPSSUBSPACE)
@@ -57766,10 +60551,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     KRYLOVSCHUR  = S_(EPSKRYLOVSCHUR)
  *     GD           = S_(EPSGD)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSLANCZOS); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 35, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LANCZOS, __pyx_t_5) < 0) __PYX_ERR(13, 35, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSLANCZOS); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LANCZOS, __pyx_t_4) < 0) __PYX_ERR(14, 35, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":36
  *     ARNOLDI      = S_(EPSARNOLDI)
@@ -57778,10 +60563,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     GD           = S_(EPSGD)
  *     JD           = S_(EPSJD)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSKRYLOVSCHUR); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 36, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_KRYLOVSCHUR, __pyx_t_5) < 0) __PYX_ERR(13, 36, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSKRYLOVSCHUR); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_KRYLOVSCHUR, __pyx_t_4) < 0) __PYX_ERR(14, 36, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":37
  *     LANCZOS      = S_(EPSLANCZOS)
@@ -57790,10 +60575,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     JD           = S_(EPSJD)
  *     RQCG         = S_(EPSRQCG)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSGD); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 37, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_GD, __pyx_t_5) < 0) __PYX_ERR(13, 37, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSGD); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 37, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_GD, __pyx_t_4) < 0) __PYX_ERR(14, 37, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":38
  *     KRYLOVSCHUR  = S_(EPSKRYLOVSCHUR)
@@ -57802,10 +60587,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     RQCG         = S_(EPSRQCG)
  *     LOBPCG       = S_(EPSLOBPCG)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSJD); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 38, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_JD, __pyx_t_5) < 0) __PYX_ERR(13, 38, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSJD); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 38, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_JD, __pyx_t_4) < 0) __PYX_ERR(14, 38, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":39
  *     GD           = S_(EPSGD)
@@ -57814,10 +60599,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LOBPCG       = S_(EPSLOBPCG)
  *     CISS         = S_(EPSCISS)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSRQCG); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 39, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RQCG, __pyx_t_5) < 0) __PYX_ERR(13, 39, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSRQCG); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 39, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_RQCG, __pyx_t_4) < 0) __PYX_ERR(14, 39, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":40
  *     JD           = S_(EPSJD)
@@ -57826,10 +60611,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CISS         = S_(EPSCISS)
  *     LAPACK       = S_(EPSLAPACK)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSLOBPCG); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 40, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LOBPCG, __pyx_t_5) < 0) __PYX_ERR(13, 40, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSLOBPCG); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 40, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LOBPCG, __pyx_t_4) < 0) __PYX_ERR(14, 40, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":41
  *     RQCG         = S_(EPSRQCG)
@@ -57838,10 +60623,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LAPACK       = S_(EPSLAPACK)
  *     # with external libraries
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSCISS); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 41, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CISS, __pyx_t_5) < 0) __PYX_ERR(13, 41, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSCISS); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 41, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CISS, __pyx_t_4) < 0) __PYX_ERR(14, 41, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":42
  *     LOBPCG       = S_(EPSLOBPCG)
@@ -57850,10 +60635,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     # with external libraries
  *     ARPACK       = S_(EPSARPACK)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSLAPACK); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 42, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LAPACK, __pyx_t_5) < 0) __PYX_ERR(13, 42, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSLAPACK); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 42, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LAPACK, __pyx_t_4) < 0) __PYX_ERR(14, 42, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":44
  *     LAPACK       = S_(EPSLAPACK)
@@ -57862,10 +60647,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     BLZPACK      = S_(EPSBLZPACK)
  *     TRLAN        = S_(EPSTRLAN)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSARPACK); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 44, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ARPACK, __pyx_t_5) < 0) __PYX_ERR(13, 44, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSARPACK); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 44, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ARPACK, __pyx_t_4) < 0) __PYX_ERR(14, 44, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":45
  *     # with external libraries
@@ -57874,10 +60659,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TRLAN        = S_(EPSTRLAN)
  *     BLOPEX       = S_(EPSBLOPEX)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSBLZPACK); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 45, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_BLZPACK, __pyx_t_5) < 0) __PYX_ERR(13, 45, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSBLZPACK); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 45, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_BLZPACK, __pyx_t_4) < 0) __PYX_ERR(14, 45, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":46
  *     ARPACK       = S_(EPSARPACK)
@@ -57886,10 +60671,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     BLOPEX       = S_(EPSBLOPEX)
  *     PRIMME       = S_(EPSPRIMME)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSTRLAN); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 46, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TRLAN, __pyx_t_5) < 0) __PYX_ERR(13, 46, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSTRLAN); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 46, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TRLAN, __pyx_t_4) < 0) __PYX_ERR(14, 46, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":47
  *     BLZPACK      = S_(EPSBLZPACK)
@@ -57898,10 +60683,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     PRIMME       = S_(EPSPRIMME)
  *     FEAST        = S_(EPSFEAST)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSBLOPEX); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 47, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_BLOPEX, __pyx_t_5) < 0) __PYX_ERR(13, 47, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSBLOPEX); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 47, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_BLOPEX, __pyx_t_4) < 0) __PYX_ERR(14, 47, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":48
  *     TRLAN        = S_(EPSTRLAN)
@@ -57910,10 +60695,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     FEAST        = S_(EPSFEAST)
  * 
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSPRIMME); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 48, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_PRIMME, __pyx_t_5) < 0) __PYX_ERR(13, 48, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSPRIMME); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_PRIMME, __pyx_t_4) < 0) __PYX_ERR(14, 48, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":49
  *     BLOPEX       = S_(EPSBLOPEX)
@@ -57922,10 +60707,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class EPSProblemType(object):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(EPSFEAST); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 49, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_FEAST, __pyx_t_5) < 0) __PYX_ERR(13, 49, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(EPSFEAST); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 49, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_FEAST, __pyx_t_4) < 0) __PYX_ERR(14, 49, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":3
  * # -----------------------------------------------------------------------------
@@ -57934,10 +60719,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS type
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_EPSType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSType, __pyx_t_5) < 0) __PYX_ERR(13, 3, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_EPSType, __pyx_tuple__21, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSType, __pyx_t_4) < 0) __PYX_ERR(14, 3, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -57949,15 +60733,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS problem type
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 51, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__22); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 51, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 51, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__22, __pyx_n_s_EPSProblemType, __pyx_n_s_EPSProblemType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_problem_type_HEP_Hermitian); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 51, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_EPSProblemType, __pyx_n_s_EPSProblemType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_problem_type_HEP_Hermitian); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 51, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/EPS.pyx":63
  *     - `GHIEP`:  Generalized Hermitian-indefinite eigenproblem.
@@ -57966,10 +60745,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     NHEP   = EPS_NHEP
  *     GHEP   = EPS_GHEP
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSProblemType(EPS_HEP); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 63, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_HEP, __pyx_t_5) < 0) __PYX_ERR(13, 63, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSProblemType(EPS_HEP); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 63, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_HEP, __pyx_t_4) < 0) __PYX_ERR(14, 63, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":64
  *     """
@@ -57978,10 +60757,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     GHEP   = EPS_GHEP
  *     GNHEP  = EPS_GNHEP
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSProblemType(EPS_NHEP); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 64, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NHEP, __pyx_t_5) < 0) __PYX_ERR(13, 64, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSProblemType(EPS_NHEP); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 64, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NHEP, __pyx_t_4) < 0) __PYX_ERR(14, 64, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":65
  *     HEP    = EPS_HEP
@@ -57990,10 +60769,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     GNHEP  = EPS_GNHEP
  *     PGNHEP = EPS_PGNHEP
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSProblemType(EPS_GHEP); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 65, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_GHEP, __pyx_t_5) < 0) __PYX_ERR(13, 65, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSProblemType(EPS_GHEP); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 65, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_GHEP, __pyx_t_4) < 0) __PYX_ERR(14, 65, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":66
  *     NHEP   = EPS_NHEP
@@ -58002,10 +60781,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     PGNHEP = EPS_PGNHEP
  *     GHIEP  = EPS_GHIEP
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSProblemType(EPS_GNHEP); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 66, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_GNHEP, __pyx_t_5) < 0) __PYX_ERR(13, 66, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSProblemType(EPS_GNHEP); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 66, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_GNHEP, __pyx_t_4) < 0) __PYX_ERR(14, 66, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":67
  *     GHEP   = EPS_GHEP
@@ -58014,10 +60793,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     GHIEP  = EPS_GHIEP
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSProblemType(EPS_PGNHEP); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 67, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_PGNHEP, __pyx_t_5) < 0) __PYX_ERR(13, 67, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSProblemType(EPS_PGNHEP); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_PGNHEP, __pyx_t_4) < 0) __PYX_ERR(14, 67, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":68
  *     GNHEP  = EPS_GNHEP
@@ -58026,10 +60805,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class EPSExtraction(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSProblemType(EPS_GHIEP); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 68, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_GHIEP, __pyx_t_5) < 0) __PYX_ERR(13, 68, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSProblemType(EPS_GHIEP); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 68, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_GHIEP, __pyx_t_4) < 0) __PYX_ERR(14, 68, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":51
  *     FEAST        = S_(EPSFEAST)
@@ -58038,10 +60817,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS problem type
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_EPSProblemType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 51, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSProblemType, __pyx_t_5) < 0) __PYX_ERR(13, 51, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_EPSProblemType, __pyx_tuple__22, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSProblemType, __pyx_t_4) < 0) __PYX_ERR(14, 51, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -58053,15 +60831,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS extraction technique
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 70, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__23); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 70, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 70, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__23, __pyx_n_s_EPSExtraction, __pyx_n_s_EPSExtraction, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_extraction_technique_RITZ_S); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 70, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_EPSExtraction, __pyx_n_s_EPSExtraction, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_extraction_technique_RITZ_S); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 70, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/EPS.pyx":82
  *     - `REFINED_HARMONIC`:  Refined harmonic extraction.
@@ -58070,10 +60843,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     HARMONIC          = EPS_HARMONIC
  *     HARMONIC_RELATIVE = EPS_HARMONIC_RELATIVE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSExtraction(EPS_RITZ); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 82, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RITZ, __pyx_t_5) < 0) __PYX_ERR(13, 82, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSExtraction(EPS_RITZ); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 82, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_RITZ, __pyx_t_4) < 0) __PYX_ERR(14, 82, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":83
  *     """
@@ -58082,10 +60855,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     HARMONIC_RELATIVE = EPS_HARMONIC_RELATIVE
  *     HARMONIC_RIGHT    = EPS_HARMONIC_RIGHT
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSExtraction(EPS_HARMONIC); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 83, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_HARMONIC, __pyx_t_5) < 0) __PYX_ERR(13, 83, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSExtraction(EPS_HARMONIC); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 83, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_HARMONIC, __pyx_t_4) < 0) __PYX_ERR(14, 83, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":84
  *     RITZ              = EPS_RITZ
@@ -58094,10 +60867,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     HARMONIC_RIGHT    = EPS_HARMONIC_RIGHT
  *     HARMONIC_LARGEST  = EPS_HARMONIC_LARGEST
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSExtraction(EPS_HARMONIC_RELATIVE); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 84, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_HARMONIC_RELATIVE, __pyx_t_5) < 0) __PYX_ERR(13, 84, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSExtraction(EPS_HARMONIC_RELATIVE); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 84, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_HARMONIC_RELATIVE, __pyx_t_4) < 0) __PYX_ERR(14, 84, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":85
  *     HARMONIC          = EPS_HARMONIC
@@ -58106,10 +60879,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     HARMONIC_LARGEST  = EPS_HARMONIC_LARGEST
  *     REFINED           = EPS_REFINED
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSExtraction(EPS_HARMONIC_RIGHT); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 85, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_HARMONIC_RIGHT, __pyx_t_5) < 0) __PYX_ERR(13, 85, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSExtraction(EPS_HARMONIC_RIGHT); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 85, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_HARMONIC_RIGHT, __pyx_t_4) < 0) __PYX_ERR(14, 85, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":86
  *     HARMONIC_RELATIVE = EPS_HARMONIC_RELATIVE
@@ -58118,10 +60891,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     REFINED           = EPS_REFINED
  *     REFINED_HARMONIC  = EPS_REFINED_HARMONIC
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSExtraction(EPS_HARMONIC_LARGEST); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 86, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_HARMONIC_LARGEST, __pyx_t_5) < 0) __PYX_ERR(13, 86, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSExtraction(EPS_HARMONIC_LARGEST); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 86, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_HARMONIC_LARGEST, __pyx_t_4) < 0) __PYX_ERR(14, 86, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":87
  *     HARMONIC_RIGHT    = EPS_HARMONIC_RIGHT
@@ -58130,10 +60903,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     REFINED_HARMONIC  = EPS_REFINED_HARMONIC
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSExtraction(EPS_REFINED); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 87, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_REFINED, __pyx_t_5) < 0) __PYX_ERR(13, 87, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSExtraction(EPS_REFINED); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 87, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_REFINED, __pyx_t_4) < 0) __PYX_ERR(14, 87, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":88
  *     HARMONIC_LARGEST  = EPS_HARMONIC_LARGEST
@@ -58142,10 +60915,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class EPSBalance(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSExtraction(EPS_REFINED_HARMONIC); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 88, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_REFINED_HARMONIC, __pyx_t_5) < 0) __PYX_ERR(13, 88, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSExtraction(EPS_REFINED_HARMONIC); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 88, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_REFINED_HARMONIC, __pyx_t_4) < 0) __PYX_ERR(14, 88, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":70
  *     GHIEP  = EPS_GHIEP
@@ -58154,10 +60927,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS extraction technique
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_EPSExtraction, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 70, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSExtraction, __pyx_t_5) < 0) __PYX_ERR(13, 70, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_EPSExtraction, __pyx_tuple__23, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 70, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSExtraction, __pyx_t_4) < 0) __PYX_ERR(14, 70, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -58169,15 +60941,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS type of balancing used for non-Hermitian problems
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 90, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__24); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 90, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 90, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__24, __pyx_n_s_EPSBalance, __pyx_n_s_EPSBalance, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_type_of_balancing_used_for); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 90, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_EPSBalance, __pyx_n_s_EPSBalance, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_type_of_balancing_used_for); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 90, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/EPS.pyx":99
  *     - `USER`:     User-defined.
@@ -58186,10 +60953,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ONESIDE = EPS_BALANCE_ONESIDE
  *     TWOSIDE = EPS_BALANCE_TWOSIDE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSBalance(EPS_BALANCE_NONE); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 99, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NONE, __pyx_t_5) < 0) __PYX_ERR(13, 99, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSBalance(EPS_BALANCE_NONE); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NONE, __pyx_t_4) < 0) __PYX_ERR(14, 99, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":100
  *     """
@@ -58198,10 +60965,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TWOSIDE = EPS_BALANCE_TWOSIDE
  *     USER    = EPS_BALANCE_USER
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSBalance(EPS_BALANCE_ONESIDE); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 100, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ONESIDE, __pyx_t_5) < 0) __PYX_ERR(13, 100, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSBalance(EPS_BALANCE_ONESIDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 100, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ONESIDE, __pyx_t_4) < 0) __PYX_ERR(14, 100, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":101
  *     NONE    = EPS_BALANCE_NONE
@@ -58210,10 +60977,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     USER    = EPS_BALANCE_USER
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSBalance(EPS_BALANCE_TWOSIDE); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 101, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TWOSIDE, __pyx_t_5) < 0) __PYX_ERR(13, 101, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSBalance(EPS_BALANCE_TWOSIDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 101, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TWOSIDE, __pyx_t_4) < 0) __PYX_ERR(14, 101, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":102
  *     ONESIDE = EPS_BALANCE_ONESIDE
@@ -58222,10 +60989,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class EPSErrorType(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSBalance(EPS_BALANCE_USER); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 102, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_USER, __pyx_t_5) < 0) __PYX_ERR(13, 102, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSBalance(EPS_BALANCE_USER); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_USER, __pyx_t_4) < 0) __PYX_ERR(14, 102, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":90
  *     REFINED_HARMONIC  = EPS_REFINED_HARMONIC
@@ -58234,10 +61001,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS type of balancing used for non-Hermitian problems
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_EPSBalance, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 90, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSBalance, __pyx_t_5) < 0) __PYX_ERR(13, 90, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_EPSBalance, __pyx_tuple__24, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 90, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSBalance, __pyx_t_4) < 0) __PYX_ERR(14, 90, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -58249,15 +61015,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS error type to assess accuracy of computed solutions
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 104, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__25); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 104, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 104, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__25, __pyx_n_s_EPSErrorType, __pyx_n_s_EPSErrorType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_error_type_to_assess_accura); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 104, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_EPSErrorType, __pyx_n_s_EPSErrorType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_error_type_to_assess_accura); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 104, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/EPS.pyx":112
  *     - `BACKWARD`:  Backward error.
@@ -58266,10 +61027,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     RELATIVE = EPS_ERROR_RELATIVE
  *     BACKWARD = EPS_ERROR_BACKWARD
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSErrorType(EPS_ERROR_ABSOLUTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 112, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ABSOLUTE, __pyx_t_5) < 0) __PYX_ERR(13, 112, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSErrorType(EPS_ERROR_ABSOLUTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 112, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ABSOLUTE, __pyx_t_4) < 0) __PYX_ERR(14, 112, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":113
  *     """
@@ -58278,10 +61039,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     BACKWARD = EPS_ERROR_BACKWARD
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSErrorType(EPS_ERROR_RELATIVE); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 113, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RELATIVE, __pyx_t_5) < 0) __PYX_ERR(13, 113, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSErrorType(EPS_ERROR_RELATIVE); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 113, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_RELATIVE, __pyx_t_4) < 0) __PYX_ERR(14, 113, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":114
  *     ABSOLUTE = EPS_ERROR_ABSOLUTE
@@ -58290,10 +61051,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class EPSWhich(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSErrorType(EPS_ERROR_BACKWARD); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 114, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_BACKWARD, __pyx_t_5) < 0) __PYX_ERR(13, 114, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSErrorType(EPS_ERROR_BACKWARD); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 114, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_BACKWARD, __pyx_t_4) < 0) __PYX_ERR(14, 114, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":104
  *     USER    = EPS_BALANCE_USER
@@ -58302,10 +61063,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS error type to assess accuracy of computed solutions
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_EPSErrorType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 104, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSErrorType, __pyx_t_5) < 0) __PYX_ERR(13, 104, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_EPSErrorType, __pyx_tuple__25, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 104, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSErrorType, __pyx_t_4) < 0) __PYX_ERR(14, 104, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -58317,15 +61077,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS desired piece of spectrum
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 116, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__26); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 116, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 116, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__26, __pyx_n_s_EPSWhich, __pyx_n_s_EPSWhich, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_desired_piece_of_spectrum_L); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 116, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_EPSWhich, __pyx_n_s_EPSWhich, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_desired_piece_of_spectrum_L); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 116, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/EPS.pyx":132
  *     - `USER`:               User defined ordering.
@@ -58334,10 +61089,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LARGEST_REAL       = EPS_LARGEST_REAL
  *     LARGEST_IMAGINARY  = EPS_LARGEST_IMAGINARY
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSWhich(EPS_LARGEST_MAGNITUDE); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 132, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LARGEST_MAGNITUDE, __pyx_t_5) < 0) __PYX_ERR(13, 132, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSWhich(EPS_LARGEST_MAGNITUDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 132, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LARGEST_MAGNITUDE, __pyx_t_4) < 0) __PYX_ERR(14, 132, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":133
  *     """
@@ -58346,10 +61101,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LARGEST_IMAGINARY  = EPS_LARGEST_IMAGINARY
  *     SMALLEST_MAGNITUDE = EPS_SMALLEST_MAGNITUDE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSWhich(EPS_LARGEST_REAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 133, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LARGEST_REAL, __pyx_t_5) < 0) __PYX_ERR(13, 133, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSWhich(EPS_LARGEST_REAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 133, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LARGEST_REAL, __pyx_t_4) < 0) __PYX_ERR(14, 133, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":134
  *     LARGEST_MAGNITUDE  = EPS_LARGEST_MAGNITUDE
@@ -58358,10 +61113,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SMALLEST_MAGNITUDE = EPS_SMALLEST_MAGNITUDE
  *     SMALLEST_REAL      = EPS_SMALLEST_REAL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSWhich(EPS_LARGEST_IMAGINARY); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 134, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LARGEST_IMAGINARY, __pyx_t_5) < 0) __PYX_ERR(13, 134, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSWhich(EPS_LARGEST_IMAGINARY); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 134, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LARGEST_IMAGINARY, __pyx_t_4) < 0) __PYX_ERR(14, 134, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":135
  *     LARGEST_REAL       = EPS_LARGEST_REAL
@@ -58370,10 +61125,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SMALLEST_REAL      = EPS_SMALLEST_REAL
  *     SMALLEST_IMAGINARY = EPS_SMALLEST_IMAGINARY
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSWhich(EPS_SMALLEST_MAGNITUDE); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 135, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SMALLEST_MAGNITUDE, __pyx_t_5) < 0) __PYX_ERR(13, 135, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSWhich(EPS_SMALLEST_MAGNITUDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 135, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SMALLEST_MAGNITUDE, __pyx_t_4) < 0) __PYX_ERR(14, 135, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":136
  *     LARGEST_IMAGINARY  = EPS_LARGEST_IMAGINARY
@@ -58382,10 +61137,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SMALLEST_IMAGINARY = EPS_SMALLEST_IMAGINARY
  *     TARGET_MAGNITUDE   = EPS_TARGET_MAGNITUDE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSWhich(EPS_SMALLEST_REAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 136, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SMALLEST_REAL, __pyx_t_5) < 0) __PYX_ERR(13, 136, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSWhich(EPS_SMALLEST_REAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 136, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SMALLEST_REAL, __pyx_t_4) < 0) __PYX_ERR(14, 136, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":137
  *     SMALLEST_MAGNITUDE = EPS_SMALLEST_MAGNITUDE
@@ -58394,10 +61149,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TARGET_MAGNITUDE   = EPS_TARGET_MAGNITUDE
  *     TARGET_REAL        = EPS_TARGET_REAL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSWhich(EPS_SMALLEST_IMAGINARY); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 137, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SMALLEST_IMAGINARY, __pyx_t_5) < 0) __PYX_ERR(13, 137, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSWhich(EPS_SMALLEST_IMAGINARY); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 137, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SMALLEST_IMAGINARY, __pyx_t_4) < 0) __PYX_ERR(14, 137, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":138
  *     SMALLEST_REAL      = EPS_SMALLEST_REAL
@@ -58406,10 +61161,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TARGET_REAL        = EPS_TARGET_REAL
  *     TARGET_IMAGINARY   = EPS_TARGET_IMAGINARY
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSWhich(EPS_TARGET_MAGNITUDE); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 138, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TARGET_MAGNITUDE, __pyx_t_5) < 0) __PYX_ERR(13, 138, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSWhich(EPS_TARGET_MAGNITUDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 138, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TARGET_MAGNITUDE, __pyx_t_4) < 0) __PYX_ERR(14, 138, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":139
  *     SMALLEST_IMAGINARY = EPS_SMALLEST_IMAGINARY
@@ -58418,10 +61173,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TARGET_IMAGINARY   = EPS_TARGET_IMAGINARY
  *     ALL                = EPS_ALL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSWhich(EPS_TARGET_REAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 139, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TARGET_REAL, __pyx_t_5) < 0) __PYX_ERR(13, 139, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSWhich(EPS_TARGET_REAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TARGET_REAL, __pyx_t_4) < 0) __PYX_ERR(14, 139, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":140
  *     TARGET_MAGNITUDE   = EPS_TARGET_MAGNITUDE
@@ -58430,10 +61185,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ALL                = EPS_ALL
  *     USER               = EPS_WHICH_USER
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSWhich(EPS_TARGET_IMAGINARY); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 140, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TARGET_IMAGINARY, __pyx_t_5) < 0) __PYX_ERR(13, 140, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSWhich(EPS_TARGET_IMAGINARY); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 140, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TARGET_IMAGINARY, __pyx_t_4) < 0) __PYX_ERR(14, 140, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":141
  *     TARGET_REAL        = EPS_TARGET_REAL
@@ -58442,10 +61197,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     USER               = EPS_WHICH_USER
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSWhich(EPS_ALL); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 141, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ALL, __pyx_t_5) < 0) __PYX_ERR(13, 141, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSWhich(EPS_ALL); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 141, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ALL, __pyx_t_4) < 0) __PYX_ERR(14, 141, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":142
  *     TARGET_IMAGINARY   = EPS_TARGET_IMAGINARY
@@ -58454,10 +61209,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class EPSConv(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSWhich(EPS_WHICH_USER); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 142, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_USER, __pyx_t_5) < 0) __PYX_ERR(13, 142, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSWhich(EPS_WHICH_USER); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 142, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_USER, __pyx_t_4) < 0) __PYX_ERR(14, 142, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":116
  *     BACKWARD = EPS_ERROR_BACKWARD
@@ -58466,10 +61221,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS desired piece of spectrum
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_EPSWhich, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 116, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSWhich, __pyx_t_5) < 0) __PYX_ERR(13, 116, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_EPSWhich, __pyx_tuple__26, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 116, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSWhich, __pyx_t_4) < 0) __PYX_ERR(14, 116, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -58481,15 +61235,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS convergence test
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 144, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__27); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 144, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 144, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__27, __pyx_n_s_EPSConv, __pyx_n_s_EPSConv, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_convergence_test_ABS_REL_NO); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 144, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_EPSConv, __pyx_n_s_EPSConv, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_convergence_test_ABS_REL_NO); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 144, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/EPS.pyx":153
  *     - `USER`:
@@ -58498,10 +61247,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     REL  = EPS_CONV_REL
  *     NORM = EPS_CONV_NORM
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSConv(EPS_CONV_ABS); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 153, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ABS, __pyx_t_5) < 0) __PYX_ERR(13, 153, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSConv(EPS_CONV_ABS); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 153, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ABS, __pyx_t_4) < 0) __PYX_ERR(14, 153, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":154
  *     """
@@ -58510,10 +61259,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     NORM = EPS_CONV_NORM
  *     USER = EPS_CONV_USER
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSConv(EPS_CONV_REL); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 154, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_REL, __pyx_t_5) < 0) __PYX_ERR(13, 154, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSConv(EPS_CONV_REL); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 154, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_REL, __pyx_t_4) < 0) __PYX_ERR(14, 154, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":155
  *     ABS  = EPS_CONV_ABS
@@ -58522,10 +61271,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     USER = EPS_CONV_USER
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSConv(EPS_CONV_NORM); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 155, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NORM, __pyx_t_5) < 0) __PYX_ERR(13, 155, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSConv(EPS_CONV_NORM); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 155, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NORM, __pyx_t_4) < 0) __PYX_ERR(14, 155, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":156
  *     REL  = EPS_CONV_REL
@@ -58534,10 +61283,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class EPSConvergedReason(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSConv(EPS_CONV_USER); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 156, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_USER, __pyx_t_5) < 0) __PYX_ERR(13, 156, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSConv(EPS_CONV_USER); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 156, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_USER, __pyx_t_4) < 0) __PYX_ERR(14, 156, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":144
  *     USER               = EPS_WHICH_USER
@@ -58546,10 +61295,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS convergence test
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_EPSConv, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 144, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSConv, __pyx_t_5) < 0) __PYX_ERR(13, 144, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_EPSConv, __pyx_tuple__27, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 144, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSConv, __pyx_t_4) < 0) __PYX_ERR(14, 144, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -58561,15 +61309,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS convergence reasons
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 158, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__28); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 158, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 158, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__28, __pyx_n_s_EPSConvergedReason, __pyx_n_s_EPSConvergedReason, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_convergence_reasons_CONVERG); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 158, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_EPSConvergedReason, __pyx_n_s_EPSConvergedReason, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_convergence_reasons_CONVERG); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 158, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/EPS.pyx":169
  *     - `CONVERGED_ITERATING`:
@@ -58578,10 +61321,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_USER         = EPS_CONVERGED_USER
  *     DIVERGED_ITS           = EPS_DIVERGED_ITS
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSConvergedReason(EPS_CONVERGED_TOL); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 169, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_TOL, __pyx_t_5) < 0) __PYX_ERR(13, 169, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSConvergedReason(EPS_CONVERGED_TOL); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 169, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_TOL, __pyx_t_4) < 0) __PYX_ERR(14, 169, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":170
  *     """
@@ -58590,10 +61333,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVERGED_ITS           = EPS_DIVERGED_ITS
  *     DIVERGED_BREAKDOWN     = EPS_DIVERGED_BREAKDOWN
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSConvergedReason(EPS_CONVERGED_USER); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 170, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_USER, __pyx_t_5) < 0) __PYX_ERR(13, 170, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSConvergedReason(EPS_CONVERGED_USER); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 170, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_USER, __pyx_t_4) < 0) __PYX_ERR(14, 170, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":171
  *     CONVERGED_TOL          = EPS_CONVERGED_TOL
@@ -58602,10 +61345,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVERGED_BREAKDOWN     = EPS_DIVERGED_BREAKDOWN
  *     DIVERGED_SYMMETRY_LOST = EPS_DIVERGED_SYMMETRY_LOST
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSConvergedReason(EPS_DIVERGED_ITS); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 171, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVERGED_ITS, __pyx_t_5) < 0) __PYX_ERR(13, 171, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSConvergedReason(EPS_DIVERGED_ITS); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 171, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVERGED_ITS, __pyx_t_4) < 0) __PYX_ERR(14, 171, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":172
  *     CONVERGED_USER         = EPS_CONVERGED_USER
@@ -58614,10 +61357,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVERGED_SYMMETRY_LOST = EPS_DIVERGED_SYMMETRY_LOST
  *     CONVERGED_ITERATING    = EPS_CONVERGED_ITERATING
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSConvergedReason(EPS_DIVERGED_BREAKDOWN); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 172, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVERGED_BREAKDOWN, __pyx_t_5) < 0) __PYX_ERR(13, 172, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSConvergedReason(EPS_DIVERGED_BREAKDOWN); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 172, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVERGED_BREAKDOWN, __pyx_t_4) < 0) __PYX_ERR(14, 172, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":173
  *     DIVERGED_ITS           = EPS_DIVERGED_ITS
@@ -58626,10 +61369,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_ITERATING    = EPS_CONVERGED_ITERATING
  *     ITERATING              = EPS_CONVERGED_ITERATING
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSConvergedReason(EPS_DIVERGED_SYMMETRY_LOST); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 173, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVERGED_SYMMETRY_LOST, __pyx_t_5) < 0) __PYX_ERR(13, 173, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSConvergedReason(EPS_DIVERGED_SYMMETRY_LOST); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 173, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVERGED_SYMMETRY_LOST, __pyx_t_4) < 0) __PYX_ERR(14, 173, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":174
  *     DIVERGED_BREAKDOWN     = EPS_DIVERGED_BREAKDOWN
@@ -58638,10 +61381,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ITERATING              = EPS_CONVERGED_ITERATING
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSConvergedReason(EPS_CONVERGED_ITERATING); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 174, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_ITERATING, __pyx_t_5) < 0) __PYX_ERR(13, 174, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSConvergedReason(EPS_CONVERGED_ITERATING); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 174, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_ITERATING, __pyx_t_4) < 0) __PYX_ERR(14, 174, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":175
  *     DIVERGED_SYMMETRY_LOST = EPS_DIVERGED_SYMMETRY_LOST
@@ -58650,10 +61393,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class EPSPowerShiftType(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSConvergedReason(EPS_CONVERGED_ITERATING); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 175, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ITERATING, __pyx_t_5) < 0) __PYX_ERR(13, 175, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSConvergedReason(EPS_CONVERGED_ITERATING); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 175, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ITERATING, __pyx_t_4) < 0) __PYX_ERR(14, 175, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":158
  *     USER = EPS_CONV_USER
@@ -58662,10 +61405,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS convergence reasons
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_EPSConvergedReason, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 158, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSConvergedReason, __pyx_t_5) < 0) __PYX_ERR(13, 158, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_EPSConvergedReason, __pyx_tuple__28, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 158, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSConvergedReason, __pyx_t_4) < 0) __PYX_ERR(14, 158, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -58677,15 +61419,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS Power shift type.
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 177, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__29); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 177, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 177, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__29, __pyx_n_s_EPSPowerShiftType, __pyx_n_s_EPSPowerShiftType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_Power_shift_type_CONSTANT_R); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 177, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_EPSPowerShiftType, __pyx_n_s_EPSPowerShiftType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_Power_shift_type_CONSTANT_R); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 177, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/EPS.pyx":185
  *     - `WILKINSON`:
@@ -58694,10 +61431,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     RAYLEIGH  = EPS_POWER_SHIFT_RAYLEIGH
  *     WILKINSON = EPS_POWER_SHIFT_WILKINSON
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSPowerShiftType(EPS_POWER_SHIFT_CONSTANT); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 185, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONSTANT, __pyx_t_5) < 0) __PYX_ERR(13, 185, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSPowerShiftType(EPS_POWER_SHIFT_CONSTANT); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 185, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONSTANT, __pyx_t_4) < 0) __PYX_ERR(14, 185, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":186
  *     """
@@ -58706,10 +61443,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     WILKINSON = EPS_POWER_SHIFT_WILKINSON
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSPowerShiftType(EPS_POWER_SHIFT_RAYLEIGH); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 186, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RAYLEIGH, __pyx_t_5) < 0) __PYX_ERR(13, 186, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSPowerShiftType(EPS_POWER_SHIFT_RAYLEIGH); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 186, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_RAYLEIGH, __pyx_t_4) < 0) __PYX_ERR(14, 186, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":187
  *     CONSTANT  = EPS_POWER_SHIFT_CONSTANT
@@ -58718,10 +61455,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class EPSLanczosReorthogType(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSPowerShiftType(EPS_POWER_SHIFT_WILKINSON); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 187, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_WILKINSON, __pyx_t_5) < 0) __PYX_ERR(13, 187, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSPowerShiftType(EPS_POWER_SHIFT_WILKINSON); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 187, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_WILKINSON, __pyx_t_4) < 0) __PYX_ERR(14, 187, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":177
  *     ITERATING              = EPS_CONVERGED_ITERATING
@@ -58730,10 +61467,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS Power shift type.
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_EPSPowerShiftType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 177, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSPowerShiftType, __pyx_t_5) < 0) __PYX_ERR(13, 177, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_EPSPowerShiftType, __pyx_tuple__29, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 177, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSPowerShiftType, __pyx_t_4) < 0) __PYX_ERR(14, 177, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -58745,15 +61481,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS Lanczos reorthogonalization type
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 189, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__30); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 189, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 189, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__30, __pyx_n_s_EPSLanczosReorthogType, __pyx_n_s_EPSLanczosReorthogType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_Lanczos_reorthogonalization); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 189, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_EPSLanczosReorthogType, __pyx_n_s_EPSLanczosReorthogType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_EPS_Lanczos_reorthogonalization); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 189, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/EPS.pyx":200
  *     - `DELAYED`:
@@ -58762,10 +61493,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     FULL      =  EPS_LANCZOS_REORTHOG_FULL
  *     SELECTIVE =  EPS_LANCZOS_REORTHOG_SELECTIVE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSLanczosReorthogType(EPS_LANCZOS_REORTHOG_LOCAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 200, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LOCAL, __pyx_t_5) < 0) __PYX_ERR(13, 200, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSLanczosReorthogType(EPS_LANCZOS_REORTHOG_LOCAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 200, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LOCAL, __pyx_t_4) < 0) __PYX_ERR(14, 200, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":201
  *     """
@@ -58774,10 +61505,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SELECTIVE =  EPS_LANCZOS_REORTHOG_SELECTIVE
  *     PERIODIC  =  EPS_LANCZOS_REORTHOG_PERIODIC
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSLanczosReorthogType(EPS_LANCZOS_REORTHOG_FULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 201, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_FULL, __pyx_t_5) < 0) __PYX_ERR(13, 201, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSLanczosReorthogType(EPS_LANCZOS_REORTHOG_FULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 201, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_FULL, __pyx_t_4) < 0) __PYX_ERR(14, 201, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":202
  *     LOCAL     =  EPS_LANCZOS_REORTHOG_LOCAL
@@ -58786,10 +61517,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     PERIODIC  =  EPS_LANCZOS_REORTHOG_PERIODIC
  *     PARTIAL   =  EPS_LANCZOS_REORTHOG_PARTIAL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSLanczosReorthogType(EPS_LANCZOS_REORTHOG_SELECTIVE); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 202, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SELECTIVE, __pyx_t_5) < 0) __PYX_ERR(13, 202, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSLanczosReorthogType(EPS_LANCZOS_REORTHOG_SELECTIVE); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 202, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SELECTIVE, __pyx_t_4) < 0) __PYX_ERR(14, 202, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":203
  *     FULL      =  EPS_LANCZOS_REORTHOG_FULL
@@ -58798,10 +61529,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     PARTIAL   =  EPS_LANCZOS_REORTHOG_PARTIAL
  *     DELAYED   =  EPS_LANCZOS_REORTHOG_DELAYED
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSLanczosReorthogType(EPS_LANCZOS_REORTHOG_PERIODIC); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 203, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_PERIODIC, __pyx_t_5) < 0) __PYX_ERR(13, 203, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSLanczosReorthogType(EPS_LANCZOS_REORTHOG_PERIODIC); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 203, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_PERIODIC, __pyx_t_4) < 0) __PYX_ERR(14, 203, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":204
  *     SELECTIVE =  EPS_LANCZOS_REORTHOG_SELECTIVE
@@ -58810,10 +61541,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DELAYED   =  EPS_LANCZOS_REORTHOG_DELAYED
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSLanczosReorthogType(EPS_LANCZOS_REORTHOG_PARTIAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 204, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_PARTIAL, __pyx_t_5) < 0) __PYX_ERR(13, 204, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSLanczosReorthogType(EPS_LANCZOS_REORTHOG_PARTIAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 204, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_PARTIAL, __pyx_t_4) < 0) __PYX_ERR(14, 204, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":205
  *     PERIODIC  =  EPS_LANCZOS_REORTHOG_PERIODIC
@@ -58822,10 +61553,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_5 = __Pyx_PyInt_From_EPSLanczosReorthogType(EPS_LANCZOS_REORTHOG_DELAYED); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 205, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DELAYED, __pyx_t_5) < 0) __PYX_ERR(13, 205, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_EPSLanczosReorthogType(EPS_LANCZOS_REORTHOG_DELAYED); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 205, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DELAYED, __pyx_t_4) < 0) __PYX_ERR(14, 205, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/EPS.pyx":189
  *     WILKINSON = EPS_POWER_SHIFT_WILKINSON
@@ -58834,10 +61565,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     EPS Lanczos reorthogonalization type
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_EPSLanczosReorthogType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 189, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSLanczosReorthogType, __pyx_t_5) < 0) __PYX_ERR(13, 189, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_EPSLanczosReorthogType, __pyx_tuple__30, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 189, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EPSLanczosReorthogType, __pyx_t_4) < 0) __PYX_ERR(14, 189, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -58849,9 +61579,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ProblemType     = EPSProblemType
  *     Extraction      = EPSExtraction
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSType); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 215, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSType); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 215, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(13, 215, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(14, 215, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_EPS);
 
@@ -58862,9 +61592,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Extraction      = EPSExtraction
  *     Balance         = EPSBalance
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSProblemType); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 216, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSProblemType); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 216, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_ProblemType, __pyx_t_2) < 0) __PYX_ERR(13, 216, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_ProblemType, __pyx_t_2) < 0) __PYX_ERR(14, 216, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_EPS);
 
@@ -58875,9 +61605,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Balance         = EPSBalance
  *     ErrorType       = EPSErrorType
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSExtraction); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 217, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSExtraction); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 217, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_Extraction, __pyx_t_2) < 0) __PYX_ERR(13, 217, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_Extraction, __pyx_t_2) < 0) __PYX_ERR(14, 217, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_EPS);
 
@@ -58888,9 +61618,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ErrorType       = EPSErrorType
  *     Which           = EPSWhich
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSBalance); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 218, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSBalance); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 218, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_Balance, __pyx_t_2) < 0) __PYX_ERR(13, 218, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_Balance, __pyx_t_2) < 0) __PYX_ERR(14, 218, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_EPS);
 
@@ -58901,9 +61631,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Which           = EPSWhich
  *     Conv            = EPSConv
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSErrorType); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 219, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSErrorType); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 219, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_ErrorType, __pyx_t_2) < 0) __PYX_ERR(13, 219, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_ErrorType, __pyx_t_2) < 0) __PYX_ERR(14, 219, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_EPS);
 
@@ -58914,9 +61644,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Conv            = EPSConv
  *     ConvergedReason = EPSConvergedReason
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSWhich); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 220, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSWhich); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 220, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_Which, __pyx_t_2) < 0) __PYX_ERR(13, 220, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_Which, __pyx_t_2) < 0) __PYX_ERR(14, 220, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_EPS);
 
@@ -58927,9 +61657,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ConvergedReason = EPSConvergedReason
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSConv); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 221, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSConv); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 221, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_Conv, __pyx_t_2) < 0) __PYX_ERR(13, 221, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_Conv, __pyx_t_2) < 0) __PYX_ERR(14, 221, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_EPS);
 
@@ -58940,9 +61670,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  *     PowerShiftType      = EPSPowerShiftType
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSConvergedReason); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 222, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSConvergedReason); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 222, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_ConvergedReason, __pyx_t_2) < 0) __PYX_ERR(13, 222, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_ConvergedReason, __pyx_t_2) < 0) __PYX_ERR(14, 222, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_EPS);
 
@@ -58953,9 +61683,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LanczosReorthogType = EPSLanczosReorthogType
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSPowerShiftType); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 224, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSPowerShiftType); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 224, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_PowerShiftType, __pyx_t_2) < 0) __PYX_ERR(13, 224, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_PowerShiftType, __pyx_t_2) < 0) __PYX_ERR(14, 224, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_EPS);
 
@@ -58966,101 +61696,101 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  *     def __cinit__(self):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSLanczosReorthogType); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 225, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_EPSLanczosReorthogType); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 225, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_LanczosReorthogType, __pyx_t_2) < 0) __PYX_ERR(13, 225, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_EPS->tp_dict, __pyx_n_s_LanczosReorthogType, __pyx_t_2) < 0) __PYX_ERR(14, 225, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_EPS);
 
-  /* "SLEPc/EPS.pyx":1860
+  /* "SLEPc/EPS.pyx":1886
  * # -----------------------------------------------------------------------------
  * 
  * del EPSType             # <<<<<<<<<<<<<<
  * del EPSProblemType
  * del EPSExtraction
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSType) < 0) __PYX_ERR(13, 1860, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSType) < 0) __PYX_ERR(14, 1886, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1861
+  /* "SLEPc/EPS.pyx":1887
  * 
  * del EPSType
  * del EPSProblemType             # <<<<<<<<<<<<<<
  * del EPSExtraction
  * del EPSBalance
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSProblemType) < 0) __PYX_ERR(13, 1861, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSProblemType) < 0) __PYX_ERR(14, 1887, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1862
+  /* "SLEPc/EPS.pyx":1888
  * del EPSType
  * del EPSProblemType
  * del EPSExtraction             # <<<<<<<<<<<<<<
  * del EPSBalance
  * del EPSErrorType
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSExtraction) < 0) __PYX_ERR(13, 1862, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSExtraction) < 0) __PYX_ERR(14, 1888, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1863
+  /* "SLEPc/EPS.pyx":1889
  * del EPSProblemType
  * del EPSExtraction
  * del EPSBalance             # <<<<<<<<<<<<<<
  * del EPSErrorType
  * del EPSWhich
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSBalance) < 0) __PYX_ERR(13, 1863, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSBalance) < 0) __PYX_ERR(14, 1889, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1864
+  /* "SLEPc/EPS.pyx":1890
  * del EPSExtraction
  * del EPSBalance
  * del EPSErrorType             # <<<<<<<<<<<<<<
  * del EPSWhich
  * del EPSConv
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSErrorType) < 0) __PYX_ERR(13, 1864, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSErrorType) < 0) __PYX_ERR(14, 1890, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1865
+  /* "SLEPc/EPS.pyx":1891
  * del EPSBalance
  * del EPSErrorType
  * del EPSWhich             # <<<<<<<<<<<<<<
  * del EPSConv
  * del EPSConvergedReason
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSWhich) < 0) __PYX_ERR(13, 1865, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSWhich) < 0) __PYX_ERR(14, 1891, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1866
+  /* "SLEPc/EPS.pyx":1892
  * del EPSErrorType
  * del EPSWhich
  * del EPSConv             # <<<<<<<<<<<<<<
  * del EPSConvergedReason
  * del EPSPowerShiftType
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSConv) < 0) __PYX_ERR(13, 1866, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSConv) < 0) __PYX_ERR(14, 1892, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1867
+  /* "SLEPc/EPS.pyx":1893
  * del EPSWhich
  * del EPSConv
  * del EPSConvergedReason             # <<<<<<<<<<<<<<
  * del EPSPowerShiftType
  * del EPSLanczosReorthogType
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSConvergedReason) < 0) __PYX_ERR(13, 1867, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSConvergedReason) < 0) __PYX_ERR(14, 1893, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1868
+  /* "SLEPc/EPS.pyx":1894
  * del EPSConv
  * del EPSConvergedReason
  * del EPSPowerShiftType             # <<<<<<<<<<<<<<
  * del EPSLanczosReorthogType
  * 
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSPowerShiftType) < 0) __PYX_ERR(13, 1868, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSPowerShiftType) < 0) __PYX_ERR(14, 1894, __pyx_L1_error)
 
-  /* "SLEPc/EPS.pyx":1869
+  /* "SLEPc/EPS.pyx":1895
  * del EPSConvergedReason
  * del EPSPowerShiftType
  * del EPSLanczosReorthogType             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSLanczosReorthogType) < 0) __PYX_ERR(13, 1869, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_EPSLanczosReorthogType) < 0) __PYX_ERR(14, 1895, __pyx_L1_error)
 
   /* "SLEPc/SVD.pyx":3
  * # -----------------------------------------------------------------------------
@@ -59069,15 +61799,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     SVD types
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 3, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__31); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 3, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__31, __pyx_n_s_SVDType, __pyx_n_s_SVDType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_SVD_types_CROSS_Eigenproblem_wi); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_SVDType, __pyx_n_s_SVDType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_SVD_types_CROSS_Eigenproblem_wi); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/SVD.pyx":13
  *     - `TRLANCZOS`: Thick-restart Lanczos.
@@ -59086,10 +61811,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CYCLIC    = S_(SVDCYCLIC)
  *     LAPACK    = S_(SVDLAPACK)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(SVDCROSS); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 13, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CROSS, __pyx_t_5) < 0) __PYX_ERR(14, 13, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(SVDCROSS); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 13, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CROSS, __pyx_t_4) < 0) __PYX_ERR(15, 13, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":14
  *     """
@@ -59098,10 +61823,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LAPACK    = S_(SVDLAPACK)
  *     LANCZOS   = S_(SVDLANCZOS)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(SVDCYCLIC); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 14, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CYCLIC, __pyx_t_5) < 0) __PYX_ERR(14, 14, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(SVDCYCLIC); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 14, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CYCLIC, __pyx_t_4) < 0) __PYX_ERR(15, 14, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":15
  *     CROSS     = S_(SVDCROSS)
@@ -59110,10 +61835,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LANCZOS   = S_(SVDLANCZOS)
  *     TRLANCZOS = S_(SVDTRLANCZOS)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(SVDLAPACK); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 15, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LAPACK, __pyx_t_5) < 0) __PYX_ERR(14, 15, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(SVDLAPACK); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LAPACK, __pyx_t_4) < 0) __PYX_ERR(15, 15, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":16
  *     CYCLIC    = S_(SVDCYCLIC)
@@ -59122,10 +61847,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TRLANCZOS = S_(SVDTRLANCZOS)
  * 
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(SVDLANCZOS); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 16, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LANCZOS, __pyx_t_5) < 0) __PYX_ERR(14, 16, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(SVDLANCZOS); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LANCZOS, __pyx_t_4) < 0) __PYX_ERR(15, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":17
  *     LAPACK    = S_(SVDLAPACK)
@@ -59134,10 +61859,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class SVDErrorType(object):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(SVDTRLANCZOS); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 17, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TRLANCZOS, __pyx_t_5) < 0) __PYX_ERR(14, 17, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(SVDTRLANCZOS); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TRLANCZOS, __pyx_t_4) < 0) __PYX_ERR(15, 17, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":3
  * # -----------------------------------------------------------------------------
@@ -59146,10 +61871,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     SVD types
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_SVDType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SVDType, __pyx_t_5) < 0) __PYX_ERR(14, 3, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_SVDType, __pyx_tuple__31, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SVDType, __pyx_t_4) < 0) __PYX_ERR(15, 3, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -59161,15 +61885,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     SVD error type to assess accuracy of computed solutions
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 19, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__32); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 19, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 19, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__32, __pyx_n_s_SVDErrorType, __pyx_n_s_SVDErrorType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_SVD_error_type_to_assess_accura); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 19, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_SVDErrorType, __pyx_n_s_SVDErrorType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_SVD_error_type_to_assess_accura); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/SVD.pyx":26
  *     - `RELATIVE`:  Relative error.
@@ -59178,10 +61897,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     RELATIVE = SVD_ERROR_RELATIVE
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_SVDErrorType(SVD_ERROR_ABSOLUTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 26, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ABSOLUTE, __pyx_t_5) < 0) __PYX_ERR(14, 26, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_SVDErrorType(SVD_ERROR_ABSOLUTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 26, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ABSOLUTE, __pyx_t_4) < 0) __PYX_ERR(15, 26, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":27
  *     """
@@ -59190,10 +61909,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class SVDWhich(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_SVDErrorType(SVD_ERROR_RELATIVE); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 27, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RELATIVE, __pyx_t_5) < 0) __PYX_ERR(14, 27, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_SVDErrorType(SVD_ERROR_RELATIVE); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 27, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_RELATIVE, __pyx_t_4) < 0) __PYX_ERR(15, 27, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":19
  *     TRLANCZOS = S_(SVDTRLANCZOS)
@@ -59202,10 +61921,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     SVD error type to assess accuracy of computed solutions
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_SVDErrorType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SVDErrorType, __pyx_t_5) < 0) __PYX_ERR(14, 19, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_SVDErrorType, __pyx_tuple__32, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SVDErrorType, __pyx_t_4) < 0) __PYX_ERR(15, 19, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -59217,15 +61935,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     SVD desired piece of spectrum
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 29, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__33); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 29, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 29, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__33, __pyx_n_s_SVDWhich, __pyx_n_s_SVDWhich, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_SVD_desired_piece_of_spectrum_L); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 29, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_SVDWhich, __pyx_n_s_SVDWhich, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_SVD_desired_piece_of_spectrum_L); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 29, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/SVD.pyx":36
  *     - `SMALLEST`: smallest singular values.
@@ -59234,10 +61947,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SMALLEST = SVD_SMALLEST
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_SVDWhich(SVD_LARGEST); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 36, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LARGEST, __pyx_t_5) < 0) __PYX_ERR(14, 36, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_SVDWhich(SVD_LARGEST); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LARGEST, __pyx_t_4) < 0) __PYX_ERR(15, 36, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":37
  *     """
@@ -59246,10 +61959,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class SVDConvergedReason(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_SVDWhich(SVD_SMALLEST); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 37, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SMALLEST, __pyx_t_5) < 0) __PYX_ERR(14, 37, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_SVDWhich(SVD_SMALLEST); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 37, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SMALLEST, __pyx_t_4) < 0) __PYX_ERR(15, 37, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":29
  *     RELATIVE = SVD_ERROR_RELATIVE
@@ -59258,10 +61971,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     SVD desired piece of spectrum
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_SVDWhich, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 29, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SVDWhich, __pyx_t_5) < 0) __PYX_ERR(14, 29, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_SVDWhich, __pyx_tuple__33, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SVDWhich, __pyx_t_4) < 0) __PYX_ERR(15, 29, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -59273,15 +61985,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     SVD convergence reasons
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 39, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__34); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 39, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 39, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__34, __pyx_n_s_SVDConvergedReason, __pyx_n_s_SVDConvergedReason, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_SVD_convergence_reasons_CONVERG); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 39, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_SVDConvergedReason, __pyx_n_s_SVDConvergedReason, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_SVD_convergence_reasons_CONVERG); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 39, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/SVD.pyx":49
  *     - `CONVERGED_ITERATING`:
@@ -59290,10 +61997,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_USER      = SVD_CONVERGED_USER
  *     DIVERGED_ITS        = SVD_DIVERGED_ITS
  */
-  __pyx_t_5 = __Pyx_PyInt_From_SVDConvergedReason(SVD_CONVERGED_TOL); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 49, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_TOL, __pyx_t_5) < 0) __PYX_ERR(14, 49, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_SVDConvergedReason(SVD_CONVERGED_TOL); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 49, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_TOL, __pyx_t_4) < 0) __PYX_ERR(15, 49, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":50
  *     """
@@ -59302,10 +62009,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVERGED_ITS        = SVD_DIVERGED_ITS
  *     DIVERGED_BREAKDOWN  = SVD_DIVERGED_BREAKDOWN
  */
-  __pyx_t_5 = __Pyx_PyInt_From_SVDConvergedReason(SVD_CONVERGED_USER); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 50, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_USER, __pyx_t_5) < 0) __PYX_ERR(14, 50, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_SVDConvergedReason(SVD_CONVERGED_USER); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 50, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_USER, __pyx_t_4) < 0) __PYX_ERR(15, 50, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":51
  *     CONVERGED_TOL       = SVD_CONVERGED_TOL
@@ -59314,10 +62021,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVERGED_BREAKDOWN  = SVD_DIVERGED_BREAKDOWN
  *     CONVERGED_ITERATING = SVD_CONVERGED_ITERATING
  */
-  __pyx_t_5 = __Pyx_PyInt_From_SVDConvergedReason(SVD_DIVERGED_ITS); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 51, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVERGED_ITS, __pyx_t_5) < 0) __PYX_ERR(14, 51, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_SVDConvergedReason(SVD_DIVERGED_ITS); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVERGED_ITS, __pyx_t_4) < 0) __PYX_ERR(15, 51, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":52
  *     CONVERGED_USER      = SVD_CONVERGED_USER
@@ -59326,10 +62033,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_ITERATING = SVD_CONVERGED_ITERATING
  *     ITERATING           = SVD_CONVERGED_ITERATING
  */
-  __pyx_t_5 = __Pyx_PyInt_From_SVDConvergedReason(SVD_DIVERGED_BREAKDOWN); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 52, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVERGED_BREAKDOWN, __pyx_t_5) < 0) __PYX_ERR(14, 52, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_SVDConvergedReason(SVD_DIVERGED_BREAKDOWN); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVERGED_BREAKDOWN, __pyx_t_4) < 0) __PYX_ERR(15, 52, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":53
  *     DIVERGED_ITS        = SVD_DIVERGED_ITS
@@ -59338,10 +62045,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ITERATING           = SVD_CONVERGED_ITERATING
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_SVDConvergedReason(SVD_CONVERGED_ITERATING); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 53, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_ITERATING, __pyx_t_5) < 0) __PYX_ERR(14, 53, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_SVDConvergedReason(SVD_CONVERGED_ITERATING); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 53, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_ITERATING, __pyx_t_4) < 0) __PYX_ERR(15, 53, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":54
  *     DIVERGED_BREAKDOWN  = SVD_DIVERGED_BREAKDOWN
@@ -59350,10 +62057,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_5 = __Pyx_PyInt_From_SVDConvergedReason(SVD_CONVERGED_ITERATING); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 54, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ITERATING, __pyx_t_5) < 0) __PYX_ERR(14, 54, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_SVDConvergedReason(SVD_CONVERGED_ITERATING); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 54, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ITERATING, __pyx_t_4) < 0) __PYX_ERR(15, 54, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/SVD.pyx":39
  *     SMALLEST = SVD_SMALLEST
@@ -59362,10 +62069,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     SVD convergence reasons
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_SVDConvergedReason, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 39, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SVDConvergedReason, __pyx_t_5) < 0) __PYX_ERR(14, 39, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_SVDConvergedReason, __pyx_tuple__34, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 39, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SVDConvergedReason, __pyx_t_4) < 0) __PYX_ERR(15, 39, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -59377,9 +62083,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ErrorType       = SVDErrorType
  *     Which           = SVDWhich
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_SVDType); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 64, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_SVDType); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 64, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_SVD->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(14, 64, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_SVD->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(15, 64, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_SVD);
 
@@ -59390,9 +62096,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Which           = SVDWhich
  *     ConvergedReason = SVDConvergedReason
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_SVDErrorType); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 65, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_SVDErrorType); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 65, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_SVD->tp_dict, __pyx_n_s_ErrorType, __pyx_t_2) < 0) __PYX_ERR(14, 65, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_SVD->tp_dict, __pyx_n_s_ErrorType, __pyx_t_2) < 0) __PYX_ERR(15, 65, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_SVD);
 
@@ -59403,9 +62109,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ConvergedReason = SVDConvergedReason
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_SVDWhich); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 66, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_SVDWhich); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 66, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_SVD->tp_dict, __pyx_n_s_Which, __pyx_t_2) < 0) __PYX_ERR(14, 66, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_SVD->tp_dict, __pyx_n_s_Which, __pyx_t_2) < 0) __PYX_ERR(15, 66, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_SVD);
 
@@ -59416,47 +62122,47 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  *     def __cinit__(self):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_SVDConvergedReason); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 67, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_SVDConvergedReason); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 67, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_SVD->tp_dict, __pyx_n_s_ConvergedReason, __pyx_t_2) < 0) __PYX_ERR(14, 67, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_SVD->tp_dict, __pyx_n_s_ConvergedReason, __pyx_t_2) < 0) __PYX_ERR(15, 67, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_SVD);
 
-  /* "SLEPc/SVD.pyx":846
+  /* "SLEPc/SVD.pyx":851
  * # -----------------------------------------------------------------------------
  * 
  * del SVDType             # <<<<<<<<<<<<<<
  * del SVDErrorType
  * del SVDWhich
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_SVDType) < 0) __PYX_ERR(14, 846, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_SVDType) < 0) __PYX_ERR(15, 851, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":847
+  /* "SLEPc/SVD.pyx":852
  * 
  * del SVDType
  * del SVDErrorType             # <<<<<<<<<<<<<<
  * del SVDWhich
  * del SVDConvergedReason
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_SVDErrorType) < 0) __PYX_ERR(14, 847, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_SVDErrorType) < 0) __PYX_ERR(15, 852, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":848
+  /* "SLEPc/SVD.pyx":853
  * del SVDType
  * del SVDErrorType
  * del SVDWhich             # <<<<<<<<<<<<<<
  * del SVDConvergedReason
  * 
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_SVDWhich) < 0) __PYX_ERR(14, 848, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_SVDWhich) < 0) __PYX_ERR(15, 853, __pyx_L1_error)
 
-  /* "SLEPc/SVD.pyx":849
+  /* "SLEPc/SVD.pyx":854
  * del SVDErrorType
  * del SVDWhich
  * del SVDConvergedReason             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_SVDConvergedReason) < 0) __PYX_ERR(14, 849, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_SVDConvergedReason) < 0) __PYX_ERR(15, 854, __pyx_L1_error)
 
   /* "SLEPc/PEP.pyx":3
  * # -----------------------------------------------------------------------------
@@ -59465,15 +62171,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP type
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 3, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__35); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 3, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__35, __pyx_n_s_PEPType, __pyx_n_s_PEPType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_type_Polynomial_eigensolver); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PEPType, __pyx_n_s_PEPType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_type_Polynomial_eigensolver); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/PEP.pyx":15
  *     - `JD`:           Polynomial Jacobi-Davidson.
@@ -59482,10 +62183,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     QARNOLDI = S_(PEPQARNOLDI)
  *     TOAR     = S_(PEPTOAR)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(PEPLINEAR); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 15, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LINEAR, __pyx_t_5) < 0) __PYX_ERR(15, 15, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(PEPLINEAR); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LINEAR, __pyx_t_4) < 0) __PYX_ERR(16, 15, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":16
  *     """
@@ -59494,10 +62195,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TOAR     = S_(PEPTOAR)
  *     STOAR    = S_(PEPSTOAR)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(PEPQARNOLDI); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 16, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_QARNOLDI, __pyx_t_5) < 0) __PYX_ERR(15, 16, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(PEPQARNOLDI); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_QARNOLDI, __pyx_t_4) < 0) __PYX_ERR(16, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":17
  *     LINEAR   = S_(PEPLINEAR)
@@ -59506,10 +62207,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     STOAR    = S_(PEPSTOAR)
  *     JD       = S_(PEPJD)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(PEPTOAR); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 17, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TOAR, __pyx_t_5) < 0) __PYX_ERR(15, 17, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(PEPTOAR); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TOAR, __pyx_t_4) < 0) __PYX_ERR(16, 17, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":18
  *     QARNOLDI = S_(PEPQARNOLDI)
@@ -59518,10 +62219,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     JD       = S_(PEPJD)
  * 
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(PEPSTOAR); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 18, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_STOAR, __pyx_t_5) < 0) __PYX_ERR(15, 18, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(PEPSTOAR); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 18, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_STOAR, __pyx_t_4) < 0) __PYX_ERR(16, 18, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":19
  *     TOAR     = S_(PEPTOAR)
@@ -59530,10 +62231,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class PEPProblemType(object):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(PEPJD); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_JD, __pyx_t_5) < 0) __PYX_ERR(15, 19, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(PEPJD); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_JD, __pyx_t_4) < 0) __PYX_ERR(16, 19, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":3
  * # -----------------------------------------------------------------------------
@@ -59542,10 +62243,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP type
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PEPType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPType, __pyx_t_5) < 0) __PYX_ERR(15, 3, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PEPType, __pyx_tuple__35, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPType, __pyx_t_4) < 0) __PYX_ERR(16, 3, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -59557,15 +62257,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP problem type
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 21, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__36); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 21, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 21, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__36, __pyx_n_s_PEPProblemType, __pyx_n_s_PEPProblemType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_problem_type_GENERAL_No_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 21, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PEPProblemType, __pyx_n_s_PEPProblemType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_problem_type_GENERAL_No_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 21, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/PEP.pyx":29
  *     - `GYROSCOPIC`:   Hamiltonian structure.
@@ -59574,10 +62269,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     HERMITIAN  = PEP_HERMITIAN
  *     GYROSCOPIC = PEP_GYROSCOPIC
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPProblemType(PEP_GENERAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 29, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_GENERAL, __pyx_t_5) < 0) __PYX_ERR(15, 29, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPProblemType(PEP_GENERAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_GENERAL, __pyx_t_4) < 0) __PYX_ERR(16, 29, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":30
  *     """
@@ -59586,10 +62281,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     GYROSCOPIC = PEP_GYROSCOPIC
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPProblemType(PEP_HERMITIAN); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 30, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_HERMITIAN, __pyx_t_5) < 0) __PYX_ERR(15, 30, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPProblemType(PEP_HERMITIAN); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 30, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_HERMITIAN, __pyx_t_4) < 0) __PYX_ERR(16, 30, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":31
  *     GENERAL    = PEP_GENERAL
@@ -59598,10 +62293,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class PEPWhich(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPProblemType(PEP_GYROSCOPIC); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 31, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_GYROSCOPIC, __pyx_t_5) < 0) __PYX_ERR(15, 31, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPProblemType(PEP_GYROSCOPIC); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 31, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_GYROSCOPIC, __pyx_t_4) < 0) __PYX_ERR(16, 31, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":21
  *     JD       = S_(PEPJD)
@@ -59610,10 +62305,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP problem type
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PEPProblemType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 21, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPProblemType, __pyx_t_5) < 0) __PYX_ERR(15, 21, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PEPProblemType, __pyx_tuple__36, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPProblemType, __pyx_t_4) < 0) __PYX_ERR(16, 21, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -59625,15 +62319,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP desired part of spectrum
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 33, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__37); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 33, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 33, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__37, __pyx_n_s_PEPWhich, __pyx_n_s_PEPWhich, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_desired_part_of_spectrum_LA); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 33, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PEPWhich, __pyx_n_s_PEPWhich, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_desired_part_of_spectrum_LA); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 33, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/PEP.pyx":48
  *     - `USER`:               User-defined criterion.
@@ -59642,10 +62331,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SMALLEST_MAGNITUDE = PEP_SMALLEST_MAGNITUDE
  *     LARGEST_REAL       = PEP_LARGEST_REAL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPWhich(PEP_LARGEST_MAGNITUDE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 48, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LARGEST_MAGNITUDE, __pyx_t_5) < 0) __PYX_ERR(15, 48, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPWhich(PEP_LARGEST_MAGNITUDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LARGEST_MAGNITUDE, __pyx_t_4) < 0) __PYX_ERR(16, 48, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":49
  *     """
@@ -59654,10 +62343,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LARGEST_REAL       = PEP_LARGEST_REAL
  *     SMALLEST_REAL      = PEP_SMALLEST_REAL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPWhich(PEP_SMALLEST_MAGNITUDE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 49, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SMALLEST_MAGNITUDE, __pyx_t_5) < 0) __PYX_ERR(15, 49, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPWhich(PEP_SMALLEST_MAGNITUDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 49, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SMALLEST_MAGNITUDE, __pyx_t_4) < 0) __PYX_ERR(16, 49, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":50
  *     LARGEST_MAGNITUDE  = PEP_LARGEST_MAGNITUDE
@@ -59666,10 +62355,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SMALLEST_REAL      = PEP_SMALLEST_REAL
  *     LARGEST_IMAGINARY  = PEP_LARGEST_IMAGINARY
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPWhich(PEP_LARGEST_REAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 50, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LARGEST_REAL, __pyx_t_5) < 0) __PYX_ERR(15, 50, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPWhich(PEP_LARGEST_REAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 50, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LARGEST_REAL, __pyx_t_4) < 0) __PYX_ERR(16, 50, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":51
  *     SMALLEST_MAGNITUDE = PEP_SMALLEST_MAGNITUDE
@@ -59678,10 +62367,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LARGEST_IMAGINARY  = PEP_LARGEST_IMAGINARY
  *     SMALLEST_IMAGINARY = PEP_SMALLEST_IMAGINARY
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPWhich(PEP_SMALLEST_REAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 51, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SMALLEST_REAL, __pyx_t_5) < 0) __PYX_ERR(15, 51, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPWhich(PEP_SMALLEST_REAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SMALLEST_REAL, __pyx_t_4) < 0) __PYX_ERR(16, 51, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":52
  *     LARGEST_REAL       = PEP_LARGEST_REAL
@@ -59690,10 +62379,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SMALLEST_IMAGINARY = PEP_SMALLEST_IMAGINARY
  *     TARGET_MAGNITUDE   = PEP_TARGET_MAGNITUDE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPWhich(PEP_LARGEST_IMAGINARY); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 52, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LARGEST_IMAGINARY, __pyx_t_5) < 0) __PYX_ERR(15, 52, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPWhich(PEP_LARGEST_IMAGINARY); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LARGEST_IMAGINARY, __pyx_t_4) < 0) __PYX_ERR(16, 52, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":53
  *     SMALLEST_REAL      = PEP_SMALLEST_REAL
@@ -59702,10 +62391,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TARGET_MAGNITUDE   = PEP_TARGET_MAGNITUDE
  *     TARGET_REAL        = PEP_TARGET_REAL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPWhich(PEP_SMALLEST_IMAGINARY); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 53, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SMALLEST_IMAGINARY, __pyx_t_5) < 0) __PYX_ERR(15, 53, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPWhich(PEP_SMALLEST_IMAGINARY); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 53, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SMALLEST_IMAGINARY, __pyx_t_4) < 0) __PYX_ERR(16, 53, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":54
  *     LARGEST_IMAGINARY  = PEP_LARGEST_IMAGINARY
@@ -59714,10 +62403,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TARGET_REAL        = PEP_TARGET_REAL
  *     TARGET_IMAGINARY   = PEP_TARGET_IMAGINARY
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPWhich(PEP_TARGET_MAGNITUDE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 54, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TARGET_MAGNITUDE, __pyx_t_5) < 0) __PYX_ERR(15, 54, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPWhich(PEP_TARGET_MAGNITUDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 54, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TARGET_MAGNITUDE, __pyx_t_4) < 0) __PYX_ERR(16, 54, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":55
  *     SMALLEST_IMAGINARY = PEP_SMALLEST_IMAGINARY
@@ -59726,10 +62415,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TARGET_IMAGINARY   = PEP_TARGET_IMAGINARY
  *     USER               = PEP_WHICH_USER
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPWhich(PEP_TARGET_REAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 55, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TARGET_REAL, __pyx_t_5) < 0) __PYX_ERR(15, 55, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPWhich(PEP_TARGET_REAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 55, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TARGET_REAL, __pyx_t_4) < 0) __PYX_ERR(16, 55, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":56
  *     TARGET_MAGNITUDE   = PEP_TARGET_MAGNITUDE
@@ -59738,10 +62427,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     USER               = PEP_WHICH_USER
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPWhich(PEP_TARGET_IMAGINARY); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 56, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TARGET_IMAGINARY, __pyx_t_5) < 0) __PYX_ERR(15, 56, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPWhich(PEP_TARGET_IMAGINARY); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TARGET_IMAGINARY, __pyx_t_4) < 0) __PYX_ERR(16, 56, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":57
  *     TARGET_REAL        = PEP_TARGET_REAL
@@ -59750,10 +62439,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class PEPBasis(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPWhich(PEP_WHICH_USER); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 57, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_USER, __pyx_t_5) < 0) __PYX_ERR(15, 57, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPWhich(PEP_WHICH_USER); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_USER, __pyx_t_4) < 0) __PYX_ERR(16, 57, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":33
  *     GYROSCOPIC = PEP_GYROSCOPIC
@@ -59762,10 +62451,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP desired part of spectrum
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PEPWhich, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 33, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPWhich, __pyx_t_5) < 0) __PYX_ERR(15, 33, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PEPWhich, __pyx_tuple__37, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPWhich, __pyx_t_4) < 0) __PYX_ERR(16, 33, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -59777,15 +62465,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     MONOMIAL   = PEP_BASIS_MONOMIAL
  *     CHEBYSHEV1 = PEP_BASIS_CHEBYSHEV1
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 59, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__38); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 59, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 59, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__38, __pyx_n_s_PEPBasis, __pyx_n_s_PEPBasis, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 59, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PEPBasis, __pyx_n_s_PEPBasis, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 59, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/PEP.pyx":60
  * 
@@ -59794,10 +62477,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CHEBYSHEV1 = PEP_BASIS_CHEBYSHEV1
  *     CHEBYSHEV2 = PEP_BASIS_CHEBYSHEV2
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPBasis(PEP_BASIS_MONOMIAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 60, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_MONOMIAL, __pyx_t_5) < 0) __PYX_ERR(15, 60, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPBasis(PEP_BASIS_MONOMIAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 60, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_MONOMIAL, __pyx_t_4) < 0) __PYX_ERR(16, 60, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":61
  * class PEPBasis(object):
@@ -59806,10 +62489,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CHEBYSHEV2 = PEP_BASIS_CHEBYSHEV2
  *     LEGENDRE   = PEP_BASIS_LEGENDRE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPBasis(PEP_BASIS_CHEBYSHEV1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 61, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CHEBYSHEV1, __pyx_t_5) < 0) __PYX_ERR(15, 61, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPBasis(PEP_BASIS_CHEBYSHEV1); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 61, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CHEBYSHEV1, __pyx_t_4) < 0) __PYX_ERR(16, 61, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":62
  *     MONOMIAL   = PEP_BASIS_MONOMIAL
@@ -59818,10 +62501,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LEGENDRE   = PEP_BASIS_LEGENDRE
  *     LAGUERRE   = PEP_BASIS_LAGUERRE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPBasis(PEP_BASIS_CHEBYSHEV2); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 62, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CHEBYSHEV2, __pyx_t_5) < 0) __PYX_ERR(15, 62, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPBasis(PEP_BASIS_CHEBYSHEV2); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 62, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CHEBYSHEV2, __pyx_t_4) < 0) __PYX_ERR(16, 62, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":63
  *     CHEBYSHEV1 = PEP_BASIS_CHEBYSHEV1
@@ -59830,10 +62513,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LAGUERRE   = PEP_BASIS_LAGUERRE
  *     HERMITE    = PEP_BASIS_HERMITE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPBasis(PEP_BASIS_LEGENDRE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 63, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LEGENDRE, __pyx_t_5) < 0) __PYX_ERR(15, 63, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPBasis(PEP_BASIS_LEGENDRE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 63, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LEGENDRE, __pyx_t_4) < 0) __PYX_ERR(16, 63, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":64
  *     CHEBYSHEV2 = PEP_BASIS_CHEBYSHEV2
@@ -59842,10 +62525,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     HERMITE    = PEP_BASIS_HERMITE
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPBasis(PEP_BASIS_LAGUERRE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 64, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LAGUERRE, __pyx_t_5) < 0) __PYX_ERR(15, 64, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPBasis(PEP_BASIS_LAGUERRE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 64, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LAGUERRE, __pyx_t_4) < 0) __PYX_ERR(16, 64, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":65
  *     LEGENDRE   = PEP_BASIS_LEGENDRE
@@ -59854,10 +62537,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class PEPScale(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPBasis(PEP_BASIS_HERMITE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 65, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_HERMITE, __pyx_t_5) < 0) __PYX_ERR(15, 65, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPBasis(PEP_BASIS_HERMITE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 65, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_HERMITE, __pyx_t_4) < 0) __PYX_ERR(16, 65, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":59
  *     USER               = PEP_WHICH_USER
@@ -59866,10 +62549,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     MONOMIAL   = PEP_BASIS_MONOMIAL
  *     CHEBYSHEV1 = PEP_BASIS_CHEBYSHEV1
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PEPBasis, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 59, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPBasis, __pyx_t_5) < 0) __PYX_ERR(15, 59, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PEPBasis, __pyx_tuple__38, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPBasis, __pyx_t_4) < 0) __PYX_ERR(16, 59, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -59881,15 +62563,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP scaling strategy
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 67, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__39); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 67, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 67, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__39, __pyx_n_s_PEPScale, __pyx_n_s_PEPScale, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_scaling_strategy_NONE_No_sc); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 67, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PEPScale, __pyx_n_s_PEPScale, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_scaling_strategy_NONE_No_sc); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 67, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/PEP.pyx":76
  *     - `BOTH`:     Both parameter and diagonal scaling.
@@ -59898,10 +62575,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SCALAR   = PEP_SCALE_SCALAR
  *     DIAGONAL = PEP_SCALE_DIAGONAL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPScale(PEP_SCALE_NONE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 76, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NONE, __pyx_t_5) < 0) __PYX_ERR(15, 76, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPScale(PEP_SCALE_NONE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 76, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NONE, __pyx_t_4) < 0) __PYX_ERR(16, 76, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":77
  *     """
@@ -59910,10 +62587,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIAGONAL = PEP_SCALE_DIAGONAL
  *     BOTH     = PEP_SCALE_BOTH
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPScale(PEP_SCALE_SCALAR); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 77, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SCALAR, __pyx_t_5) < 0) __PYX_ERR(15, 77, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPScale(PEP_SCALE_SCALAR); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 77, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SCALAR, __pyx_t_4) < 0) __PYX_ERR(16, 77, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":78
  *     NONE     = PEP_SCALE_NONE
@@ -59922,10 +62599,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     BOTH     = PEP_SCALE_BOTH
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPScale(PEP_SCALE_DIAGONAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 78, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIAGONAL, __pyx_t_5) < 0) __PYX_ERR(15, 78, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPScale(PEP_SCALE_DIAGONAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIAGONAL, __pyx_t_4) < 0) __PYX_ERR(16, 78, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":79
  *     SCALAR   = PEP_SCALE_SCALAR
@@ -59934,10 +62611,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class PEPRefine(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPScale(PEP_SCALE_BOTH); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 79, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_BOTH, __pyx_t_5) < 0) __PYX_ERR(15, 79, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPScale(PEP_SCALE_BOTH); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 79, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_BOTH, __pyx_t_4) < 0) __PYX_ERR(16, 79, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":67
  *     HERMITE    = PEP_BASIS_HERMITE
@@ -59946,10 +62623,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP scaling strategy
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PEPScale, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 67, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPScale, __pyx_t_5) < 0) __PYX_ERR(15, 67, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PEPScale, __pyx_tuple__39, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPScale, __pyx_t_4) < 0) __PYX_ERR(16, 67, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -59961,15 +62637,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP refinement strategy
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 81, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__40); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 81, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 81, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__40, __pyx_n_s_PEPRefine, __pyx_n_s_PEPRefine, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_refinement_strategy_NONE_No); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 81, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PEPRefine, __pyx_n_s_PEPRefine, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_refinement_strategy_NONE_No); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 81, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/PEP.pyx":89
  *     - `MULTIPLE`: Refine all eigenpairs simultaneously (invariant pair).
@@ -59978,10 +62649,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SIMPLE   = PEP_REFINE_SIMPLE
  *     MULTIPLE = PEP_REFINE_MULTIPLE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPRefine(PEP_REFINE_NONE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 89, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NONE, __pyx_t_5) < 0) __PYX_ERR(15, 89, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPRefine(PEP_REFINE_NONE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 89, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NONE, __pyx_t_4) < 0) __PYX_ERR(16, 89, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":90
  *     """
@@ -59990,10 +62661,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     MULTIPLE = PEP_REFINE_MULTIPLE
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPRefine(PEP_REFINE_SIMPLE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 90, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SIMPLE, __pyx_t_5) < 0) __PYX_ERR(15, 90, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPRefine(PEP_REFINE_SIMPLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 90, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SIMPLE, __pyx_t_4) < 0) __PYX_ERR(16, 90, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":91
  *     NONE     = PEP_REFINE_NONE
@@ -60002,10 +62673,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class PEPRefineScheme(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPRefine(PEP_REFINE_MULTIPLE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 91, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_MULTIPLE, __pyx_t_5) < 0) __PYX_ERR(15, 91, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPRefine(PEP_REFINE_MULTIPLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 91, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_MULTIPLE, __pyx_t_4) < 0) __PYX_ERR(16, 91, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":81
  *     BOTH     = PEP_SCALE_BOTH
@@ -60014,10 +62685,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP refinement strategy
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PEPRefine, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 81, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPRefine, __pyx_t_5) < 0) __PYX_ERR(15, 81, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PEPRefine, __pyx_tuple__40, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 81, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPRefine, __pyx_t_4) < 0) __PYX_ERR(16, 81, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -60029,15 +62699,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     Scheme for solving linear systems during iterative refinement
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 93, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__41); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 93, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 93, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__41, __pyx_n_s_PEPRefineScheme, __pyx_n_s_PEPRefineScheme, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_Scheme_for_solving_linear_syste); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 93, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PEPRefineScheme, __pyx_n_s_PEPRefineScheme, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_Scheme_for_solving_linear_syste); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 93, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/PEP.pyx":101
  *     - `EXPLICIT`: Build the explicit matrix.
@@ -60046,10 +62711,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     MBE      = PEP_REFINE_SCHEME_MBE
  *     EXPLICIT = PEP_REFINE_SCHEME_EXPLICIT
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPRefineScheme(PEP_REFINE_SCHEME_SCHUR); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 101, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SCHUR, __pyx_t_5) < 0) __PYX_ERR(15, 101, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPRefineScheme(PEP_REFINE_SCHEME_SCHUR); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 101, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SCHUR, __pyx_t_4) < 0) __PYX_ERR(16, 101, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":102
  *     """
@@ -60058,10 +62723,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     EXPLICIT = PEP_REFINE_SCHEME_EXPLICIT
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPRefineScheme(PEP_REFINE_SCHEME_MBE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 102, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_MBE, __pyx_t_5) < 0) __PYX_ERR(15, 102, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPRefineScheme(PEP_REFINE_SCHEME_MBE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_MBE, __pyx_t_4) < 0) __PYX_ERR(16, 102, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":103
  *     SCHUR    = PEP_REFINE_SCHEME_SCHUR
@@ -60070,10 +62735,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class PEPExtract(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPRefineScheme(PEP_REFINE_SCHEME_EXPLICIT); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 103, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_EXPLICIT, __pyx_t_5) < 0) __PYX_ERR(15, 103, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPRefineScheme(PEP_REFINE_SCHEME_EXPLICIT); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_EXPLICIT, __pyx_t_4) < 0) __PYX_ERR(16, 103, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":93
  *     MULTIPLE = PEP_REFINE_MULTIPLE
@@ -60082,10 +62747,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     Scheme for solving linear systems during iterative refinement
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PEPRefineScheme, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 93, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPRefineScheme, __pyx_t_5) < 0) __PYX_ERR(15, 93, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PEPRefineScheme, __pyx_tuple__41, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 93, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPRefineScheme, __pyx_t_4) < 0) __PYX_ERR(16, 93, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -60097,15 +62761,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     Extraction strategy used to obtain eigenvectors of the PEP from the
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 105, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__42); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 105, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 105, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__42, __pyx_n_s_PEPExtract, __pyx_n_s_PEPExtract, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_Extraction_strategy_used_to_obt); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 105, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PEPExtract, __pyx_n_s_PEPExtract, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_Extraction_strategy_used_to_obt); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 105, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/PEP.pyx":115
  *     - `STRUCTURED`: Combine all blocks in a certain way.
@@ -60114,10 +62773,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     NORM       = PEP_EXTRACT_NORM
  *     RESIDUAL   = PEP_EXTRACT_RESIDUAL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPExtract(PEP_EXTRACT_NONE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 115, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NONE, __pyx_t_5) < 0) __PYX_ERR(15, 115, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPExtract(PEP_EXTRACT_NONE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 115, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NONE, __pyx_t_4) < 0) __PYX_ERR(16, 115, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":116
  *     """
@@ -60126,10 +62785,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     RESIDUAL   = PEP_EXTRACT_RESIDUAL
  *     STRUCTURED = PEP_EXTRACT_STRUCTURED
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPExtract(PEP_EXTRACT_NORM); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 116, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NORM, __pyx_t_5) < 0) __PYX_ERR(15, 116, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPExtract(PEP_EXTRACT_NORM); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 116, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NORM, __pyx_t_4) < 0) __PYX_ERR(16, 116, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":117
  *     NONE       = PEP_EXTRACT_NONE
@@ -60138,10 +62797,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     STRUCTURED = PEP_EXTRACT_STRUCTURED
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPExtract(PEP_EXTRACT_RESIDUAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 117, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RESIDUAL, __pyx_t_5) < 0) __PYX_ERR(15, 117, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPExtract(PEP_EXTRACT_RESIDUAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 117, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_RESIDUAL, __pyx_t_4) < 0) __PYX_ERR(16, 117, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":118
  *     NORM       = PEP_EXTRACT_NORM
@@ -60150,10 +62809,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class PEPErrorType(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPExtract(PEP_EXTRACT_STRUCTURED); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 118, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_STRUCTURED, __pyx_t_5) < 0) __PYX_ERR(15, 118, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPExtract(PEP_EXTRACT_STRUCTURED); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 118, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_STRUCTURED, __pyx_t_4) < 0) __PYX_ERR(16, 118, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":105
  *     EXPLICIT = PEP_REFINE_SCHEME_EXPLICIT
@@ -60162,10 +62821,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     Extraction strategy used to obtain eigenvectors of the PEP from the
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PEPExtract, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 105, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPExtract, __pyx_t_5) < 0) __PYX_ERR(15, 105, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PEPExtract, __pyx_tuple__42, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 105, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPExtract, __pyx_t_4) < 0) __PYX_ERR(16, 105, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -60177,15 +62835,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP error type to assess accuracy of computed solutions
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 120, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__43); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 120, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 120, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__43, __pyx_n_s_PEPErrorType, __pyx_n_s_PEPErrorType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_error_type_to_assess_accura); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 120, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PEPErrorType, __pyx_n_s_PEPErrorType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_error_type_to_assess_accura); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 120, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/PEP.pyx":128
  *     - `BACKWARD`:  Backward error.
@@ -60194,10 +62847,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     RELATIVE = PEP_ERROR_RELATIVE
  *     BACKWARD = PEP_ERROR_BACKWARD
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPErrorType(PEP_ERROR_ABSOLUTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 128, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ABSOLUTE, __pyx_t_5) < 0) __PYX_ERR(15, 128, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPErrorType(PEP_ERROR_ABSOLUTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 128, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ABSOLUTE, __pyx_t_4) < 0) __PYX_ERR(16, 128, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":129
  *     """
@@ -60206,10 +62859,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     BACKWARD = PEP_ERROR_BACKWARD
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPErrorType(PEP_ERROR_RELATIVE); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 129, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RELATIVE, __pyx_t_5) < 0) __PYX_ERR(15, 129, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPErrorType(PEP_ERROR_RELATIVE); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 129, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_RELATIVE, __pyx_t_4) < 0) __PYX_ERR(16, 129, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":130
  *     ABSOLUTE = PEP_ERROR_ABSOLUTE
@@ -60218,10 +62871,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class PEPConv(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPErrorType(PEP_ERROR_BACKWARD); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 130, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_BACKWARD, __pyx_t_5) < 0) __PYX_ERR(15, 130, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPErrorType(PEP_ERROR_BACKWARD); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 130, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_BACKWARD, __pyx_t_4) < 0) __PYX_ERR(16, 130, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":120
  *     STRUCTURED = PEP_EXTRACT_STRUCTURED
@@ -60230,10 +62883,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP error type to assess accuracy of computed solutions
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PEPErrorType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 120, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPErrorType, __pyx_t_5) < 0) __PYX_ERR(15, 120, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PEPErrorType, __pyx_tuple__43, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 120, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPErrorType, __pyx_t_4) < 0) __PYX_ERR(16, 120, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -60245,15 +62897,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP convergence test
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 132, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__44); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 132, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 132, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__44, __pyx_n_s_PEPConv, __pyx_n_s_PEPConv, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_convergence_test_ABS_REL_NO); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 132, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PEPConv, __pyx_n_s_PEPConv, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_convergence_test_ABS_REL_NO); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 132, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/PEP.pyx":141
  *     - `USER`:
@@ -60262,10 +62909,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     REL  = PEP_CONV_REL
  *     NORM = PEP_CONV_NORM
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPConv(PEP_CONV_ABS); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 141, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ABS, __pyx_t_5) < 0) __PYX_ERR(15, 141, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPConv(PEP_CONV_ABS); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 141, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ABS, __pyx_t_4) < 0) __PYX_ERR(16, 141, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":142
  *     """
@@ -60274,10 +62921,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     NORM = PEP_CONV_NORM
  *     USER = PEP_CONV_USER
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPConv(PEP_CONV_REL); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 142, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_REL, __pyx_t_5) < 0) __PYX_ERR(15, 142, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPConv(PEP_CONV_REL); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 142, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_REL, __pyx_t_4) < 0) __PYX_ERR(16, 142, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":143
  *     ABS  = PEP_CONV_ABS
@@ -60286,10 +62933,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     USER = PEP_CONV_USER
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPConv(PEP_CONV_NORM); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 143, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NORM, __pyx_t_5) < 0) __PYX_ERR(15, 143, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPConv(PEP_CONV_NORM); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NORM, __pyx_t_4) < 0) __PYX_ERR(16, 143, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":144
  *     REL  = PEP_CONV_REL
@@ -60298,10 +62945,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class PEPConvergedReason(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPConv(PEP_CONV_USER); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 144, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_USER, __pyx_t_5) < 0) __PYX_ERR(15, 144, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPConv(PEP_CONV_USER); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 144, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_USER, __pyx_t_4) < 0) __PYX_ERR(16, 144, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":132
  *     BACKWARD = PEP_ERROR_BACKWARD
@@ -60310,10 +62957,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP convergence test
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PEPConv, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 132, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPConv, __pyx_t_5) < 0) __PYX_ERR(15, 132, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PEPConv, __pyx_tuple__44, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 132, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPConv, __pyx_t_4) < 0) __PYX_ERR(16, 132, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -60325,15 +62971,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP convergence reasons
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 146, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__45); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 146, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 146, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__45, __pyx_n_s_PEPConvergedReason, __pyx_n_s_PEPConvergedReason, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_convergence_reasons_CONVERG); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 146, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PEPConvergedReason, __pyx_n_s_PEPConvergedReason, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_PEP_convergence_reasons_CONVERG); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 146, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/PEP.pyx":157
  *     - `CONVERGED_ITERATING`:
@@ -60342,10 +62983,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_USER         = PEP_CONVERGED_USER
  *     DIVERGED_ITS           = PEP_DIVERGED_ITS
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPConvergedReason(PEP_CONVERGED_TOL); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 157, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_TOL, __pyx_t_5) < 0) __PYX_ERR(15, 157, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPConvergedReason(PEP_CONVERGED_TOL); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 157, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_TOL, __pyx_t_4) < 0) __PYX_ERR(16, 157, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":158
  *     """
@@ -60354,10 +62995,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVERGED_ITS           = PEP_DIVERGED_ITS
  *     DIVERGED_BREAKDOWN     = PEP_DIVERGED_BREAKDOWN
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPConvergedReason(PEP_CONVERGED_USER); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 158, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_USER, __pyx_t_5) < 0) __PYX_ERR(15, 158, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPConvergedReason(PEP_CONVERGED_USER); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 158, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_USER, __pyx_t_4) < 0) __PYX_ERR(16, 158, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":159
  *     CONVERGED_TOL          = PEP_CONVERGED_TOL
@@ -60366,10 +63007,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVERGED_BREAKDOWN     = PEP_DIVERGED_BREAKDOWN
  *     DIVERGED_SYMMETRY_LOST = PEP_DIVERGED_SYMMETRY_LOST
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPConvergedReason(PEP_DIVERGED_ITS); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 159, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVERGED_ITS, __pyx_t_5) < 0) __PYX_ERR(15, 159, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPConvergedReason(PEP_DIVERGED_ITS); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 159, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVERGED_ITS, __pyx_t_4) < 0) __PYX_ERR(16, 159, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":160
  *     CONVERGED_USER         = PEP_CONVERGED_USER
@@ -60378,10 +63019,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVERGED_SYMMETRY_LOST = PEP_DIVERGED_SYMMETRY_LOST
  *     CONVERGED_ITERATING    = PEP_CONVERGED_ITERATING
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPConvergedReason(PEP_DIVERGED_BREAKDOWN); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 160, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVERGED_BREAKDOWN, __pyx_t_5) < 0) __PYX_ERR(15, 160, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPConvergedReason(PEP_DIVERGED_BREAKDOWN); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 160, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVERGED_BREAKDOWN, __pyx_t_4) < 0) __PYX_ERR(16, 160, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":161
  *     DIVERGED_ITS           = PEP_DIVERGED_ITS
@@ -60390,10 +63031,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_ITERATING    = PEP_CONVERGED_ITERATING
  *     ITERATING              = PEP_CONVERGED_ITERATING
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPConvergedReason(PEP_DIVERGED_SYMMETRY_LOST); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 161, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVERGED_SYMMETRY_LOST, __pyx_t_5) < 0) __PYX_ERR(15, 161, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPConvergedReason(PEP_DIVERGED_SYMMETRY_LOST); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 161, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVERGED_SYMMETRY_LOST, __pyx_t_4) < 0) __PYX_ERR(16, 161, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":162
  *     DIVERGED_BREAKDOWN     = PEP_DIVERGED_BREAKDOWN
@@ -60402,10 +63043,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ITERATING              = PEP_CONVERGED_ITERATING
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPConvergedReason(PEP_CONVERGED_ITERATING); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 162, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_ITERATING, __pyx_t_5) < 0) __PYX_ERR(15, 162, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPConvergedReason(PEP_CONVERGED_ITERATING); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 162, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_ITERATING, __pyx_t_4) < 0) __PYX_ERR(16, 162, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":163
  *     DIVERGED_SYMMETRY_LOST = PEP_DIVERGED_SYMMETRY_LOST
@@ -60414,10 +63055,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_5 = __Pyx_PyInt_From_PEPConvergedReason(PEP_CONVERGED_ITERATING); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 163, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ITERATING, __pyx_t_5) < 0) __PYX_ERR(15, 163, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_PEPConvergedReason(PEP_CONVERGED_ITERATING); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 163, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ITERATING, __pyx_t_4) < 0) __PYX_ERR(16, 163, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/PEP.pyx":146
  *     USER = PEP_CONV_USER
@@ -60426,10 +63067,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     PEP convergence reasons
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PEPConvergedReason, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 146, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPConvergedReason, __pyx_t_5) < 0) __PYX_ERR(15, 146, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PEPConvergedReason, __pyx_tuple__45, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 146, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PEPConvergedReason, __pyx_t_4) < 0) __PYX_ERR(16, 146, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -60441,9 +63081,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ProblemType     = PEPProblemType
  *     Which           = PEPWhich
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPType); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 173, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPType); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 173, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(15, 173, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(16, 173, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_PEP);
 
@@ -60454,9 +63094,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Which           = PEPWhich
  *     Basis           = PEPBasis
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPProblemType); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 174, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPProblemType); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 174, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_ProblemType, __pyx_t_2) < 0) __PYX_ERR(15, 174, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_ProblemType, __pyx_t_2) < 0) __PYX_ERR(16, 174, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_PEP);
 
@@ -60467,9 +63107,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Basis           = PEPBasis
  *     Scale           = PEPScale
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPWhich); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 175, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPWhich); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 175, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Which, __pyx_t_2) < 0) __PYX_ERR(15, 175, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Which, __pyx_t_2) < 0) __PYX_ERR(16, 175, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_PEP);
 
@@ -60480,9 +63120,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Scale           = PEPScale
  *     Refine          = PEPRefine
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPBasis); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 176, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPBasis); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 176, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Basis, __pyx_t_2) < 0) __PYX_ERR(15, 176, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Basis, __pyx_t_2) < 0) __PYX_ERR(16, 176, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_PEP);
 
@@ -60493,9 +63133,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Refine          = PEPRefine
  *     RefineScheme    = PEPRefineScheme
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPScale); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 177, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPScale); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 177, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Scale, __pyx_t_2) < 0) __PYX_ERR(15, 177, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Scale, __pyx_t_2) < 0) __PYX_ERR(16, 177, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_PEP);
 
@@ -60506,9 +63146,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     RefineScheme    = PEPRefineScheme
  *     Extract         = PEPExtract
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPRefine); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 178, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPRefine); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 178, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Refine, __pyx_t_2) < 0) __PYX_ERR(15, 178, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Refine, __pyx_t_2) < 0) __PYX_ERR(16, 178, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_PEP);
 
@@ -60519,9 +63159,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Extract         = PEPExtract
  *     ErrorType       = PEPErrorType
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPRefineScheme); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 179, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPRefineScheme); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 179, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_RefineScheme, __pyx_t_2) < 0) __PYX_ERR(15, 179, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_RefineScheme, __pyx_t_2) < 0) __PYX_ERR(16, 179, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_PEP);
 
@@ -60532,9 +63172,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ErrorType       = PEPErrorType
  *     Conv            = PEPConv
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPExtract); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 180, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPExtract); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 180, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Extract, __pyx_t_2) < 0) __PYX_ERR(15, 180, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Extract, __pyx_t_2) < 0) __PYX_ERR(16, 180, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_PEP);
 
@@ -60545,9 +63185,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Conv            = PEPConv
  *     ConvergedReason = PEPConvergedReason
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPErrorType); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 181, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPErrorType); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 181, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_ErrorType, __pyx_t_2) < 0) __PYX_ERR(15, 181, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_ErrorType, __pyx_t_2) < 0) __PYX_ERR(16, 181, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_PEP);
 
@@ -60558,9 +63198,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ConvergedReason = PEPConvergedReason
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPConv); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 182, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPConv); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 182, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Conv, __pyx_t_2) < 0) __PYX_ERR(15, 182, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_Conv, __pyx_t_2) < 0) __PYX_ERR(16, 182, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_PEP);
 
@@ -60571,110 +63211,110 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  *     def __cinit__(self):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPConvergedReason); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 183, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PEPConvergedReason); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 183, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_ConvergedReason, __pyx_t_2) < 0) __PYX_ERR(15, 183, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_PEP->tp_dict, __pyx_n_s_ConvergedReason, __pyx_t_2) < 0) __PYX_ERR(16, 183, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_PEP);
 
-  /* "SLEPc/PEP.pyx":1036
+  /* "SLEPc/PEP.pyx":1067
  * # -----------------------------------------------------------------------------
  * 
  * del PEPType             # <<<<<<<<<<<<<<
  * del PEPProblemType
  * del PEPWhich
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPType) < 0) __PYX_ERR(15, 1036, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPType) < 0) __PYX_ERR(16, 1067, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":1037
+  /* "SLEPc/PEP.pyx":1068
  * 
  * del PEPType
  * del PEPProblemType             # <<<<<<<<<<<<<<
  * del PEPWhich
  * del PEPBasis
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPProblemType) < 0) __PYX_ERR(15, 1037, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPProblemType) < 0) __PYX_ERR(16, 1068, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":1038
+  /* "SLEPc/PEP.pyx":1069
  * del PEPType
  * del PEPProblemType
  * del PEPWhich             # <<<<<<<<<<<<<<
  * del PEPBasis
  * del PEPScale
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPWhich) < 0) __PYX_ERR(15, 1038, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPWhich) < 0) __PYX_ERR(16, 1069, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":1039
+  /* "SLEPc/PEP.pyx":1070
  * del PEPProblemType
  * del PEPWhich
  * del PEPBasis             # <<<<<<<<<<<<<<
  * del PEPScale
  * del PEPRefine
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPBasis) < 0) __PYX_ERR(15, 1039, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPBasis) < 0) __PYX_ERR(16, 1070, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":1040
+  /* "SLEPc/PEP.pyx":1071
  * del PEPWhich
  * del PEPBasis
  * del PEPScale             # <<<<<<<<<<<<<<
  * del PEPRefine
  * del PEPRefineScheme
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPScale) < 0) __PYX_ERR(15, 1040, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPScale) < 0) __PYX_ERR(16, 1071, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":1041
+  /* "SLEPc/PEP.pyx":1072
  * del PEPBasis
  * del PEPScale
  * del PEPRefine             # <<<<<<<<<<<<<<
  * del PEPRefineScheme
  * del PEPExtract
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPRefine) < 0) __PYX_ERR(15, 1041, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPRefine) < 0) __PYX_ERR(16, 1072, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":1042
+  /* "SLEPc/PEP.pyx":1073
  * del PEPScale
  * del PEPRefine
  * del PEPRefineScheme             # <<<<<<<<<<<<<<
  * del PEPExtract
  * del PEPErrorType
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPRefineScheme) < 0) __PYX_ERR(15, 1042, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPRefineScheme) < 0) __PYX_ERR(16, 1073, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":1043
+  /* "SLEPc/PEP.pyx":1074
  * del PEPRefine
  * del PEPRefineScheme
  * del PEPExtract             # <<<<<<<<<<<<<<
  * del PEPErrorType
  * del PEPConv
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPExtract) < 0) __PYX_ERR(15, 1043, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPExtract) < 0) __PYX_ERR(16, 1074, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":1044
+  /* "SLEPc/PEP.pyx":1075
  * del PEPRefineScheme
  * del PEPExtract
  * del PEPErrorType             # <<<<<<<<<<<<<<
  * del PEPConv
  * del PEPConvergedReason
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPErrorType) < 0) __PYX_ERR(15, 1044, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPErrorType) < 0) __PYX_ERR(16, 1075, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":1045
+  /* "SLEPc/PEP.pyx":1076
  * del PEPExtract
  * del PEPErrorType
  * del PEPConv             # <<<<<<<<<<<<<<
  * del PEPConvergedReason
  * 
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPConv) < 0) __PYX_ERR(15, 1045, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPConv) < 0) __PYX_ERR(16, 1076, __pyx_L1_error)
 
-  /* "SLEPc/PEP.pyx":1046
+  /* "SLEPc/PEP.pyx":1077
  * del PEPErrorType
  * del PEPConv
  * del PEPConvergedReason             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPConvergedReason) < 0) __PYX_ERR(15, 1046, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PEPConvergedReason) < 0) __PYX_ERR(16, 1077, __pyx_L1_error)
 
   /* "SLEPc/NEP.pyx":3
  * # -----------------------------------------------------------------------------
@@ -60683,15 +63323,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     NEP type
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 3, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__46); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 3, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__46, __pyx_n_s_NEPType, __pyx_n_s_NEPType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_NEP_type_Nonlinear_eigensolvers); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_NEPType, __pyx_n_s_NEPType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_NEP_type_Nonlinear_eigensolvers); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/NEP.pyx":16
  *     - `NLEIGS`:   Fully rational Krylov method for nonlinear eigenproblems.
@@ -60700,10 +63335,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SLP      = S_(NEPSLP)
  *     NARNOLDI = S_(NEPNARNOLDI)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(NEPRII); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 16, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RII, __pyx_t_5) < 0) __PYX_ERR(16, 16, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(NEPRII); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_RII, __pyx_t_4) < 0) __PYX_ERR(17, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":17
  *     """
@@ -60712,10 +63347,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     NARNOLDI = S_(NEPNARNOLDI)
  *     CISS     = S_(NEPCISS)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(NEPSLP); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 17, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SLP, __pyx_t_5) < 0) __PYX_ERR(16, 17, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(NEPSLP); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SLP, __pyx_t_4) < 0) __PYX_ERR(17, 17, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":18
  *     RII      = S_(NEPRII)
@@ -60724,10 +63359,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CISS     = S_(NEPCISS)
  *     INTERPOL = S_(NEPINTERPOL)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(NEPNARNOLDI); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 18, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NARNOLDI, __pyx_t_5) < 0) __PYX_ERR(16, 18, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(NEPNARNOLDI); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 18, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NARNOLDI, __pyx_t_4) < 0) __PYX_ERR(17, 18, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":19
  *     SLP      = S_(NEPSLP)
@@ -60736,10 +63371,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     INTERPOL = S_(NEPINTERPOL)
  *     NLEIGS   = S_(NEPNLEIGS)
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(NEPCISS); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CISS, __pyx_t_5) < 0) __PYX_ERR(16, 19, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(NEPCISS); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CISS, __pyx_t_4) < 0) __PYX_ERR(17, 19, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":20
  *     NARNOLDI = S_(NEPNARNOLDI)
@@ -60748,10 +63383,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     NLEIGS   = S_(NEPNLEIGS)
  * 
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(NEPINTERPOL); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 20, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_INTERPOL, __pyx_t_5) < 0) __PYX_ERR(16, 20, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(NEPINTERPOL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 20, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_INTERPOL, __pyx_t_4) < 0) __PYX_ERR(17, 20, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":21
  *     CISS     = S_(NEPCISS)
@@ -60760,10 +63395,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class NEPErrorType(object):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(NEPNLEIGS); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 21, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NLEIGS, __pyx_t_5) < 0) __PYX_ERR(16, 21, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(NEPNLEIGS); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NLEIGS, __pyx_t_4) < 0) __PYX_ERR(17, 21, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":3
  * # -----------------------------------------------------------------------------
@@ -60772,10 +63407,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     NEP type
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_NEPType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NEPType, __pyx_t_5) < 0) __PYX_ERR(16, 3, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_NEPType, __pyx_tuple__46, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NEPType, __pyx_t_4) < 0) __PYX_ERR(17, 3, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -60787,15 +63421,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     NEP error type to assess accuracy of computed solutions
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 23, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__47); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 23, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 23, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__47, __pyx_n_s_NEPErrorType, __pyx_n_s_NEPErrorType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_NEP_error_type_to_assess_accura); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 23, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_NEPErrorType, __pyx_n_s_NEPErrorType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_NEP_error_type_to_assess_accura); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 23, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/NEP.pyx":31
  *     - `BACKWARD`:  Backward error.
@@ -60804,10 +63433,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     RELATIVE = NEP_ERROR_RELATIVE
  *     BACKWARD = NEP_ERROR_BACKWARD
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPErrorType(NEP_ERROR_ABSOLUTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 31, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ABSOLUTE, __pyx_t_5) < 0) __PYX_ERR(16, 31, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPErrorType(NEP_ERROR_ABSOLUTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 31, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ABSOLUTE, __pyx_t_4) < 0) __PYX_ERR(17, 31, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":32
  *     """
@@ -60816,10 +63445,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     BACKWARD = NEP_ERROR_BACKWARD
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPErrorType(NEP_ERROR_RELATIVE); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 32, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RELATIVE, __pyx_t_5) < 0) __PYX_ERR(16, 32, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPErrorType(NEP_ERROR_RELATIVE); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 32, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_RELATIVE, __pyx_t_4) < 0) __PYX_ERR(17, 32, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":33
  *     ABSOLUTE = NEP_ERROR_ABSOLUTE
@@ -60828,10 +63457,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class NEPWhich(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPErrorType(NEP_ERROR_BACKWARD); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 33, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_BACKWARD, __pyx_t_5) < 0) __PYX_ERR(16, 33, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPErrorType(NEP_ERROR_BACKWARD); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_BACKWARD, __pyx_t_4) < 0) __PYX_ERR(17, 33, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":23
  *     NLEIGS   = S_(NEPNLEIGS)
@@ -60840,10 +63469,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     NEP error type to assess accuracy of computed solutions
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_NEPErrorType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 23, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NEPErrorType, __pyx_t_5) < 0) __PYX_ERR(16, 23, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_NEPErrorType, __pyx_tuple__47, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 23, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NEPErrorType, __pyx_t_4) < 0) __PYX_ERR(17, 23, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -60855,15 +63483,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LARGEST_MAGNITUDE  = NEP_LARGEST_MAGNITUDE
  *     SMALLEST_MAGNITUDE = NEP_SMALLEST_MAGNITUDE
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 35, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__48); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 35, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 35, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__48, __pyx_n_s_NEPWhich, __pyx_n_s_NEPWhich, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 35, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_NEPWhich, __pyx_n_s_NEPWhich, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 35, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/NEP.pyx":36
  * 
@@ -60872,10 +63495,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SMALLEST_MAGNITUDE = NEP_SMALLEST_MAGNITUDE
  *     LARGEST_REAL       = NEP_LARGEST_REAL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPWhich(NEP_LARGEST_MAGNITUDE); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 36, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LARGEST_MAGNITUDE, __pyx_t_5) < 0) __PYX_ERR(16, 36, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPWhich(NEP_LARGEST_MAGNITUDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LARGEST_MAGNITUDE, __pyx_t_4) < 0) __PYX_ERR(17, 36, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":37
  * class NEPWhich(object):
@@ -60884,10 +63507,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LARGEST_REAL       = NEP_LARGEST_REAL
  *     SMALLEST_REAL      = NEP_SMALLEST_REAL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPWhich(NEP_SMALLEST_MAGNITUDE); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 37, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SMALLEST_MAGNITUDE, __pyx_t_5) < 0) __PYX_ERR(16, 37, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPWhich(NEP_SMALLEST_MAGNITUDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 37, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SMALLEST_MAGNITUDE, __pyx_t_4) < 0) __PYX_ERR(17, 37, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":38
  *     LARGEST_MAGNITUDE  = NEP_LARGEST_MAGNITUDE
@@ -60896,10 +63519,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SMALLEST_REAL      = NEP_SMALLEST_REAL
  *     LARGEST_IMAGINARY  = NEP_LARGEST_IMAGINARY
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPWhich(NEP_LARGEST_REAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 38, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LARGEST_REAL, __pyx_t_5) < 0) __PYX_ERR(16, 38, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPWhich(NEP_LARGEST_REAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 38, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LARGEST_REAL, __pyx_t_4) < 0) __PYX_ERR(17, 38, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":39
  *     SMALLEST_MAGNITUDE = NEP_SMALLEST_MAGNITUDE
@@ -60908,10 +63531,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LARGEST_IMAGINARY  = NEP_LARGEST_IMAGINARY
  *     SMALLEST_IMAGINARY = NEP_SMALLEST_IMAGINARY
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPWhich(NEP_SMALLEST_REAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 39, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SMALLEST_REAL, __pyx_t_5) < 0) __PYX_ERR(16, 39, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPWhich(NEP_SMALLEST_REAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 39, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SMALLEST_REAL, __pyx_t_4) < 0) __PYX_ERR(17, 39, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":40
  *     LARGEST_REAL       = NEP_LARGEST_REAL
@@ -60920,10 +63543,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SMALLEST_IMAGINARY = NEP_SMALLEST_IMAGINARY
  *     TARGET_MAGNITUDE   = NEP_TARGET_MAGNITUDE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPWhich(NEP_LARGEST_IMAGINARY); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 40, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LARGEST_IMAGINARY, __pyx_t_5) < 0) __PYX_ERR(16, 40, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPWhich(NEP_LARGEST_IMAGINARY); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 40, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_LARGEST_IMAGINARY, __pyx_t_4) < 0) __PYX_ERR(17, 40, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":41
  *     SMALLEST_REAL      = NEP_SMALLEST_REAL
@@ -60932,10 +63555,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TARGET_MAGNITUDE   = NEP_TARGET_MAGNITUDE
  *     TARGET_REAL        = NEP_TARGET_REAL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPWhich(NEP_SMALLEST_IMAGINARY); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 41, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SMALLEST_IMAGINARY, __pyx_t_5) < 0) __PYX_ERR(16, 41, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPWhich(NEP_SMALLEST_IMAGINARY); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 41, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SMALLEST_IMAGINARY, __pyx_t_4) < 0) __PYX_ERR(17, 41, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":42
  *     LARGEST_IMAGINARY  = NEP_LARGEST_IMAGINARY
@@ -60944,10 +63567,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TARGET_REAL        = NEP_TARGET_REAL
  *     TARGET_IMAGINARY   = NEP_TARGET_IMAGINARY
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPWhich(NEP_TARGET_MAGNITUDE); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 42, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TARGET_MAGNITUDE, __pyx_t_5) < 0) __PYX_ERR(16, 42, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPWhich(NEP_TARGET_MAGNITUDE); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 42, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TARGET_MAGNITUDE, __pyx_t_4) < 0) __PYX_ERR(17, 42, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":43
  *     SMALLEST_IMAGINARY = NEP_SMALLEST_IMAGINARY
@@ -60956,10 +63579,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     TARGET_IMAGINARY   = NEP_TARGET_IMAGINARY
  *     ALL                = NEP_ALL
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPWhich(NEP_TARGET_REAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 43, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TARGET_REAL, __pyx_t_5) < 0) __PYX_ERR(16, 43, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPWhich(NEP_TARGET_REAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 43, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TARGET_REAL, __pyx_t_4) < 0) __PYX_ERR(17, 43, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":44
  *     TARGET_MAGNITUDE   = NEP_TARGET_MAGNITUDE
@@ -60968,10 +63591,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ALL                = NEP_ALL
  *     USER               = NEP_WHICH_USER
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPWhich(NEP_TARGET_IMAGINARY); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 44, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_TARGET_IMAGINARY, __pyx_t_5) < 0) __PYX_ERR(16, 44, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPWhich(NEP_TARGET_IMAGINARY); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 44, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_TARGET_IMAGINARY, __pyx_t_4) < 0) __PYX_ERR(17, 44, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":45
  *     TARGET_REAL        = NEP_TARGET_REAL
@@ -60980,10 +63603,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     USER               = NEP_WHICH_USER
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPWhich(NEP_ALL); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 45, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ALL, __pyx_t_5) < 0) __PYX_ERR(16, 45, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPWhich(NEP_ALL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 45, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ALL, __pyx_t_4) < 0) __PYX_ERR(17, 45, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":46
  *     TARGET_IMAGINARY   = NEP_TARGET_IMAGINARY
@@ -60992,10 +63615,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class NEPConvergedReason(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPWhich(NEP_WHICH_USER); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 46, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_USER, __pyx_t_5) < 0) __PYX_ERR(16, 46, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPWhich(NEP_WHICH_USER); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 46, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_USER, __pyx_t_4) < 0) __PYX_ERR(17, 46, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":35
  *     BACKWARD = NEP_ERROR_BACKWARD
@@ -61004,10 +63627,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     LARGEST_MAGNITUDE  = NEP_LARGEST_MAGNITUDE
  *     SMALLEST_MAGNITUDE = NEP_SMALLEST_MAGNITUDE
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_NEPWhich, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 35, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NEPWhich, __pyx_t_5) < 0) __PYX_ERR(16, 35, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_NEPWhich, __pyx_tuple__48, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NEPWhich, __pyx_t_4) < 0) __PYX_ERR(17, 35, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -61019,15 +63641,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_TOL          = NEP_CONVERGED_TOL
  *     CONVERGED_USER         = NEP_CONVERGED_USER
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 48, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__49); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 48, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 48, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__49, __pyx_n_s_NEPConvergedReason, __pyx_n_s_NEPConvergedReason, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 48, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_NEPConvergedReason, __pyx_n_s_NEPConvergedReason, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 48, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/NEP.pyx":49
  * 
@@ -61036,10 +63653,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_USER         = NEP_CONVERGED_USER
  *     DIVERGED_ITS           = NEP_DIVERGED_ITS
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPConvergedReason(NEP_CONVERGED_TOL); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 49, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_TOL, __pyx_t_5) < 0) __PYX_ERR(16, 49, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPConvergedReason(NEP_CONVERGED_TOL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 49, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_TOL, __pyx_t_4) < 0) __PYX_ERR(17, 49, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":50
  * class NEPConvergedReason(object):
@@ -61048,10 +63665,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVERGED_ITS           = NEP_DIVERGED_ITS
  *     DIVERGED_BREAKDOWN     = NEP_DIVERGED_BREAKDOWN
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPConvergedReason(NEP_CONVERGED_USER); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 50, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_USER, __pyx_t_5) < 0) __PYX_ERR(16, 50, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPConvergedReason(NEP_CONVERGED_USER); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 50, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_USER, __pyx_t_4) < 0) __PYX_ERR(17, 50, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":51
  *     CONVERGED_TOL          = NEP_CONVERGED_TOL
@@ -61060,10 +63677,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVERGED_BREAKDOWN     = NEP_DIVERGED_BREAKDOWN
  *     DIVERGED_LINEAR_SOLVE  = NEP_DIVERGED_LINEAR_SOLVE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPConvergedReason(NEP_DIVERGED_ITS); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 51, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVERGED_ITS, __pyx_t_5) < 0) __PYX_ERR(16, 51, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPConvergedReason(NEP_DIVERGED_ITS); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVERGED_ITS, __pyx_t_4) < 0) __PYX_ERR(17, 51, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":52
  *     CONVERGED_USER         = NEP_CONVERGED_USER
@@ -61072,10 +63689,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVERGED_LINEAR_SOLVE  = NEP_DIVERGED_LINEAR_SOLVE
  *     CONVERGED_ITERATING    = NEP_CONVERGED_ITERATING
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPConvergedReason(NEP_DIVERGED_BREAKDOWN); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 52, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVERGED_BREAKDOWN, __pyx_t_5) < 0) __PYX_ERR(16, 52, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPConvergedReason(NEP_DIVERGED_BREAKDOWN); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVERGED_BREAKDOWN, __pyx_t_4) < 0) __PYX_ERR(17, 52, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":53
  *     DIVERGED_ITS           = NEP_DIVERGED_ITS
@@ -61084,10 +63701,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_ITERATING    = NEP_CONVERGED_ITERATING
  *     ITERATING              = NEP_CONVERGED_ITERATING
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPConvergedReason(NEP_DIVERGED_LINEAR_SOLVE); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 53, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVERGED_LINEAR_SOLVE, __pyx_t_5) < 0) __PYX_ERR(16, 53, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPConvergedReason(NEP_DIVERGED_LINEAR_SOLVE); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 53, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVERGED_LINEAR_SOLVE, __pyx_t_4) < 0) __PYX_ERR(17, 53, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":54
  *     DIVERGED_BREAKDOWN     = NEP_DIVERGED_BREAKDOWN
@@ -61096,10 +63713,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ITERATING              = NEP_CONVERGED_ITERATING
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPConvergedReason(NEP_CONVERGED_ITERATING); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 54, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_ITERATING, __pyx_t_5) < 0) __PYX_ERR(16, 54, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPConvergedReason(NEP_CONVERGED_ITERATING); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 54, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_ITERATING, __pyx_t_4) < 0) __PYX_ERR(17, 54, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":55
  *     DIVERGED_LINEAR_SOLVE  = NEP_DIVERGED_LINEAR_SOLVE
@@ -61108,10 +63725,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class NEPRefine(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPConvergedReason(NEP_CONVERGED_ITERATING); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 55, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ITERATING, __pyx_t_5) < 0) __PYX_ERR(16, 55, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPConvergedReason(NEP_CONVERGED_ITERATING); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 55, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ITERATING, __pyx_t_4) < 0) __PYX_ERR(17, 55, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":48
  *     USER               = NEP_WHICH_USER
@@ -61120,10 +63737,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_TOL          = NEP_CONVERGED_TOL
  *     CONVERGED_USER         = NEP_CONVERGED_USER
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_NEPConvergedReason, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 48, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NEPConvergedReason, __pyx_t_5) < 0) __PYX_ERR(16, 48, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_NEPConvergedReason, __pyx_tuple__49, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NEPConvergedReason, __pyx_t_4) < 0) __PYX_ERR(17, 48, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -61135,15 +63751,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     NEP refinement strategy
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 57, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__50); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 57, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 57, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__50, __pyx_n_s_NEPRefine, __pyx_n_s_NEPRefine, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_NEP_refinement_strategy_NONE_No); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 57, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_NEPRefine, __pyx_n_s_NEPRefine, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_NEP_refinement_strategy_NONE_No); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 57, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/NEP.pyx":65
  *     - `MULTIPLE`: Refine all eigenpairs simultaneously (invariant pair).
@@ -61152,10 +63763,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     SIMPLE   = NEP_REFINE_SIMPLE
  *     MULTIPLE = NEP_REFINE_MULTIPLE
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPRefine(NEP_REFINE_NONE); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 65, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NONE, __pyx_t_5) < 0) __PYX_ERR(16, 65, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPRefine(NEP_REFINE_NONE); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 65, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_NONE, __pyx_t_4) < 0) __PYX_ERR(17, 65, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":66
  *     """
@@ -61164,10 +63775,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     MULTIPLE = NEP_REFINE_MULTIPLE
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPRefine(NEP_REFINE_SIMPLE); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 66, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SIMPLE, __pyx_t_5) < 0) __PYX_ERR(16, 66, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPRefine(NEP_REFINE_SIMPLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 66, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SIMPLE, __pyx_t_4) < 0) __PYX_ERR(17, 66, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":67
  *     NONE     = NEP_REFINE_NONE
@@ -61176,10 +63787,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class NEPRefineScheme(object):
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPRefine(NEP_REFINE_MULTIPLE); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 67, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_MULTIPLE, __pyx_t_5) < 0) __PYX_ERR(16, 67, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPRefine(NEP_REFINE_MULTIPLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_MULTIPLE, __pyx_t_4) < 0) __PYX_ERR(17, 67, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":57
  *     ITERATING              = NEP_CONVERGED_ITERATING
@@ -61188,10 +63799,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     NEP refinement strategy
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_NEPRefine, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 57, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NEPRefine, __pyx_t_5) < 0) __PYX_ERR(16, 57, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_NEPRefine, __pyx_tuple__50, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NEPRefine, __pyx_t_4) < 0) __PYX_ERR(17, 57, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -61203,15 +63813,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     Scheme for solving linear systems during iterative refinement
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 69, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__51); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 69, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 69, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__51, __pyx_n_s_NEPRefineScheme, __pyx_n_s_NEPRefineScheme, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_Scheme_for_solving_linear_syste); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 69, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_NEPRefineScheme, __pyx_n_s_NEPRefineScheme, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_Scheme_for_solving_linear_syste); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 69, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/NEP.pyx":77
  *     - `EXPLICIT`: Build the explicit matrix.
@@ -61220,10 +63825,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     MBE      = NEP_REFINE_SCHEME_MBE
  *     EXPLICIT = NEP_REFINE_SCHEME_EXPLICIT
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPRefineScheme(NEP_REFINE_SCHEME_SCHUR); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 77, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_SCHUR, __pyx_t_5) < 0) __PYX_ERR(16, 77, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPRefineScheme(NEP_REFINE_SCHEME_SCHUR); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 77, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_SCHUR, __pyx_t_4) < 0) __PYX_ERR(17, 77, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":78
  *     """
@@ -61232,10 +63837,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     EXPLICIT = NEP_REFINE_SCHEME_EXPLICIT
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPRefineScheme(NEP_REFINE_SCHEME_MBE); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 78, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_MBE, __pyx_t_5) < 0) __PYX_ERR(16, 78, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPRefineScheme(NEP_REFINE_SCHEME_MBE); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_MBE, __pyx_t_4) < 0) __PYX_ERR(17, 78, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":79
  *     SCHUR    = NEP_REFINE_SCHEME_SCHUR
@@ -61244,10 +63849,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_5 = __Pyx_PyInt_From_NEPRefineScheme(NEP_REFINE_SCHEME_EXPLICIT); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 79, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_EXPLICIT, __pyx_t_5) < 0) __PYX_ERR(16, 79, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_NEPRefineScheme(NEP_REFINE_SCHEME_EXPLICIT); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 79, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_EXPLICIT, __pyx_t_4) < 0) __PYX_ERR(17, 79, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/NEP.pyx":69
  *     MULTIPLE = NEP_REFINE_MULTIPLE
@@ -61256,10 +63861,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     Scheme for solving linear systems during iterative refinement
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_NEPRefineScheme, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 69, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NEPRefineScheme, __pyx_t_5) < 0) __PYX_ERR(16, 69, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_NEPRefineScheme, __pyx_tuple__51, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NEPRefineScheme, __pyx_t_4) < 0) __PYX_ERR(17, 69, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -61271,9 +63875,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ErrorType       = NEPErrorType
  *     Which           = NEPWhich
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NEPType); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 89, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NEPType); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 89, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(16, 89, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(17, 89, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_NEP);
 
@@ -61284,9 +63888,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Which           = NEPWhich
  *     ConvergedReason = NEPConvergedReason
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NEPErrorType); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 90, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NEPErrorType); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 90, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP->tp_dict, __pyx_n_s_ErrorType, __pyx_t_2) < 0) __PYX_ERR(16, 90, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP->tp_dict, __pyx_n_s_ErrorType, __pyx_t_2) < 0) __PYX_ERR(17, 90, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_NEP);
 
@@ -61297,9 +63901,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ConvergedReason = NEPConvergedReason
  *     Refine          = NEPRefine
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NEPWhich); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 91, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NEPWhich); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 91, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP->tp_dict, __pyx_n_s_Which, __pyx_t_2) < 0) __PYX_ERR(16, 91, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP->tp_dict, __pyx_n_s_Which, __pyx_t_2) < 0) __PYX_ERR(17, 91, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_NEP);
 
@@ -61310,9 +63914,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     Refine          = NEPRefine
  *     RefineScheme    = NEPRefineScheme
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NEPConvergedReason); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 92, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NEPConvergedReason); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 92, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP->tp_dict, __pyx_n_s_ConvergedReason, __pyx_t_2) < 0) __PYX_ERR(16, 92, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP->tp_dict, __pyx_n_s_ConvergedReason, __pyx_t_2) < 0) __PYX_ERR(17, 92, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_NEP);
 
@@ -61323,9 +63927,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     RefineScheme    = NEPRefineScheme
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NEPRefine); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 93, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NEPRefine); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 93, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP->tp_dict, __pyx_n_s_Refine, __pyx_t_2) < 0) __PYX_ERR(16, 93, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP->tp_dict, __pyx_n_s_Refine, __pyx_t_2) < 0) __PYX_ERR(17, 93, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_NEP);
 
@@ -61336,65 +63940,65 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  *     def __cinit__(self):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NEPRefineScheme); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 94, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NEPRefineScheme); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 94, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP->tp_dict, __pyx_n_s_RefineScheme, __pyx_t_2) < 0) __PYX_ERR(16, 94, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_NEP->tp_dict, __pyx_n_s_RefineScheme, __pyx_t_2) < 0) __PYX_ERR(17, 94, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_NEP);
 
-  /* "SLEPc/NEP.pyx":684
+  /* "SLEPc/NEP.pyx":677
  * # -----------------------------------------------------------------------------
  * 
  * del NEPType             # <<<<<<<<<<<<<<
  * del NEPErrorType
  * del NEPWhich
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_NEPType) < 0) __PYX_ERR(16, 684, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_NEPType) < 0) __PYX_ERR(17, 677, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":685
+  /* "SLEPc/NEP.pyx":678
  * 
  * del NEPType
  * del NEPErrorType             # <<<<<<<<<<<<<<
  * del NEPWhich
  * del NEPConvergedReason
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_NEPErrorType) < 0) __PYX_ERR(16, 685, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_NEPErrorType) < 0) __PYX_ERR(17, 678, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":686
+  /* "SLEPc/NEP.pyx":679
  * del NEPType
  * del NEPErrorType
  * del NEPWhich             # <<<<<<<<<<<<<<
  * del NEPConvergedReason
  * del NEPRefine
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_NEPWhich) < 0) __PYX_ERR(16, 686, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_NEPWhich) < 0) __PYX_ERR(17, 679, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":687
+  /* "SLEPc/NEP.pyx":680
  * del NEPErrorType
  * del NEPWhich
  * del NEPConvergedReason             # <<<<<<<<<<<<<<
  * del NEPRefine
  * del NEPRefineScheme
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_NEPConvergedReason) < 0) __PYX_ERR(16, 687, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_NEPConvergedReason) < 0) __PYX_ERR(17, 680, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":688
+  /* "SLEPc/NEP.pyx":681
  * del NEPWhich
  * del NEPConvergedReason
  * del NEPRefine             # <<<<<<<<<<<<<<
  * del NEPRefineScheme
  * 
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_NEPRefine) < 0) __PYX_ERR(16, 688, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_NEPRefine) < 0) __PYX_ERR(17, 681, __pyx_L1_error)
 
-  /* "SLEPc/NEP.pyx":689
+  /* "SLEPc/NEP.pyx":682
  * del NEPConvergedReason
  * del NEPRefine
  * del NEPRefineScheme             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_NEPRefineScheme) < 0) __PYX_ERR(16, 689, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_NEPRefineScheme) < 0) __PYX_ERR(17, 682, __pyx_L1_error)
 
   /* "SLEPc/MFN.pyx":3
  * # -----------------------------------------------------------------------------
@@ -61403,15 +64007,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     MFN type
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 3, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__52); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 3, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__52, __pyx_n_s_MFNType, __pyx_n_s_MFNType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_MFN_type_Action_of_a_matrix_fun); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_MFNType, __pyx_n_s_MFNType, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, __pyx_kp_s_MFN_type_Action_of_a_matrix_fun); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/MFN.pyx":12
  *     - `EXPOKIT`: Implementation of the method in Expokit.
@@ -61420,10 +64019,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     EXPOKIT  = S_(MFNEXPOKIT)
  * 
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(MFNKRYLOV); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 12, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_KRYLOV, __pyx_t_5) < 0) __PYX_ERR(17, 12, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(MFNKRYLOV); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_KRYLOV, __pyx_t_4) < 0) __PYX_ERR(18, 12, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/MFN.pyx":13
  *     """
@@ -61432,10 +64031,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * class MFNConvergedReason(object):
  */
-  __pyx_t_5 = __pyx_f_8slepc4py_5SLEPc_S_(MFNEXPOKIT); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 13, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_EXPOKIT, __pyx_t_5) < 0) __PYX_ERR(17, 13, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __pyx_f_8slepc4py_5SLEPc_S_(MFNEXPOKIT); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 13, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_EXPOKIT, __pyx_t_4) < 0) __PYX_ERR(18, 13, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/MFN.pyx":3
  * # -----------------------------------------------------------------------------
@@ -61444,10 +64043,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     """
  *     MFN type
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_MFNType, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MFNType, __pyx_t_5) < 0) __PYX_ERR(17, 3, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_MFNType, __pyx_tuple__52, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MFNType, __pyx_t_4) < 0) __PYX_ERR(18, 3, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -61459,15 +64057,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_TOL       = MFN_CONVERGED_TOL
  *     CONVERGED_ITS       = MFN_CONVERGED_ITS
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 15, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__53); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 15, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(__pyx_builtin_object);
-  __Pyx_GIVEREF(__pyx_builtin_object);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 15, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__53, __pyx_n_s_MFNConvergedReason, __pyx_n_s_MFNConvergedReason, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 15, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_MFNConvergedReason, __pyx_n_s_MFNConvergedReason, (PyObject *) NULL, __pyx_n_s_slepc4py_SLEPc, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 15, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
 
   /* "SLEPc/MFN.pyx":16
  * 
@@ -61476,10 +64069,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_ITS       = MFN_CONVERGED_ITS
  *     DIVERGED_ITS        = MFN_DIVERGED_ITS
  */
-  __pyx_t_5 = __Pyx_PyInt_From_MFNConvergedReason(MFN_CONVERGED_TOL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 16, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_TOL, __pyx_t_5) < 0) __PYX_ERR(17, 16, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_MFNConvergedReason(MFN_CONVERGED_TOL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_TOL, __pyx_t_4) < 0) __PYX_ERR(18, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/MFN.pyx":17
  * class MFNConvergedReason(object):
@@ -61488,10 +64081,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVERGED_ITS        = MFN_DIVERGED_ITS
  *     DIVERGED_BREAKDOWN  = MFN_DIVERGED_BREAKDOWN
  */
-  __pyx_t_5 = __Pyx_PyInt_From_MFNConvergedReason(MFN_CONVERGED_ITS); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 17, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_ITS, __pyx_t_5) < 0) __PYX_ERR(17, 17, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_MFNConvergedReason(MFN_CONVERGED_ITS); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_ITS, __pyx_t_4) < 0) __PYX_ERR(18, 17, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/MFN.pyx":18
  *     CONVERGED_TOL       = MFN_CONVERGED_TOL
@@ -61500,10 +64093,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     DIVERGED_BREAKDOWN  = MFN_DIVERGED_BREAKDOWN
  *     CONVERGED_ITERATING = MFN_CONVERGED_ITERATING
  */
-  __pyx_t_5 = __Pyx_PyInt_From_MFNConvergedReason(MFN_DIVERGED_ITS); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 18, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVERGED_ITS, __pyx_t_5) < 0) __PYX_ERR(17, 18, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_MFNConvergedReason(MFN_DIVERGED_ITS); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 18, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVERGED_ITS, __pyx_t_4) < 0) __PYX_ERR(18, 18, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/MFN.pyx":19
  *     CONVERGED_ITS       = MFN_CONVERGED_ITS
@@ -61512,10 +64105,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_ITERATING = MFN_CONVERGED_ITERATING
  *     ITERATING           = MFN_CONVERGED_ITERATING
  */
-  __pyx_t_5 = __Pyx_PyInt_From_MFNConvergedReason(MFN_DIVERGED_BREAKDOWN); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_DIVERGED_BREAKDOWN, __pyx_t_5) < 0) __PYX_ERR(17, 19, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_MFNConvergedReason(MFN_DIVERGED_BREAKDOWN); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_DIVERGED_BREAKDOWN, __pyx_t_4) < 0) __PYX_ERR(18, 19, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/MFN.pyx":20
  *     DIVERGED_ITS        = MFN_DIVERGED_ITS
@@ -61524,10 +64117,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ITERATING           = MFN_CONVERGED_ITERATING
  * 
  */
-  __pyx_t_5 = __Pyx_PyInt_From_MFNConvergedReason(MFN_CONVERGED_ITERATING); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 20, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_CONVERGED_ITERATING, __pyx_t_5) < 0) __PYX_ERR(17, 20, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_MFNConvergedReason(MFN_CONVERGED_ITERATING); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 20, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_CONVERGED_ITERATING, __pyx_t_4) < 0) __PYX_ERR(18, 20, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/MFN.pyx":21
  *     DIVERGED_BREAKDOWN  = MFN_DIVERGED_BREAKDOWN
@@ -61536,10 +64129,10 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  * # -----------------------------------------------------------------------------
  */
-  __pyx_t_5 = __Pyx_PyInt_From_MFNConvergedReason(MFN_CONVERGED_ITERATING); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 21, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ITERATING, __pyx_t_5) < 0) __PYX_ERR(17, 21, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyInt_From_MFNConvergedReason(MFN_CONVERGED_ITERATING); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_ITERATING, __pyx_t_4) < 0) __PYX_ERR(18, 21, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
   /* "SLEPc/MFN.pyx":15
  *     EXPOKIT  = S_(MFNEXPOKIT)
@@ -61548,10 +64141,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     CONVERGED_TOL       = MFN_CONVERGED_TOL
  *     CONVERGED_ITS       = MFN_CONVERGED_ITS
  */
-  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_MFNConvergedReason, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 15, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MFNConvergedReason, __pyx_t_5) < 0) __PYX_ERR(17, 15, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_MFNConvergedReason, __pyx_tuple__53, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MFNConvergedReason, __pyx_t_4) < 0) __PYX_ERR(18, 15, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -61563,9 +64155,9 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  *     ConvergedReason = MFNConvergedReason
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MFNType); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 31, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MFNType); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 31, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_MFN->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(17, 31, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_MFN->tp_dict, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(18, 31, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_MFN);
 
@@ -61576,67 +64168,66 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
  * 
  *     def __cinit__(self):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MFNConvergedReason); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 32, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MFNConvergedReason); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 32, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_MFN->tp_dict, __pyx_n_s_ConvergedReason, __pyx_t_2) < 0) __PYX_ERR(17, 32, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_8slepc4py_5SLEPc_MFN->tp_dict, __pyx_n_s_ConvergedReason, __pyx_t_2) < 0) __PYX_ERR(18, 32, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_8slepc4py_5SLEPc_MFN);
 
-  /* "SLEPc/MFN.pyx":357
+  /* "SLEPc/MFN.pyx":356
  * # -----------------------------------------------------------------------------
  * 
  * del MFNType             # <<<<<<<<<<<<<<
  * del MFNConvergedReason
  * 
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_MFNType) < 0) __PYX_ERR(17, 357, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_MFNType) < 0) __PYX_ERR(18, 356, __pyx_L1_error)
 
-  /* "SLEPc/MFN.pyx":358
+  /* "SLEPc/MFN.pyx":357
  * 
  * del MFNType
  * del MFNConvergedReason             # <<<<<<<<<<<<<<
  * 
  * # -----------------------------------------------------------------------------
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_MFNConvergedReason) < 0) __PYX_ERR(17, 358, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_MFNConvergedReason) < 0) __PYX_ERR(18, 357, __pyx_L1_error)
 
-  /* "SLEPc/SLEPc.pyx":224
+  /* "SLEPc/SLEPc.pyx":227
  * # -----------------------------------------------------------------------------
  * 
  * def _initialize(args=None):             # <<<<<<<<<<<<<<
  *     cdef int ready = initialize(args)
  *     if ready: register(NULL)
  */
-  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8slepc4py_5SLEPc_1_initialize, NULL, __pyx_n_s_slepc4py_SLEPc); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 224, __pyx_L1_error)
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8slepc4py_5SLEPc_1_initialize, NULL, __pyx_n_s_slepc4py_SLEPc); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 227, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_initialize, __pyx_t_2) < 0) __PYX_ERR(4, 224, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_initialize, __pyx_t_2) < 0) __PYX_ERR(4, 227, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "SLEPc/SLEPc.pyx":228
+  /* "SLEPc/SLEPc.pyx":231
  *     if ready: register(NULL)
  * 
  * def _finalize():             # <<<<<<<<<<<<<<
  *     finalize()
  * 
  */
-  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8slepc4py_5SLEPc_3_finalize, NULL, __pyx_n_s_slepc4py_SLEPc); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 228, __pyx_L1_error)
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8slepc4py_5SLEPc_3_finalize, NULL, __pyx_n_s_slepc4py_SLEPc); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 231, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_finalize, __pyx_t_2) < 0) __PYX_ERR(4, 228, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_finalize, __pyx_t_2) < 0) __PYX_ERR(4, 231, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /*--- Wrapped vars code ---*/
 
-  if (__Pyx_RegisterCleanup()) __PYX_ERR(19, 1, __pyx_L1_error);
+  if (__Pyx_RegisterCleanup()) __PYX_ERR(20, 1, __pyx_L1_error);
   goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
   if (__pyx_m) {
     if (__pyx_d) {
-      __Pyx_AddTraceback("init slepc4py.SLEPc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      __Pyx_AddTraceback("init slepc4py.SLEPc", 0, __pyx_lineno, __pyx_filename);
     }
     Py_DECREF(__pyx_m); __pyx_m = 0;
   } else if (!PyErr_Occurred()) {
@@ -61644,10 +64235,12 @@ PyMODINIT_FUNC PyInit_SLEPc(void)
   }
   __pyx_L0:;
   __Pyx_RefNannyFinishContext();
-  #if PY_MAJOR_VERSION < 3
-  return;
-  #else
+  #if CYTHON_PEP489_MULTI_PHASE_INIT
+  return (__pyx_m != NULL) ? 0 : -1;
+  #elif PY_MAJOR_VERSION >= 3
   return __pyx_m;
+  #else
+  return;
   #endif
 }
 
@@ -61655,10 +64248,57 @@ static void __Pyx_CleanupGlobals(void) {
   Py_CLEAR(__pyx_tuple_);
   Py_CLEAR(__pyx_tuple__3);
   Py_CLEAR(__pyx_tuple__4);
-  Py_CLEAR(__pyx_tuple__5);
   Py_CLEAR(__pyx_tuple__6);
-  Py_CLEAR(__pyx_codeobj__7);
-  Py_CLEAR(__pyx_codeobj__8);
+  Py_CLEAR(__pyx_tuple__7);
+  Py_CLEAR(__pyx_tuple__8);
+  Py_CLEAR(__pyx_tuple__9);
+  Py_CLEAR(__pyx_tuple__10);
+  Py_CLEAR(__pyx_tuple__11);
+  Py_CLEAR(__pyx_tuple__12);
+  Py_CLEAR(__pyx_tuple__13);
+  Py_CLEAR(__pyx_tuple__14);
+  Py_CLEAR(__pyx_tuple__15);
+  Py_CLEAR(__pyx_tuple__16);
+  Py_CLEAR(__pyx_tuple__17);
+  Py_CLEAR(__pyx_tuple__18);
+  Py_CLEAR(__pyx_tuple__19);
+  Py_CLEAR(__pyx_tuple__20);
+  Py_CLEAR(__pyx_tuple__21);
+  Py_CLEAR(__pyx_tuple__22);
+  Py_CLEAR(__pyx_tuple__23);
+  Py_CLEAR(__pyx_tuple__24);
+  Py_CLEAR(__pyx_tuple__25);
+  Py_CLEAR(__pyx_tuple__26);
+  Py_CLEAR(__pyx_tuple__27);
+  Py_CLEAR(__pyx_tuple__28);
+  Py_CLEAR(__pyx_tuple__29);
+  Py_CLEAR(__pyx_tuple__30);
+  Py_CLEAR(__pyx_tuple__31);
+  Py_CLEAR(__pyx_tuple__32);
+  Py_CLEAR(__pyx_tuple__33);
+  Py_CLEAR(__pyx_tuple__34);
+  Py_CLEAR(__pyx_tuple__35);
+  Py_CLEAR(__pyx_tuple__36);
+  Py_CLEAR(__pyx_tuple__37);
+  Py_CLEAR(__pyx_tuple__38);
+  Py_CLEAR(__pyx_tuple__39);
+  Py_CLEAR(__pyx_tuple__40);
+  Py_CLEAR(__pyx_tuple__41);
+  Py_CLEAR(__pyx_tuple__42);
+  Py_CLEAR(__pyx_tuple__43);
+  Py_CLEAR(__pyx_tuple__44);
+  Py_CLEAR(__pyx_tuple__45);
+  Py_CLEAR(__pyx_tuple__46);
+  Py_CLEAR(__pyx_tuple__47);
+  Py_CLEAR(__pyx_tuple__48);
+  Py_CLEAR(__pyx_tuple__49);
+  Py_CLEAR(__pyx_tuple__50);
+  Py_CLEAR(__pyx_tuple__51);
+  Py_CLEAR(__pyx_tuple__52);
+  Py_CLEAR(__pyx_tuple__53);
+  Py_CLEAR(__pyx_tuple__54);
+  Py_CLEAR(__pyx_codeobj__55);
+  Py_CLEAR(__pyx_codeobj__56);
   /* CodeObjectCache.cleanup */
   if (__pyx_code_cache.entries) {
       __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
@@ -61771,6 +64411,149 @@ static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
     }
 }
 
+/* PyCFunctionFastCall */
+#if CYTHON_FAST_PYCCALL
+static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
+    PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
+    PyCFunction meth = PyCFunction_GET_FUNCTION(func);
+    PyObject *self = PyCFunction_GET_SELF(func);
+    int flags = PyCFunction_GET_FLAGS(func);
+    assert(PyCFunction_Check(func));
+    assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
+    assert(nargs >= 0);
+    assert(nargs == 0 || args != NULL);
+    /* _PyCFunction_FastCallDict() must not be called with an exception set,
+       because it may clear it (directly or indirectly) and so the
+       caller loses its exception */
+    assert(!PyErr_Occurred());
+    if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
+        return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
+    } else {
+        return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
+    }
+}
+#endif
+
+/* PyFunctionFastCall */
+#if CYTHON_FAST_PYCALL
+#include "frameobject.h"
+static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
+                                               PyObject *globals) {
+    PyFrameObject *f;
+    PyThreadState *tstate = __Pyx_PyThreadState_Current;
+    PyObject **fastlocals;
+    Py_ssize_t i;
+    PyObject *result;
+    assert(globals != NULL);
+    /* XXX Perhaps we should create a specialized
+       PyFrame_New() that doesn't take locals, but does
+       take builtins without sanity checking them.
+       */
+    assert(tstate != NULL);
+    f = PyFrame_New(tstate, co, globals, NULL);
+    if (f == NULL) {
+        return NULL;
+    }
+    fastlocals = f->f_localsplus;
+    for (i = 0; i < na; i++) {
+        Py_INCREF(*args);
+        fastlocals[i] = *args++;
+    }
+    result = PyEval_EvalFrameEx(f,0);
+    ++tstate->recursion_depth;
+    Py_DECREF(f);
+    --tstate->recursion_depth;
+    return result;
+}
+#if 1 || PY_VERSION_HEX < 0x030600B1
+static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) {
+    PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
+    PyObject *globals = PyFunction_GET_GLOBALS(func);
+    PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
+    PyObject *closure;
+#if PY_MAJOR_VERSION >= 3
+    PyObject *kwdefs;
+#endif
+    PyObject *kwtuple, **k;
+    PyObject **d;
+    Py_ssize_t nd;
+    Py_ssize_t nk;
+    PyObject *result;
+    assert(kwargs == NULL || PyDict_Check(kwargs));
+    nk = kwargs ? PyDict_Size(kwargs) : 0;
+    if (Py_EnterRecursiveCall((char*)" while calling a Python object")) {
+        return NULL;
+    }
+    if (
+#if PY_MAJOR_VERSION >= 3
+            co->co_kwonlyargcount == 0 &&
+#endif
+            likely(kwargs == NULL || nk == 0) &&
+            co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
+        if (argdefs == NULL && co->co_argcount == nargs) {
+            result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
+            goto done;
+        }
+        else if (nargs == 0 && argdefs != NULL
+                 && co->co_argcount == Py_SIZE(argdefs)) {
+            /* function called with no arguments, but all parameters have
+               a default value: use default values as arguments .*/
+            args = &PyTuple_GET_ITEM(argdefs, 0);
+            result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
+            goto done;
+        }
+    }
+    if (kwargs != NULL) {
+        Py_ssize_t pos, i;
+        kwtuple = PyTuple_New(2 * nk);
+        if (kwtuple == NULL) {
+            result = NULL;
+            goto done;
+        }
+        k = &PyTuple_GET_ITEM(kwtuple, 0);
+        pos = i = 0;
+        while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
+            Py_INCREF(k[i]);
+            Py_INCREF(k[i+1]);
+            i += 2;
+        }
+        nk = i / 2;
+    }
+    else {
+        kwtuple = NULL;
+        k = NULL;
+    }
+    closure = PyFunction_GET_CLOSURE(func);
+#if PY_MAJOR_VERSION >= 3
+    kwdefs = PyFunction_GET_KW_DEFAULTS(func);
+#endif
+    if (argdefs != NULL) {
+        d = &PyTuple_GET_ITEM(argdefs, 0);
+        nd = Py_SIZE(argdefs);
+    }
+    else {
+        d = NULL;
+        nd = 0;
+    }
+#if PY_MAJOR_VERSION >= 3
+    result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
+                               args, nargs,
+                               k, (int)nk,
+                               d, (int)nd, kwdefs, closure);
+#else
+    result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
+                               args, nargs,
+                               k, (int)nk,
+                               d, (int)nd, closure);
+#endif
+    Py_XDECREF(kwtuple);
+done:
+    Py_LeaveRecursiveCall();
+    return result;
+}
+#endif
+#endif
+
 /* PyObjectCall */
 #if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
@@ -61824,13 +64607,18 @@ static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
     return result;
 }
 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
-#ifdef __Pyx_CyFunction_USED
-    if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
-#else
-    if (likely(PyCFunction_Check(func))) {
+#if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(func)) {
+        return __Pyx_PyFunction_FastCall(func, &arg, 1);
+    }
 #endif
+    if (likely(PyCFunction_Check(func))) {
         if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
             return __Pyx_PyObject_CallMethO(func, arg);
+#if CYTHON_FAST_PYCCALL
+        } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) {
+            return __Pyx_PyCFunction_FastCall(func, &arg, 1);
+#endif
         }
     }
     return __Pyx__PyObject_CallOneArg(func, arg);
@@ -61847,10 +64635,15 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
 #endif
 
 /* PyObjectCallNoArg */
-  #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
+#if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(func)) {
+        return __Pyx_PyFunction_FastCall(func, NULL, 0);
+    }
+#endif
 #ifdef __Pyx_CyFunction_USED
-    if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
+    if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) {
 #else
     if (likely(PyCFunction_Check(func))) {
 #endif
@@ -61863,7 +64656,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
 #endif
 
 /* RaiseArgTupleInvalid */
-    static void __Pyx_RaiseArgtupleInvalid(
+  static void __Pyx_RaiseArgtupleInvalid(
     const char* func_name,
     int exact,
     Py_ssize_t num_min,
@@ -61889,7 +64682,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
 }
 
 /* KeywordStringCheck */
-    static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
+  static int __Pyx_CheckKeywordStrings(
     PyObject *kwdict,
     const char* function_name,
     int kw_allowed)
@@ -61903,7 +64696,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
 #else
     while (PyDict_Next(kwdict, &pos, &key, 0)) {
         #if PY_MAJOR_VERSION < 3
-        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
+        if (unlikely(!PyString_Check(key)))
         #endif
             if (unlikely(!PyUnicode_Check(key)))
                 goto invalid_keyword_type;
@@ -61929,7 +64722,7 @@ invalid_keyword:
 }
 
 /* PyErrFetchRestore */
-    #if CYTHON_COMPILING_IN_CPYTHON
+  #if CYTHON_FAST_THREAD_STATE
 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
     PyObject *tmp_type, *tmp_value, *tmp_tb;
     tmp_type = tstate->curexc_type;
@@ -61953,7 +64746,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
 #endif
 
 /* WriteUnraisableException */
-    static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+  static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
                                   CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
                                   int full_traceback, CYTHON_UNUSED int nogil) {
     PyObject *old_exc, *old_val, *old_tb;
@@ -61995,25 +64788,25 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
 }
 
 /* RaiseTooManyValuesToUnpack */
-    static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+  static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
     PyErr_Format(PyExc_ValueError,
                  "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
 }
 
 /* RaiseNeedMoreValuesToUnpack */
-    static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+  static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
     PyErr_Format(PyExc_ValueError,
                  "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
                  index, (index == 1) ? "" : "s");
 }
 
 /* IterFinish */
-    static CYTHON_INLINE int __Pyx_IterFinish(void) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    PyThreadState *tstate = PyThreadState_GET();
+  static CYTHON_INLINE int __Pyx_IterFinish(void) {
+#if CYTHON_FAST_THREAD_STATE
+    PyThreadState *tstate = __Pyx_PyThreadState_Current;
     PyObject* exc_type = tstate->curexc_type;
     if (unlikely(exc_type)) {
-        if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) {
+        if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) {
             PyObject *exc_value, *exc_tb;
             exc_value = tstate->curexc_value;
             exc_tb = tstate->curexc_traceback;
@@ -62043,7 +64836,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
 }
 
 /* UnpackItemEndCheck */
-    static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
+  static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
     if (unlikely(retval)) {
         Py_DECREF(retval);
         __Pyx_RaiseTooManyValuesError(expected);
@@ -62055,7 +64848,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
 }
 
 /* SaveResetException */
-    #if CYTHON_COMPILING_IN_CPYTHON
+  #if CYTHON_FAST_THREAD_STATE
 static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
     *type = tstate->exc_type;
     *value = tstate->exc_value;
@@ -62079,23 +64872,38 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
 #endif
 
 /* PyErrExceptionMatches */
-    #if CYTHON_COMPILING_IN_CPYTHON
+  #if CYTHON_FAST_THREAD_STATE
+static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+    Py_ssize_t i, n;
+    n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+    for (i=0; i<n; i++) {
+        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+    }
+#endif
+    for (i=0; i<n; i++) {
+        if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
+    }
+    return 0;
+}
 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
     PyObject *exc_type = tstate->curexc_type;
     if (exc_type == err) return 1;
     if (unlikely(!exc_type)) return 0;
-    return PyErr_GivenExceptionMatches(exc_type, err);
+    if (unlikely(PyTuple_Check(err)))
+        return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
+    return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
 }
 #endif
 
 /* GetException */
-    #if CYTHON_COMPILING_IN_CPYTHON
+  #if CYTHON_FAST_THREAD_STATE
 static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
 #else
 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
 #endif
     PyObject *local_type, *local_value, *local_tb;
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_FAST_THREAD_STATE
     PyObject *tmp_type, *tmp_value, *tmp_tb;
     local_type = tstate->curexc_type;
     local_value = tstate->curexc_value;
@@ -62107,7 +64915,7 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
     PyErr_Fetch(&local_type, &local_value, &local_tb);
 #endif
     PyErr_NormalizeException(&local_type, &local_value, &local_tb);
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_FAST_THREAD_STATE
     if (unlikely(tstate->curexc_type))
 #else
     if (unlikely(PyErr_Occurred()))
@@ -62125,7 +64933,7 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
     *type = local_type;
     *value = local_value;
     *tb = local_tb;
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_FAST_THREAD_STATE
     tmp_type = tstate->exc_type;
     tmp_value = tstate->exc_value;
     tmp_tb = tstate->exc_traceback;
@@ -62150,7 +64958,7 @@ bad:
 }
 
 /* RaiseException */
-      #if PY_MAJOR_VERSION < 3
+    #if PY_MAJOR_VERSION < 3
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
                         CYTHON_UNUSED PyObject *cause) {
     __Pyx_PyThreadState_declare
@@ -62265,11 +65073,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject
             "raise: exception class must be a subclass of BaseException");
         goto bad;
     }
-#if PY_VERSION_HEX >= 0x03030000
     if (cause) {
-#else
-    if (cause && cause != Py_None) {
-#endif
         PyObject *fixed_cause;
         if (cause == Py_None) {
             fixed_cause = NULL;
@@ -62297,7 +65101,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject
         PyErr_Restore(tmp_type, tmp_value, tb);
         Py_XDECREF(tmp_tb);
 #else
-        PyThreadState *tstate = PyThreadState_GET();
+        PyThreadState *tstate = __Pyx_PyThreadState_Current;
         PyObject* tmp_tb = tstate->curexc_traceback;
         if (tb != tmp_tb) {
             Py_INCREF(tb);
@@ -62313,7 +65117,7 @@ bad:
 #endif
 
 /* GetItemInt */
-        static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+    static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
     PyObject *r;
     if (!j) return NULL;
     r = PyObject_GetItem(o, j);
@@ -62323,10 +65127,13 @@ bad:
 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                               CYTHON_NCP_UNUSED int wraparound,
                                                               CYTHON_NCP_UNUSED int boundscheck) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o);
-    if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
-        PyObject *r = PyList_GET_ITEM(o, i);
+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    Py_ssize_t wrapped_i = i;
+    if (wraparound & unlikely(i < 0)) {
+        wrapped_i += PyList_GET_SIZE(o);
+    }
+    if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+        PyObject *r = PyList_GET_ITEM(o, wrapped_i);
         Py_INCREF(r);
         return r;
     }
@@ -62338,10 +65145,13 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                               CYTHON_NCP_UNUSED int wraparound,
                                                               CYTHON_NCP_UNUSED int boundscheck) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o);
-    if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
-        PyObject *r = PyTuple_GET_ITEM(o, i);
+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    Py_ssize_t wrapped_i = i;
+    if (wraparound & unlikely(i < 0)) {
+        wrapped_i += PyTuple_GET_SIZE(o);
+    }
+    if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+        PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
         Py_INCREF(r);
         return r;
     }
@@ -62353,7 +65163,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
                                                      CYTHON_NCP_UNUSED int wraparound,
                                                      CYTHON_NCP_UNUSED int boundscheck) {
-#if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
     if (is_list || PyList_CheckExact(o)) {
         Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
         if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
@@ -62394,7 +65204,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
 }
 
 /* RaiseDoubleKeywords */
-        static void __Pyx_RaiseDoubleKeywordsError(
+    static void __Pyx_RaiseDoubleKeywordsError(
     const char* func_name,
     PyObject* kw_name)
 {
@@ -62408,7 +65218,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
 }
 
 /* ParseKeywords */
-        static int __Pyx_ParseOptionalKeywords(
+    static int __Pyx_ParseOptionalKeywords(
     PyObject *kwds,
     PyObject **argnames[],
     PyObject *kwds2,
@@ -62510,24 +65320,35 @@ bad:
 }
 
 /* PyObjectCallMethod1 */
-        static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
-    PyObject *method, *result = NULL;
-    method = __Pyx_PyObject_GetAttrStr(obj, method_name);
-    if (unlikely(!method)) goto bad;
-#if CYTHON_COMPILING_IN_CPYTHON
+    static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
+    PyObject *result = NULL;
+#if CYTHON_UNPACK_METHODS
     if (likely(PyMethod_Check(method))) {
         PyObject *self = PyMethod_GET_SELF(method);
         if (likely(self)) {
             PyObject *args;
             PyObject *function = PyMethod_GET_FUNCTION(method);
+            #if CYTHON_FAST_PYCALL
+            if (PyFunction_Check(function)) {
+                PyObject *args[2] = {self, arg};
+                result = __Pyx_PyFunction_FastCall(function, args, 2);
+                goto done;
+            }
+            #endif
+            #if CYTHON_FAST_PYCCALL
+            if (__Pyx_PyFastCFunction_Check(function)) {
+                PyObject *args[2] = {self, arg};
+                result = __Pyx_PyCFunction_FastCall(function, args, 2);
+                goto done;
+            }
+            #endif
             args = PyTuple_New(2);
-            if (unlikely(!args)) goto bad;
+            if (unlikely(!args)) goto done;
             Py_INCREF(self);
             PyTuple_SET_ITEM(args, 0, self);
             Py_INCREF(arg);
             PyTuple_SET_ITEM(args, 1, arg);
             Py_INCREF(function);
-            Py_DECREF(method); method = NULL;
             result = __Pyx_PyObject_Call(function, args, NULL);
             Py_DECREF(args);
             Py_DECREF(function);
@@ -62536,13 +65357,22 @@ bad:
     }
 #endif
     result = __Pyx_PyObject_CallOneArg(method, arg);
-bad:
+    goto done;
+done:
+    return result;
+}
+static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
+    PyObject *method, *result = NULL;
+    method = __Pyx_PyObject_GetAttrStr(obj, method_name);
+    if (unlikely(!method)) goto done;
+    result = __Pyx__PyObject_CallMethod1(method, arg);
+done:
     Py_XDECREF(method);
     return result;
 }
 
 /* append */
-        static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
+    static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
     if (likely(PyList_CheckExact(L))) {
         if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1;
     } else {
@@ -62555,39 +65385,33 @@ bad:
 }
 
 /* ArgTypeTest */
-        static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) {
-    PyErr_Format(PyExc_TypeError,
-        "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
-        name, type->tp_name, Py_TYPE(obj)->tp_name);
-}
-static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
-    const char *name, int exact)
+    static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
 {
     if (unlikely(!type)) {
         PyErr_SetString(PyExc_SystemError, "Missing type object");
         return 0;
     }
-    if (none_allowed && obj == Py_None) return 1;
     else if (exact) {
-        if (likely(Py_TYPE(obj) == type)) return 1;
         #if PY_MAJOR_VERSION == 2
-        else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
+        if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
         #endif
     }
     else {
-        if (likely(PyObject_TypeCheck(obj, type))) return 1;
+        if (likely(__Pyx_TypeCheck(obj, type))) return 1;
     }
-    __Pyx_RaiseArgumentTypeInvalid(name, obj, type);
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
     return 0;
 }
 
 /* ExtTypeTest */
-        static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
     if (unlikely(!type)) {
         PyErr_SetString(PyExc_SystemError, "Missing type object");
         return 0;
     }
-    if (likely(PyObject_TypeCheck(obj, type)))
+    if (likely(__Pyx_TypeCheck(obj, type)))
         return 1;
     PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
                  Py_TYPE(obj)->tp_name, type->tp_name);
@@ -62595,9 +65419,9 @@ static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, in
 }
 
 /* GetModuleGlobalName */
-        static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+    static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
     PyObject *result;
-#if CYTHON_COMPILING_IN_CPYTHON
+#if !CYTHON_AVOID_BORROWED_REFS
     result = PyDict_GetItem(__pyx_d, name);
     if (likely(result)) {
         Py_INCREF(result);
@@ -62613,7 +65437,7 @@ static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, in
 }
 
 /* CallNextTpDealloc */
-          static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) {
+      static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) {
     PyTypeObject* type = Py_TYPE(obj);
     while (type && type->tp_dealloc != current_tp_dealloc)
         type = type->tp_base;
@@ -62624,7 +65448,7 @@ static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, in
 }
 
 /* CallNextTpTraverse */
-          static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
+      static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
     PyTypeObject* type = Py_TYPE(obj);
     while (type && type->tp_traverse != current_tp_traverse)
         type = type->tp_base;
@@ -62636,7 +65460,7 @@ static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, in
 }
 
 /* CallNextTpClear */
-          static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
+      static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
     PyTypeObject* type = Py_TYPE(obj);
     while (type && type->tp_clear != current_tp_clear)
         type = type->tp_base;
@@ -62647,7 +65471,7 @@ static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, in
 }
 
 /* GetVTable */
-          static void* __Pyx_GetVtable(PyObject *dict) {
+      static void* __Pyx_GetVtable(PyObject *dict) {
     void* ptr;
     PyObject *ob = PyObject_GetItem(dict, __pyx_n_s_pyx_vtable);
     if (!ob)
@@ -62667,7 +65491,7 @@ bad:
 }
 
 /* SetVTable */
-          static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+      static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
 #if PY_VERSION_HEX >= 0x02070000
     PyObject *ob = PyCapsule_New(vtable, 0, 0);
 #else
@@ -62685,13 +65509,13 @@ bad:
 }
 
 /* Import */
-          static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+      static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
     PyObject *empty_list = 0;
     PyObject *module = 0;
     PyObject *global_dict = 0;
     PyObject *empty_dict = 0;
     PyObject *list;
-    #if PY_VERSION_HEX < 0x03030000
+    #if PY_MAJOR_VERSION < 3
     PyObject *py_import;
     py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
     if (!py_import)
@@ -62715,17 +65539,8 @@ bad:
         #if PY_MAJOR_VERSION >= 3
         if (level == -1) {
             if (strchr(__Pyx_MODULE_NAME, '.')) {
-                #if PY_VERSION_HEX < 0x03030000
-                PyObject *py_level = PyInt_FromLong(1);
-                if (!py_level)
-                    goto bad;
-                module = PyObject_CallFunctionObjArgs(py_import,
-                    name, global_dict, empty_dict, list, py_level, NULL);
-                Py_DECREF(py_level);
-                #else
                 module = PyImport_ImportModuleLevelObject(
                     name, global_dict, empty_dict, list, 1);
-                #endif
                 if (!module) {
                     if (!PyErr_ExceptionMatches(PyExc_ImportError))
                         goto bad;
@@ -62736,7 +65551,7 @@ bad:
         }
         #endif
         if (!module) {
-            #if PY_VERSION_HEX < 0x03030000
+            #if PY_MAJOR_VERSION < 3
             PyObject *py_level = PyInt_FromLong(level);
             if (!py_level)
                 goto bad;
@@ -62750,7 +65565,7 @@ bad:
         }
     }
 bad:
-    #if PY_VERSION_HEX < 0x03030000
+    #if PY_MAJOR_VERSION < 3
     Py_XDECREF(py_import);
     #endif
     Py_XDECREF(empty_list);
@@ -62759,7 +65574,7 @@ bad:
 }
 
 /* ImportFrom */
-          static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+      static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
     PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
     if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
         PyErr_Format(PyExc_ImportError,
@@ -62773,16 +65588,70 @@ bad:
 }
 
 /* GetNameInClass */
-          static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) {
+      static PyObject *__Pyx_GetGlobalNameAfterAttributeLookup(PyObject *name) {
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
+        return NULL;
+    __Pyx_PyErr_Clear();
+    return __Pyx_GetModuleGlobalName(name);
+}
+static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) {
     PyObject *result;
     result = __Pyx_PyObject_GetAttrStr(nmspace, name);
-    if (!result)
-        result = __Pyx_GetModuleGlobalName(name);
+    if (!result) {
+        result = __Pyx_GetGlobalNameAfterAttributeLookup(name);
+    }
     return result;
 }
 
+/* ClassMethod */
+      static PyObject* __Pyx_Method_ClassMethod(PyObject *method) {
+#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM <= 0x05080000
+    if (PyObject_TypeCheck(method, &PyWrapperDescr_Type)) {
+        return PyClassMethod_New(method);
+    }
+#else
+#if CYTHON_COMPILING_IN_PYSTON || CYTHON_COMPILING_IN_PYPY
+    if (PyMethodDescr_Check(method)) {
+#else
+    static PyTypeObject *methoddescr_type = NULL;
+    if (methoddescr_type == NULL) {
+       PyObject *meth = PyObject_GetAttrString((PyObject*)&PyList_Type, "append");
+       if (!meth) return NULL;
+       methoddescr_type = Py_TYPE(meth);
+       Py_DECREF(meth);
+    }
+    if (__Pyx_TypeCheck(method, methoddescr_type)) {
+#endif
+        PyMethodDescrObject *descr = (PyMethodDescrObject *)method;
+        #if PY_VERSION_HEX < 0x03020000
+        PyTypeObject *d_type = descr->d_type;
+        #else
+        PyTypeObject *d_type = descr->d_common.d_type;
+        #endif
+        return PyDescr_NewClassMethod(d_type, descr->d_method);
+    }
+#endif
+    else if (PyMethod_Check(method)) {
+        return PyClassMethod_New(PyMethod_GET_FUNCTION(method));
+    }
+    else if (PyCFunction_Check(method)) {
+        return PyClassMethod_New(method);
+    }
+#ifdef __Pyx_CyFunction_USED
+    else if (__Pyx_TypeCheck(method, __pyx_CyFunctionType)) {
+        return PyClassMethod_New(method);
+    }
+#endif
+    PyErr_SetString(PyExc_TypeError,
+                   "Class-level classmethod() can only be called on "
+                   "a method_descriptor or instance method.");
+    return NULL;
+}
+
 /* CalculateMetaclass */
-          static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
+        static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
     Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
     for (i=0; i < nbases; i++) {
         PyTypeObject *tmptype;
@@ -62821,7 +65690,7 @@ bad:
 }
 
 /* Py3ClassCreate */
-          static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
+        static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
                                            PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
     PyObject *ns;
     if (metaclass) {
@@ -62888,7 +65757,7 @@ static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObj
 }
 
 /* ModuleImport */
-          #ifndef __PYX_HAVE_RT_ImportModule
+        #ifndef __PYX_HAVE_RT_ImportModule
 #define __PYX_HAVE_RT_ImportModule
 static PyObject *__Pyx_ImportModule(const char *name) {
     PyObject *py_name = 0;
@@ -62906,7 +65775,7 @@ bad:
 #endif
 
 /* RegisterModuleCleanup */
-          #if PY_MAJOR_VERSION < 3
+        #if PY_MAJOR_VERSION < 3
 static PyObject* __pyx_module_cleanup_atexit(PyObject *module, CYTHON_UNUSED PyObject *unused) {
     __pyx_module_cleanup(module);
     Py_INCREF(Py_None); return Py_None;
@@ -62967,13 +65836,49 @@ bad:
 }
 #else
 static int __Pyx_RegisterCleanup(void) {
-    if (0) __Pyx_ImportModule(NULL);
+    if ((0)) __Pyx_ImportModule(NULL);
     return 0;
 }
 #endif
 
+/* CLineInTraceback */
+        static int __Pyx_CLineForTraceback(int c_line) {
+#ifdef CYTHON_CLINE_IN_TRACEBACK
+    return ((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0;
+#else
+    PyObject *use_cline;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject **cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
+    if (likely(cython_runtime_dict)) {
+      use_cline = PyDict_GetItem(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+    } else
+#endif
+    {
+      PyObject *ptype, *pvalue, *ptraceback;
+      PyObject *use_cline_obj;
+      PyErr_Fetch(&ptype, &pvalue, &ptraceback);
+      use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
+      if (use_cline_obj) {
+        use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
+        Py_DECREF(use_cline_obj);
+      } else {
+        use_cline = NULL;
+      }
+      PyErr_Restore(ptype, pvalue, ptraceback);
+    }
+    if (!use_cline) {
+        c_line = 0;
+        PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
+    }
+    else if (PyObject_Not(use_cline) != 0) {
+        c_line = 0;
+    }
+    return c_line;
+#endif
+}
+
 /* CodeObjectCache */
-          static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+        static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
     int start = 0, mid = 0, end = count - 1;
     if (end >= 0 && code_line > entries[end].code_line) {
         return count;
@@ -63053,7 +65958,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
 }
 
 /* AddTraceback */
-          #include "compile.h"
+        #include "compile.h"
 #include "frameobject.h"
 #include "traceback.h"
 static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -63112,21 +66017,24 @@ static void __Pyx_AddTraceback(const char *funcname, int c_line,
                                int py_line, const char *filename) {
     PyCodeObject *py_code = 0;
     PyFrameObject *py_frame = 0;
-    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (c_line) {
+        c_line = __Pyx_CLineForTraceback(c_line);
+    }
+    py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
     if (!py_code) {
         py_code = __Pyx_CreateCodeObjectForTraceback(
             funcname, c_line, py_line, filename);
         if (!py_code) goto bad;
-        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+        __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
     }
     py_frame = PyFrame_New(
-        PyThreadState_GET(), /*PyThreadState *tstate,*/
-        py_code,             /*PyCodeObject *code,*/
-        __pyx_d,      /*PyObject *globals,*/
-        0                    /*PyObject *locals*/
+        __Pyx_PyThreadState_Current, /*PyThreadState *tstate,*/
+        py_code,                     /*PyCodeObject *code,*/
+        __pyx_d,              /*PyObject *globals,*/
+        0                            /*PyObject *locals*/
     );
     if (!py_frame) goto bad;
-    py_frame->f_lineno = py_line;
+    __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
     PyTraceBack_Here(py_frame);
 bad:
     Py_XDECREF(py_code);
@@ -63134,7 +66042,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
     const int neg_one = (int) -1, const_zero = (int) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63142,14 +66050,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(int) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(int) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63161,7 +66073,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_STMatMode(STMatMode value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_STMatMode(STMatMode value) {
     const STMatMode neg_one = (STMatMode) -1, const_zero = (STMatMode) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63169,14 +66081,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(STMatMode) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(STMatMode) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(STMatMode) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(STMatMode) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63188,7 +66104,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_BVOrthogType(BVOrthogType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_BVOrthogType(BVOrthogType value) {
     const BVOrthogType neg_one = (BVOrthogType) -1, const_zero = (BVOrthogType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63196,14 +66112,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(BVOrthogType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(BVOrthogType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(BVOrthogType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(BVOrthogType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63215,7 +66135,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_BVOrthogRefineType(BVOrthogRefineType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_BVOrthogRefineType(BVOrthogRefineType value) {
     const BVOrthogRefineType neg_one = (BVOrthogRefineType) -1, const_zero = (BVOrthogRefineType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63223,14 +66143,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(BVOrthogRefineType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(BVOrthogRefineType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(BVOrthogRefineType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(BVOrthogRefineType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63242,7 +66166,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_BVOrthogBlockType(BVOrthogBlockType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_BVOrthogBlockType(BVOrthogBlockType value) {
     const BVOrthogBlockType neg_one = (BVOrthogBlockType) -1, const_zero = (BVOrthogBlockType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63250,14 +66174,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(BVOrthogBlockType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(BVOrthogBlockType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(BVOrthogBlockType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(BVOrthogBlockType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63269,7 +66197,7 @@ bad:
 }
 
 /* CIntFromPyVerify */
-          #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+        #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
     __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
 #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
     __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -63291,7 +66219,7 @@ bad:
     }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_DSStateType(DSStateType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_DSStateType(DSStateType value) {
     const DSStateType neg_one = (DSStateType) -1, const_zero = (DSStateType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63299,14 +66227,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(DSStateType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(DSStateType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(DSStateType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(DSStateType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63318,7 +66250,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_DSMatType(DSMatType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_DSMatType(DSMatType value) {
     const DSMatType neg_one = (DSMatType) -1, const_zero = (DSMatType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63326,14 +66258,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(DSMatType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(DSMatType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(DSMatType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(DSMatType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63345,7 +66281,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_FNCombineType(FNCombineType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_FNCombineType(FNCombineType value) {
     const FNCombineType neg_one = (FNCombineType) -1, const_zero = (FNCombineType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63353,14 +66289,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(FNCombineType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(FNCombineType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(FNCombineType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(FNCombineType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63372,7 +66312,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSProblemType(EPSProblemType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSProblemType(EPSProblemType value) {
     const EPSProblemType neg_one = (EPSProblemType) -1, const_zero = (EPSProblemType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63380,14 +66320,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(EPSProblemType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSProblemType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(EPSProblemType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSProblemType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63399,7 +66343,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSExtraction(EPSExtraction value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSExtraction(EPSExtraction value) {
     const EPSExtraction neg_one = (EPSExtraction) -1, const_zero = (EPSExtraction) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63407,14 +66351,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(EPSExtraction) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSExtraction) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(EPSExtraction) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSExtraction) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63426,7 +66374,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSBalance(EPSBalance value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSBalance(EPSBalance value) {
     const EPSBalance neg_one = (EPSBalance) -1, const_zero = (EPSBalance) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63434,14 +66382,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(EPSBalance) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSBalance) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(EPSBalance) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSBalance) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63453,7 +66405,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSErrorType(EPSErrorType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSErrorType(EPSErrorType value) {
     const EPSErrorType neg_one = (EPSErrorType) -1, const_zero = (EPSErrorType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63461,14 +66413,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(EPSErrorType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSErrorType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(EPSErrorType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSErrorType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63480,7 +66436,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSWhich(EPSWhich value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSWhich(EPSWhich value) {
     const EPSWhich neg_one = (EPSWhich) -1, const_zero = (EPSWhich) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63488,14 +66444,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(EPSWhich) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSWhich) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(EPSWhich) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSWhich) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63507,7 +66467,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSConv(EPSConv value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSConv(EPSConv value) {
     const EPSConv neg_one = (EPSConv) -1, const_zero = (EPSConv) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63515,14 +66475,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(EPSConv) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSConv) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(EPSConv) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSConv) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63534,7 +66498,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSConvergedReason(EPSConvergedReason value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSConvergedReason(EPSConvergedReason value) {
     const EPSConvergedReason neg_one = (EPSConvergedReason) -1, const_zero = (EPSConvergedReason) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63542,14 +66506,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(EPSConvergedReason) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSConvergedReason) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(EPSConvergedReason) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSConvergedReason) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63561,7 +66529,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSPowerShiftType(EPSPowerShiftType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSPowerShiftType(EPSPowerShiftType value) {
     const EPSPowerShiftType neg_one = (EPSPowerShiftType) -1, const_zero = (EPSPowerShiftType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63569,14 +66537,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(EPSPowerShiftType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSPowerShiftType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(EPSPowerShiftType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSPowerShiftType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63588,7 +66560,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSLanczosReorthogType(EPSLanczosReorthogType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_EPSLanczosReorthogType(EPSLanczosReorthogType value) {
     const EPSLanczosReorthogType neg_one = (EPSLanczosReorthogType) -1, const_zero = (EPSLanczosReorthogType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63596,14 +66568,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(EPSLanczosReorthogType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSLanczosReorthogType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(EPSLanczosReorthogType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(EPSLanczosReorthogType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63615,7 +66591,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_SVDErrorType(SVDErrorType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_SVDErrorType(SVDErrorType value) {
     const SVDErrorType neg_one = (SVDErrorType) -1, const_zero = (SVDErrorType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63623,14 +66599,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(SVDErrorType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(SVDErrorType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(SVDErrorType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(SVDErrorType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63642,7 +66622,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_SVDWhich(SVDWhich value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_SVDWhich(SVDWhich value) {
     const SVDWhich neg_one = (SVDWhich) -1, const_zero = (SVDWhich) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63650,14 +66630,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(SVDWhich) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(SVDWhich) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(SVDWhich) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(SVDWhich) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63669,7 +66653,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_SVDConvergedReason(SVDConvergedReason value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_SVDConvergedReason(SVDConvergedReason value) {
     const SVDConvergedReason neg_one = (SVDConvergedReason) -1, const_zero = (SVDConvergedReason) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63677,14 +66661,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(SVDConvergedReason) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(SVDConvergedReason) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(SVDConvergedReason) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(SVDConvergedReason) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63696,7 +66684,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPProblemType(PEPProblemType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPProblemType(PEPProblemType value) {
     const PEPProblemType neg_one = (PEPProblemType) -1, const_zero = (PEPProblemType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63704,14 +66692,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(PEPProblemType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPProblemType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(PEPProblemType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPProblemType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63723,7 +66715,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPWhich(PEPWhich value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPWhich(PEPWhich value) {
     const PEPWhich neg_one = (PEPWhich) -1, const_zero = (PEPWhich) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63731,14 +66723,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(PEPWhich) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPWhich) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(PEPWhich) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPWhich) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63750,7 +66746,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPBasis(PEPBasis value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPBasis(PEPBasis value) {
     const PEPBasis neg_one = (PEPBasis) -1, const_zero = (PEPBasis) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63758,14 +66754,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(PEPBasis) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPBasis) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(PEPBasis) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPBasis) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63777,7 +66777,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPScale(PEPScale value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPScale(PEPScale value) {
     const PEPScale neg_one = (PEPScale) -1, const_zero = (PEPScale) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63785,14 +66785,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(PEPScale) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPScale) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(PEPScale) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPScale) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63804,7 +66808,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPRefine(PEPRefine value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPRefine(PEPRefine value) {
     const PEPRefine neg_one = (PEPRefine) -1, const_zero = (PEPRefine) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63812,14 +66816,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(PEPRefine) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPRefine) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(PEPRefine) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPRefine) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63831,7 +66839,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPRefineScheme(PEPRefineScheme value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPRefineScheme(PEPRefineScheme value) {
     const PEPRefineScheme neg_one = (PEPRefineScheme) -1, const_zero = (PEPRefineScheme) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63839,14 +66847,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(PEPRefineScheme) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPRefineScheme) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(PEPRefineScheme) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPRefineScheme) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63858,7 +66870,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPExtract(PEPExtract value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPExtract(PEPExtract value) {
     const PEPExtract neg_one = (PEPExtract) -1, const_zero = (PEPExtract) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63866,14 +66878,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(PEPExtract) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPExtract) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(PEPExtract) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPExtract) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63885,7 +66901,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPErrorType(PEPErrorType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPErrorType(PEPErrorType value) {
     const PEPErrorType neg_one = (PEPErrorType) -1, const_zero = (PEPErrorType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63893,14 +66909,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(PEPErrorType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPErrorType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(PEPErrorType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPErrorType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63912,7 +66932,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPConv(PEPConv value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPConv(PEPConv value) {
     const PEPConv neg_one = (PEPConv) -1, const_zero = (PEPConv) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63920,14 +66940,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(PEPConv) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPConv) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(PEPConv) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPConv) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63939,7 +66963,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPConvergedReason(PEPConvergedReason value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PEPConvergedReason(PEPConvergedReason value) {
     const PEPConvergedReason neg_one = (PEPConvergedReason) -1, const_zero = (PEPConvergedReason) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63947,14 +66971,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(PEPConvergedReason) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPConvergedReason) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(PEPConvergedReason) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PEPConvergedReason) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63966,7 +66994,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_NEPErrorType(NEPErrorType value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_NEPErrorType(NEPErrorType value) {
     const NEPErrorType neg_one = (NEPErrorType) -1, const_zero = (NEPErrorType) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -63974,14 +67002,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(NEPErrorType) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(NEPErrorType) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(NEPErrorType) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(NEPErrorType) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -63993,7 +67025,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_NEPWhich(NEPWhich value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_NEPWhich(NEPWhich value) {
     const NEPWhich neg_one = (NEPWhich) -1, const_zero = (NEPWhich) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -64001,14 +67033,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(NEPWhich) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(NEPWhich) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(NEPWhich) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(NEPWhich) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -64020,7 +67056,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_NEPConvergedReason(NEPConvergedReason value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_NEPConvergedReason(NEPConvergedReason value) {
     const NEPConvergedReason neg_one = (NEPConvergedReason) -1, const_zero = (NEPConvergedReason) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -64028,14 +67064,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(NEPConvergedReason) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(NEPConvergedReason) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(NEPConvergedReason) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(NEPConvergedReason) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -64047,7 +67087,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_NEPRefine(NEPRefine value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_NEPRefine(NEPRefine value) {
     const NEPRefine neg_one = (NEPRefine) -1, const_zero = (NEPRefine) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -64055,14 +67095,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(NEPRefine) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(NEPRefine) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(NEPRefine) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(NEPRefine) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -64074,7 +67118,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_NEPRefineScheme(NEPRefineScheme value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_NEPRefineScheme(NEPRefineScheme value) {
     const NEPRefineScheme neg_one = (NEPRefineScheme) -1, const_zero = (NEPRefineScheme) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -64082,14 +67126,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(NEPRefineScheme) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(NEPRefineScheme) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(NEPRefineScheme) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(NEPRefineScheme) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -64101,7 +67149,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MFNConvergedReason(MFNConvergedReason value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MFNConvergedReason(MFNConvergedReason value) {
     const MFNConvergedReason neg_one = (MFNConvergedReason) -1, const_zero = (MFNConvergedReason) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -64109,14 +67157,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(MFNConvergedReason) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(MFNConvergedReason) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(MFNConvergedReason) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(MFNConvergedReason) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -64128,7 +67180,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
     const long neg_one = (long) -1, const_zero = (long) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -64136,14 +67188,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(long) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(long) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -64155,7 +67211,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PetscInt(PetscInt value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PetscInt(PetscInt value) {
     const PetscInt neg_one = (PetscInt) -1, const_zero = (PetscInt) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -64163,14 +67219,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(PetscInt) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PetscInt) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(PetscInt) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PetscInt) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -64182,7 +67242,7 @@ bad:
 }
 
 /* CIntToPy */
-          static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PetscBool(PetscBool value) {
+        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PetscBool(PetscBool value) {
     const PetscBool neg_one = (PetscBool) -1, const_zero = (PetscBool) 0;
     const int is_unsigned = neg_one > const_zero;
     if (is_unsigned) {
@@ -64190,14 +67250,18 @@ bad:
             return PyInt_FromLong((long) value);
         } else if (sizeof(PetscBool) <= sizeof(unsigned long)) {
             return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PetscBool) <= sizeof(unsigned PY_LONG_LONG)) {
             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
         }
     } else {
         if (sizeof(PetscBool) <= sizeof(long)) {
             return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
         } else if (sizeof(PetscBool) <= sizeof(PY_LONG_LONG)) {
             return PyLong_FromLongLong((PY_LONG_LONG) value);
+#endif
         }
     }
     {
@@ -64208,49 +67272,8 @@ bad:
     }
 }
 
-/* ClassMethod */
-          static PyObject* __Pyx_Method_ClassMethod(PyObject *method) {
-#if CYTHON_COMPILING_IN_PYPY
-    if (PyObject_TypeCheck(method, &PyWrapperDescr_Type)) {
-        return PyClassMethod_New(method);
-    }
-#else
-    static PyTypeObject *methoddescr_type = NULL;
-    if (methoddescr_type == NULL) {
-       PyObject *meth = PyObject_GetAttrString((PyObject*)&PyList_Type, "append");
-       if (!meth) return NULL;
-       methoddescr_type = Py_TYPE(meth);
-       Py_DECREF(meth);
-    }
-    if (PyObject_TypeCheck(method, methoddescr_type)) {
-        PyMethodDescrObject *descr = (PyMethodDescrObject *)method;
-        #if PY_VERSION_HEX < 0x03020000
-        PyTypeObject *d_type = descr->d_type;
-        #else
-        PyTypeObject *d_type = descr->d_common.d_type;
-        #endif
-        return PyDescr_NewClassMethod(d_type, descr->d_method);
-    }
-#endif
-    else if (PyMethod_Check(method)) {
-        return PyClassMethod_New(PyMethod_GET_FUNCTION(method));
-    }
-    else if (PyCFunction_Check(method)) {
-        return PyClassMethod_New(method);
-    }
-#ifdef __Pyx_CyFunction_USED
-    else if (PyObject_TypeCheck(method, __pyx_CyFunctionType)) {
-        return PyClassMethod_New(method);
-    }
-#endif
-    PyErr_SetString(PyExc_TypeError,
-                   "Class-level classmethod() can only be called on "
-                   "a method_descriptor or instance method.");
-    return NULL;
-}
-
 /* CIntFromPy */
-          static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+        static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
     const int neg_one = (int) -1, const_zero = (int) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -64317,8 +67340,10 @@ bad:
 #endif
             if (sizeof(int) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -64385,8 +67410,10 @@ bad:
 #endif
             if (sizeof(int) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -64435,7 +67462,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE PetscInt __Pyx_PyInt_As_PetscInt(PyObject *x) {
+        static CYTHON_INLINE PetscInt __Pyx_PyInt_As_PetscInt(PyObject *x) {
     const PetscInt neg_one = (PetscInt) -1, const_zero = (PetscInt) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -64502,8 +67529,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PetscInt) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PetscInt, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PetscInt) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PetscInt, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -64570,8 +67599,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PetscInt) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PetscInt, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PetscInt) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PetscInt, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -64620,7 +67651,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE MatStructure __Pyx_PyInt_As_MatStructure(PyObject *x) {
+        static CYTHON_INLINE MatStructure __Pyx_PyInt_As_MatStructure(PyObject *x) {
     const MatStructure neg_one = (MatStructure) -1, const_zero = (MatStructure) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -64687,8 +67718,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(MatStructure) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(MatStructure, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(MatStructure) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(MatStructure, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -64755,8 +67788,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(MatStructure) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(MatStructure, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(MatStructure) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(MatStructure, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -64805,7 +67840,196 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE PetscBool __Pyx_PyInt_As_PetscBool(PyObject *x) {
+        static CYTHON_INLINE EPSConvergedReason __Pyx_PyInt_As_EPSConvergedReason(PyObject *x) {
+    const EPSConvergedReason neg_one = (EPSConvergedReason) -1, const_zero = (EPSConvergedReason) 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if (sizeof(EPSConvergedReason) < sizeof(long)) {
+            __PYX_VERIFY_RETURN_INT(EPSConvergedReason, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (EPSConvergedReason) val;
+        }
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (EPSConvergedReason) 0;
+                case  1: __PYX_VERIFY_RETURN_INT(EPSConvergedReason, digit, digits[0])
+                case 2:
+                    if (8 * sizeof(EPSConvergedReason) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(EPSConvergedReason, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(EPSConvergedReason) >= 2 * PyLong_SHIFT) {
+                            return (EPSConvergedReason) (((((EPSConvergedReason)digits[1]) << PyLong_SHIFT) | (EPSConvergedReason)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(EPSConvergedReason) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(EPSConvergedReason, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(EPSConvergedReason) >= 3 * PyLong_SHIFT) {
+                            return (EPSConvergedReason) (((((((EPSConvergedReason)digits[2]) << PyLong_SHIFT) | (EPSConvergedReason)digits[1]) << PyLong_SHIFT) | (EPSConvergedReason)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(EPSConvergedReason) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(EPSConvergedReason, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(EPSConvergedReason) >= 4 * PyLong_SHIFT) {
+                            return (EPSConvergedReason) (((((((((EPSConvergedReason)digits[3]) << PyLong_SHIFT) | (EPSConvergedReason)digits[2]) << PyLong_SHIFT) | (EPSConvergedReason)digits[1]) << PyLong_SHIFT) | (EPSConvergedReason)digits[0]));
+                        }
+                    }
+                    break;
+            }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+            if (unlikely(Py_SIZE(x) < 0)) {
+                goto raise_neg_overflow;
+            }
+#else
+            {
+                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+                if (unlikely(result < 0))
+                    return (EPSConvergedReason) -1;
+                if (unlikely(result == 1))
+                    goto raise_neg_overflow;
+            }
+#endif
+            if (sizeof(EPSConvergedReason) <= sizeof(unsigned long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(EPSConvergedReason, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+            } else if (sizeof(EPSConvergedReason) <= sizeof(unsigned PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(EPSConvergedReason, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+            }
+        } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+            const digit* digits = ((PyLongObject*)x)->ob_digit;
+            switch (Py_SIZE(x)) {
+                case  0: return (EPSConvergedReason) 0;
+                case -1: __PYX_VERIFY_RETURN_INT(EPSConvergedReason, sdigit, (sdigit) (-(sdigit)digits[0]))
+                case  1: __PYX_VERIFY_RETURN_INT(EPSConvergedReason,  digit, +digits[0])
+                case -2:
+                    if (8 * sizeof(EPSConvergedReason) - 1 > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(EPSConvergedReason, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(EPSConvergedReason) - 1 > 2 * PyLong_SHIFT) {
+                            return (EPSConvergedReason) (((EPSConvergedReason)-1)*(((((EPSConvergedReason)digits[1]) << PyLong_SHIFT) | (EPSConvergedReason)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if (8 * sizeof(EPSConvergedReason) > 1 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(EPSConvergedReason, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(EPSConvergedReason) - 1 > 2 * PyLong_SHIFT) {
+                            return (EPSConvergedReason) ((((((EPSConvergedReason)digits[1]) << PyLong_SHIFT) | (EPSConvergedReason)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if (8 * sizeof(EPSConvergedReason) - 1 > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(EPSConvergedReason, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(EPSConvergedReason) - 1 > 3 * PyLong_SHIFT) {
+                            return (EPSConvergedReason) (((EPSConvergedReason)-1)*(((((((EPSConvergedReason)digits[2]) << PyLong_SHIFT) | (EPSConvergedReason)digits[1]) << PyLong_SHIFT) | (EPSConvergedReason)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if (8 * sizeof(EPSConvergedReason) > 2 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(EPSConvergedReason, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(EPSConvergedReason) - 1 > 3 * PyLong_SHIFT) {
+                            return (EPSConvergedReason) ((((((((EPSConvergedReason)digits[2]) << PyLong_SHIFT) | (EPSConvergedReason)digits[1]) << PyLong_SHIFT) | (EPSConvergedReason)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if (8 * sizeof(EPSConvergedReason) - 1 > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(EPSConvergedReason, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(EPSConvergedReason) - 1 > 4 * PyLong_SHIFT) {
+                            return (EPSConvergedReason) (((EPSConvergedReason)-1)*(((((((((EPSConvergedReason)digits[3]) << PyLong_SHIFT) | (EPSConvergedReason)digits[2]) << PyLong_SHIFT) | (EPSConvergedReason)digits[1]) << PyLong_SHIFT) | (EPSConvergedReason)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if (8 * sizeof(EPSConvergedReason) > 3 * PyLong_SHIFT) {
+                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+                            __PYX_VERIFY_RETURN_INT(EPSConvergedReason, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if (8 * sizeof(EPSConvergedReason) - 1 > 4 * PyLong_SHIFT) {
+                            return (EPSConvergedReason) ((((((((((EPSConvergedReason)digits[3]) << PyLong_SHIFT) | (EPSConvergedReason)digits[2]) << PyLong_SHIFT) | (EPSConvergedReason)digits[1]) << PyLong_SHIFT) | (EPSConvergedReason)digits[0])));
+                        }
+                    }
+                    break;
+            }
+#endif
+            if (sizeof(EPSConvergedReason) <= sizeof(long)) {
+                __PYX_VERIFY_RETURN_INT_EXC(EPSConvergedReason, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+            } else if (sizeof(EPSConvergedReason) <= sizeof(PY_LONG_LONG)) {
+                __PYX_VERIFY_RETURN_INT_EXC(EPSConvergedReason, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+            }
+        }
+        {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+            PyErr_SetString(PyExc_RuntimeError,
+                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+            EPSConvergedReason val;
+            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+            if (likely(v) && !PyLong_Check(v)) {
+                PyObject *tmp = v;
+                v = PyNumber_Long(tmp);
+                Py_DECREF(tmp);
+            }
+ #endif
+            if (likely(v)) {
+                int one = 1; int is_little = (int)*(unsigned char *)&one;
+                unsigned char *bytes = (unsigned char *)&val;
+                int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                              bytes, sizeof(val),
+                                              is_little, !is_unsigned);
+                Py_DECREF(v);
+                if (likely(!ret))
+                    return val;
+            }
+#endif
+            return (EPSConvergedReason) -1;
+        }
+    } else {
+        EPSConvergedReason val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (EPSConvergedReason) -1;
+        val = __Pyx_PyInt_As_EPSConvergedReason(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to EPSConvergedReason");
+    return (EPSConvergedReason) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to EPSConvergedReason");
+    return (EPSConvergedReason) -1;
+}
+
+/* CIntFromPy */
+        static CYTHON_INLINE PetscBool __Pyx_PyInt_As_PetscBool(PyObject *x) {
     const PetscBool neg_one = (PetscBool) -1, const_zero = (PetscBool) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -64872,8 +68096,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PetscBool) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PetscBool, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PetscBool) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PetscBool, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -64940,8 +68166,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PetscBool) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PetscBool, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PetscBool) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PetscBool, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -64990,7 +68218,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE STMatMode __Pyx_PyInt_As_STMatMode(PyObject *x) {
+        static CYTHON_INLINE STMatMode __Pyx_PyInt_As_STMatMode(PyObject *x) {
     const STMatMode neg_one = (STMatMode) -1, const_zero = (STMatMode) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -65057,8 +68285,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(STMatMode) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(STMatMode, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(STMatMode) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(STMatMode, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -65125,8 +68355,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(STMatMode) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(STMatMode, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(STMatMode) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(STMatMode, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -65175,7 +68407,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE BVOrthogType __Pyx_PyInt_As_BVOrthogType(PyObject *x) {
+        static CYTHON_INLINE BVOrthogType __Pyx_PyInt_As_BVOrthogType(PyObject *x) {
     const BVOrthogType neg_one = (BVOrthogType) -1, const_zero = (BVOrthogType) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -65242,8 +68474,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(BVOrthogType) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(BVOrthogType, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(BVOrthogType) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(BVOrthogType, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -65310,8 +68544,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(BVOrthogType) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(BVOrthogType, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(BVOrthogType) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(BVOrthogType, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -65360,7 +68596,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE BVOrthogRefineType __Pyx_PyInt_As_BVOrthogRefineType(PyObject *x) {
+        static CYTHON_INLINE BVOrthogRefineType __Pyx_PyInt_As_BVOrthogRefineType(PyObject *x) {
     const BVOrthogRefineType neg_one = (BVOrthogRefineType) -1, const_zero = (BVOrthogRefineType) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -65427,8 +68663,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(BVOrthogRefineType) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(BVOrthogRefineType, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(BVOrthogRefineType) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(BVOrthogRefineType, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -65495,8 +68733,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(BVOrthogRefineType) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(BVOrthogRefineType, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(BVOrthogRefineType) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(BVOrthogRefineType, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -65545,7 +68785,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE BVOrthogBlockType __Pyx_PyInt_As_BVOrthogBlockType(PyObject *x) {
+        static CYTHON_INLINE BVOrthogBlockType __Pyx_PyInt_As_BVOrthogBlockType(PyObject *x) {
     const BVOrthogBlockType neg_one = (BVOrthogBlockType) -1, const_zero = (BVOrthogBlockType) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -65612,8 +68852,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(BVOrthogBlockType) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(BVOrthogBlockType, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(BVOrthogBlockType) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(BVOrthogBlockType, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -65680,8 +68922,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(BVOrthogBlockType) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(BVOrthogBlockType, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(BVOrthogBlockType) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(BVOrthogBlockType, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -65730,7 +68974,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
+        static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
     const size_t neg_one = (size_t) -1, const_zero = (size_t) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -65797,8 +69041,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(size_t) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -65865,8 +69111,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(size_t) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -65915,7 +69163,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE NormType __Pyx_PyInt_As_NormType(PyObject *x) {
+        static CYTHON_INLINE NormType __Pyx_PyInt_As_NormType(PyObject *x) {
     const NormType neg_one = (NormType) -1, const_zero = (NormType) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -65982,8 +69230,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(NormType) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(NormType, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(NormType) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(NormType, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -66050,8 +69300,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(NormType) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(NormType, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(NormType) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(NormType, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -66100,7 +69352,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE DSStateType __Pyx_PyInt_As_DSStateType(PyObject *x) {
+        static CYTHON_INLINE DSStateType __Pyx_PyInt_As_DSStateType(PyObject *x) {
     const DSStateType neg_one = (DSStateType) -1, const_zero = (DSStateType) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -66167,8 +69419,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(DSStateType) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(DSStateType, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(DSStateType) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(DSStateType, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -66235,8 +69489,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(DSStateType) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(DSStateType, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(DSStateType) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(DSStateType, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -66285,7 +69541,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE EPSProblemType __Pyx_PyInt_As_EPSProblemType(PyObject *x) {
+        static CYTHON_INLINE EPSProblemType __Pyx_PyInt_As_EPSProblemType(PyObject *x) {
     const EPSProblemType neg_one = (EPSProblemType) -1, const_zero = (EPSProblemType) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -66352,8 +69608,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSProblemType) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSProblemType, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSProblemType) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSProblemType, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -66420,8 +69678,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSProblemType) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSProblemType, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSProblemType) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSProblemType, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -66470,7 +69730,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE EPSBalance __Pyx_PyInt_As_EPSBalance(PyObject *x) {
+        static CYTHON_INLINE EPSBalance __Pyx_PyInt_As_EPSBalance(PyObject *x) {
     const EPSBalance neg_one = (EPSBalance) -1, const_zero = (EPSBalance) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -66537,8 +69797,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSBalance) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSBalance, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSBalance) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSBalance, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -66605,8 +69867,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSBalance) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSBalance, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSBalance) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSBalance, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -66655,7 +69919,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE EPSExtraction __Pyx_PyInt_As_EPSExtraction(PyObject *x) {
+        static CYTHON_INLINE EPSExtraction __Pyx_PyInt_As_EPSExtraction(PyObject *x) {
     const EPSExtraction neg_one = (EPSExtraction) -1, const_zero = (EPSExtraction) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -66722,8 +69986,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSExtraction) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSExtraction, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSExtraction) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSExtraction, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -66790,8 +70056,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSExtraction) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSExtraction, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSExtraction) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSExtraction, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -66840,7 +70108,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE EPSWhich __Pyx_PyInt_As_EPSWhich(PyObject *x) {
+        static CYTHON_INLINE EPSWhich __Pyx_PyInt_As_EPSWhich(PyObject *x) {
     const EPSWhich neg_one = (EPSWhich) -1, const_zero = (EPSWhich) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -66907,8 +70175,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSWhich) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSWhich, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSWhich) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSWhich, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -66975,8 +70245,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSWhich) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSWhich, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSWhich) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSWhich, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -67025,7 +70297,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE EPSConv __Pyx_PyInt_As_EPSConv(PyObject *x) {
+        static CYTHON_INLINE EPSConv __Pyx_PyInt_As_EPSConv(PyObject *x) {
     const EPSConv neg_one = (EPSConv) -1, const_zero = (EPSConv) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -67092,8 +70364,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSConv) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSConv, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSConv) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSConv, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -67160,8 +70434,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSConv) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSConv, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSConv) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSConv, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -67210,7 +70486,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE EPSErrorType __Pyx_PyInt_As_EPSErrorType(PyObject *x) {
+        static CYTHON_INLINE EPSErrorType __Pyx_PyInt_As_EPSErrorType(PyObject *x) {
     const EPSErrorType neg_one = (EPSErrorType) -1, const_zero = (EPSErrorType) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -67277,8 +70553,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSErrorType) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSErrorType, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSErrorType) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSErrorType, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -67345,8 +70623,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSErrorType) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSErrorType, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSErrorType) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSErrorType, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -67395,7 +70675,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE EPSPowerShiftType __Pyx_PyInt_As_EPSPowerShiftType(PyObject *x) {
+        static CYTHON_INLINE EPSPowerShiftType __Pyx_PyInt_As_EPSPowerShiftType(PyObject *x) {
     const EPSPowerShiftType neg_one = (EPSPowerShiftType) -1, const_zero = (EPSPowerShiftType) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -67462,8 +70742,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSPowerShiftType) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSPowerShiftType, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSPowerShiftType) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSPowerShiftType, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -67530,8 +70812,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSPowerShiftType) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSPowerShiftType, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSPowerShiftType) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSPowerShiftType, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -67580,7 +70864,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE EPSLanczosReorthogType __Pyx_PyInt_As_EPSLanczosReorthogType(PyObject *x) {
+        static CYTHON_INLINE EPSLanczosReorthogType __Pyx_PyInt_As_EPSLanczosReorthogType(PyObject *x) {
     const EPSLanczosReorthogType neg_one = (EPSLanczosReorthogType) -1, const_zero = (EPSLanczosReorthogType) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -67647,8 +70931,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSLanczosReorthogType) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSLanczosReorthogType, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSLanczosReorthogType) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSLanczosReorthogType, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -67715,8 +71001,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(EPSLanczosReorthogType) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSLanczosReorthogType, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(EPSLanczosReorthogType) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(EPSLanczosReorthogType, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -67765,7 +71053,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE SVDWhich __Pyx_PyInt_As_SVDWhich(PyObject *x) {
+        static CYTHON_INLINE SVDWhich __Pyx_PyInt_As_SVDWhich(PyObject *x) {
     const SVDWhich neg_one = (SVDWhich) -1, const_zero = (SVDWhich) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -67832,8 +71120,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(SVDWhich) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(SVDWhich, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(SVDWhich) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(SVDWhich, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -67900,8 +71190,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(SVDWhich) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(SVDWhich, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(SVDWhich) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(SVDWhich, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -67950,7 +71242,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE SVDErrorType __Pyx_PyInt_As_SVDErrorType(PyObject *x) {
+        static CYTHON_INLINE SVDErrorType __Pyx_PyInt_As_SVDErrorType(PyObject *x) {
     const SVDErrorType neg_one = (SVDErrorType) -1, const_zero = (SVDErrorType) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -68017,8 +71309,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(SVDErrorType) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(SVDErrorType, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(SVDErrorType) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(SVDErrorType, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -68085,8 +71379,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(SVDErrorType) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(SVDErrorType, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(SVDErrorType) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(SVDErrorType, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -68135,7 +71431,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE PEPBasis __Pyx_PyInt_As_PEPBasis(PyObject *x) {
+        static CYTHON_INLINE PEPBasis __Pyx_PyInt_As_PEPBasis(PyObject *x) {
     const PEPBasis neg_one = (PEPBasis) -1, const_zero = (PEPBasis) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -68202,8 +71498,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPBasis) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPBasis, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPBasis) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPBasis, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -68270,8 +71568,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPBasis) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPBasis, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPBasis) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPBasis, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -68320,7 +71620,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE PEPProblemType __Pyx_PyInt_As_PEPProblemType(PyObject *x) {
+        static CYTHON_INLINE PEPProblemType __Pyx_PyInt_As_PEPProblemType(PyObject *x) {
     const PEPProblemType neg_one = (PEPProblemType) -1, const_zero = (PEPProblemType) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -68387,8 +71687,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPProblemType) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPProblemType, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPProblemType) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPProblemType, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -68455,8 +71757,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPProblemType) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPProblemType, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPProblemType) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPProblemType, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -68505,7 +71809,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE PEPWhich __Pyx_PyInt_As_PEPWhich(PyObject *x) {
+        static CYTHON_INLINE PEPWhich __Pyx_PyInt_As_PEPWhich(PyObject *x) {
     const PEPWhich neg_one = (PEPWhich) -1, const_zero = (PEPWhich) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -68572,8 +71876,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPWhich) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPWhich, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPWhich) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPWhich, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -68640,8 +71946,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPWhich) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPWhich, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPWhich) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPWhich, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -68690,7 +71998,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE PEPConv __Pyx_PyInt_As_PEPConv(PyObject *x) {
+        static CYTHON_INLINE PEPConv __Pyx_PyInt_As_PEPConv(PyObject *x) {
     const PEPConv neg_one = (PEPConv) -1, const_zero = (PEPConv) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -68757,8 +72065,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPConv) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPConv, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPConv) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPConv, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -68825,8 +72135,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPConv) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPConv, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPConv) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPConv, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -68875,7 +72187,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE PEPRefine __Pyx_PyInt_As_PEPRefine(PyObject *x) {
+        static CYTHON_INLINE PEPRefine __Pyx_PyInt_As_PEPRefine(PyObject *x) {
     const PEPRefine neg_one = (PEPRefine) -1, const_zero = (PEPRefine) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -68942,8 +72254,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPRefine) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPRefine, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPRefine) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPRefine, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -69010,8 +72324,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPRefine) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPRefine, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPRefine) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPRefine, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -69060,7 +72376,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE PEPRefineScheme __Pyx_PyInt_As_PEPRefineScheme(PyObject *x) {
+        static CYTHON_INLINE PEPRefineScheme __Pyx_PyInt_As_PEPRefineScheme(PyObject *x) {
     const PEPRefineScheme neg_one = (PEPRefineScheme) -1, const_zero = (PEPRefineScheme) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -69127,8 +72443,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPRefineScheme) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPRefineScheme, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPRefineScheme) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPRefineScheme, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -69195,8 +72513,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPRefineScheme) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPRefineScheme, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPRefineScheme) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPRefineScheme, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -69245,7 +72565,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE PEPScale __Pyx_PyInt_As_PEPScale(PyObject *x) {
+        static CYTHON_INLINE PEPScale __Pyx_PyInt_As_PEPScale(PyObject *x) {
     const PEPScale neg_one = (PEPScale) -1, const_zero = (PEPScale) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -69312,8 +72632,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPScale) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPScale, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPScale) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPScale, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -69380,8 +72702,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPScale) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPScale, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPScale) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPScale, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -69430,7 +72754,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE PEPErrorType __Pyx_PyInt_As_PEPErrorType(PyObject *x) {
+        static CYTHON_INLINE PEPErrorType __Pyx_PyInt_As_PEPErrorType(PyObject *x) {
     const PEPErrorType neg_one = (PEPErrorType) -1, const_zero = (PEPErrorType) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -69497,8 +72821,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPErrorType) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPErrorType, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPErrorType) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPErrorType, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -69565,8 +72891,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(PEPErrorType) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPErrorType, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(PEPErrorType) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(PEPErrorType, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -69615,7 +72943,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE NEPWhich __Pyx_PyInt_As_NEPWhich(PyObject *x) {
+        static CYTHON_INLINE NEPWhich __Pyx_PyInt_As_NEPWhich(PyObject *x) {
     const NEPWhich neg_one = (NEPWhich) -1, const_zero = (NEPWhich) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -69682,8 +73010,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(NEPWhich) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(NEPWhich, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(NEPWhich) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(NEPWhich, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -69750,8 +73080,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(NEPWhich) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(NEPWhich, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(NEPWhich) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(NEPWhich, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -69800,7 +73132,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE NEPErrorType __Pyx_PyInt_As_NEPErrorType(PyObject *x) {
+        static CYTHON_INLINE NEPErrorType __Pyx_PyInt_As_NEPErrorType(PyObject *x) {
     const NEPErrorType neg_one = (NEPErrorType) -1, const_zero = (NEPErrorType) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -69867,8 +73199,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(NEPErrorType) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(NEPErrorType, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(NEPErrorType) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(NEPErrorType, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -69935,8 +73269,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(NEPErrorType) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(NEPErrorType, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(NEPErrorType) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(NEPErrorType, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -69985,7 +73321,7 @@ raise_neg_overflow:
 }
 
 /* CIntFromPy */
-          static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+        static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
     const long neg_one = (long) -1, const_zero = (long) 0;
     const int is_unsigned = neg_one > const_zero;
 #if PY_MAJOR_VERSION < 3
@@ -70052,8 +73388,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(long) <= sizeof(unsigned long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
             }
         } else {
 #if CYTHON_USE_PYLONG_INTERNALS
@@ -70120,8 +73458,10 @@ raise_neg_overflow:
 #endif
             if (sizeof(long) <= sizeof(long)) {
                 __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
             } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
                 __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
             }
         }
         {
@@ -70169,8 +73509,80 @@ raise_neg_overflow:
     return (long) -1;
 }
 
+/* FastTypeChecks */
+        #if CYTHON_COMPILING_IN_CPYTHON
+static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
+    while (a) {
+        a = a->tp_base;
+        if (a == b)
+            return 1;
+    }
+    return b == &PyBaseObject_Type;
+}
+static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
+    PyObject *mro;
+    if (a == b) return 1;
+    mro = a->tp_mro;
+    if (likely(mro)) {
+        Py_ssize_t i, n;
+        n = PyTuple_GET_SIZE(mro);
+        for (i = 0; i < n; i++) {
+            if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
+                return 1;
+        }
+        return 0;
+    }
+    return __Pyx_InBases(a, b);
+}
+#if PY_MAJOR_VERSION == 2
+static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
+    PyObject *exception, *value, *tb;
+    int res;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&exception, &value, &tb);
+    res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
+    if (unlikely(res == -1)) {
+        PyErr_WriteUnraisable(err);
+        res = 0;
+    }
+    if (!res) {
+        res = PyObject_IsSubclass(err, exc_type2);
+        if (unlikely(res == -1)) {
+            PyErr_WriteUnraisable(err);
+            res = 0;
+        }
+    }
+    __Pyx_ErrRestore(exception, value, tb);
+    return res;
+}
+#else
+static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
+    int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0;
+    if (!res) {
+        res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
+    }
+    return res;
+}
+#endif
+static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
+    if (likely(err == exc_type)) return 1;
+    if (likely(PyExceptionClass_Check(err))) {
+        return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+    }
+    return PyErr_GivenExceptionMatches(err, exc_type);
+}
+static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+    if (likely(err == exc_type1 || err == exc_type2)) return 1;
+    if (likely(PyExceptionClass_Check(err))) {
+        return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
+    }
+    return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
+}
+#endif
+
 /* CheckBinaryVersion */
-          static int __Pyx_check_binary_version(void) {
+        static int __Pyx_check_binary_version(void) {
     char ctversion[4], rtversion[4];
     PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
     PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -70186,7 +73598,7 @@ raise_neg_overflow:
 }
 
 /* FunctionExport */
-          static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
+        static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
     PyObject *d = 0;
     PyObject *cobj = 0;
     union {
@@ -70223,7 +73635,7 @@ bad:
 }
 
 /* TypeImport */
-          #ifndef __PYX_HAVE_RT_ImportType
+        #ifndef __PYX_HAVE_RT_ImportType
 #define __PYX_HAVE_RT_ImportType
 static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
     size_t size, int strict)
@@ -70288,7 +73700,7 @@ bad:
 #endif
 
 /* FunctionImport */
-          #ifndef __PYX_HAVE_RT_ImportFunction
+        #ifndef __PYX_HAVE_RT_ImportFunction
 #define __PYX_HAVE_RT_ImportFunction
 static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
     PyObject *d = 0;
@@ -70342,7 +73754,7 @@ bad:
 #endif
 
 /* InitStrings */
-          static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+        static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
     while (t->p) {
         #if PY_MAJOR_VERSION < 3
         if (t->is_unicode) {
@@ -70367,6 +73779,8 @@ bad:
         #endif
         if (!*t->p)
             return -1;
+        if (PyObject_Hash(*t->p) == -1)
+            PyErr_Clear();
         ++t;
     }
     return 0;
@@ -70375,50 +73789,57 @@ bad:
 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
     return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
 }
-static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
+static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
     Py_ssize_t ignore;
     return __Pyx_PyObject_AsStringAndSize(o, &ignore);
 }
-static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
-#if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
-    if (
-#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
-            __Pyx_sys_getdefaultencoding_not_ascii &&
-#endif
-            PyUnicode_Check(o)) {
-#if PY_VERSION_HEX < 0x03030000
-        char* defenc_c;
-        PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
-        if (!defenc) return NULL;
-        defenc_c = PyBytes_AS_STRING(defenc);
+#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
+#if !CYTHON_PEP393_ENABLED
+static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
+    char* defenc_c;
+    PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
+    if (!defenc) return NULL;
+    defenc_c = PyBytes_AS_STRING(defenc);
 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
-        {
-            char* end = defenc_c + PyBytes_GET_SIZE(defenc);
-            char* c;
-            for (c = defenc_c; c < end; c++) {
-                if ((unsigned char) (*c) >= 128) {
-                    PyUnicode_AsASCIIString(o);
-                    return NULL;
-                }
+    {
+        char* end = defenc_c + PyBytes_GET_SIZE(defenc);
+        char* c;
+        for (c = defenc_c; c < end; c++) {
+            if ((unsigned char) (*c) >= 128) {
+                PyUnicode_AsASCIIString(o);
+                return NULL;
             }
         }
+    }
 #endif
-        *length = PyBytes_GET_SIZE(defenc);
-        return defenc_c;
+    *length = PyBytes_GET_SIZE(defenc);
+    return defenc_c;
+}
 #else
-        if (__Pyx_PyUnicode_READY(o) == -1) return NULL;
+static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
+    if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
-        if (PyUnicode_IS_ASCII(o)) {
-            *length = PyUnicode_GET_LENGTH(o);
-            return PyUnicode_AsUTF8(o);
-        } else {
-            PyUnicode_AsASCIIString(o);
-            return NULL;
-        }
+    if (likely(PyUnicode_IS_ASCII(o))) {
+        *length = PyUnicode_GET_LENGTH(o);
+        return PyUnicode_AsUTF8(o);
+    } else {
+        PyUnicode_AsASCIIString(o);
+        return NULL;
+    }
 #else
-        return PyUnicode_AsUTF8AndSize(o, length);
+    return PyUnicode_AsUTF8AndSize(o, length);
+#endif
+}
 #endif
 #endif
+static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
+#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
+    if (
+#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
+            __Pyx_sys_getdefaultencoding_not_ascii &&
+#endif
+            PyUnicode_Check(o)) {
+        return __Pyx_PyUnicode_AsStringAndSize(o, length);
     } else
 #endif
 #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
@@ -70442,43 +73863,67 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
    if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
    else return PyObject_IsTrue(x);
 }
+static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
+#if PY_MAJOR_VERSION >= 3
+    if (PyLong_Check(result)) {
+        if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
+                "__int__ returned non-int (type %.200s).  "
+                "The ability to return an instance of a strict subclass of int "
+                "is deprecated, and may be removed in a future version of Python.",
+                Py_TYPE(result)->tp_name)) {
+            Py_DECREF(result);
+            return NULL;
+        }
+        return result;
+    }
+#endif
+    PyErr_Format(PyExc_TypeError,
+                 "__%.4s__ returned non-%.4s (type %.200s)",
+                 type_name, type_name, Py_TYPE(result)->tp_name);
+    Py_DECREF(result);
+    return NULL;
+}
 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
+#if CYTHON_USE_TYPE_SLOTS
   PyNumberMethods *m;
+#endif
   const char *name = NULL;
   PyObject *res = NULL;
 #if PY_MAJOR_VERSION < 3
-  if (PyInt_Check(x) || PyLong_Check(x))
+  if (likely(PyInt_Check(x) || PyLong_Check(x)))
 #else
-  if (PyLong_Check(x))
+  if (likely(PyLong_Check(x)))
 #endif
     return __Pyx_NewRef(x);
+#if CYTHON_USE_TYPE_SLOTS
   m = Py_TYPE(x)->tp_as_number;
-#if PY_MAJOR_VERSION < 3
+  #if PY_MAJOR_VERSION < 3
   if (m && m->nb_int) {
     name = "int";
-    res = PyNumber_Int(x);
+    res = m->nb_int(x);
   }
   else if (m && m->nb_long) {
     name = "long";
-    res = PyNumber_Long(x);
+    res = m->nb_long(x);
   }
-#else
-  if (m && m->nb_int) {
+  #else
+  if (likely(m && m->nb_int)) {
     name = "int";
-    res = PyNumber_Long(x);
+    res = m->nb_int(x);
+  }
+  #endif
+#else
+  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
+    res = PyNumber_Int(x);
   }
 #endif
-  if (res) {
+  if (likely(res)) {
 #if PY_MAJOR_VERSION < 3
-    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+    if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
 #else
-    if (!PyLong_Check(res)) {
+    if (unlikely(!PyLong_CheckExact(res))) {
 #endif
-      PyErr_Format(PyExc_TypeError,
-                   "__%.4s__ returned non-%.4s (type %.200s)",
-                   name, name, Py_TYPE(res)->tp_name);
-      Py_DECREF(res);
-      return NULL;
+        return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
     }
   }
   else if (!PyErr_Occurred()) {
diff --git a/src/slepc4py.SLEPc.pyx b/src/slepc4py.SLEPc.pyx
index 647167a..5c85ba9 100644
--- a/src/slepc4py.SLEPc.pyx
+++ b/src/slepc4py.SLEPc.pyx
@@ -1,6 +1,12 @@
 #cython: embedsignature=True
 #cython: cdivision=True
+#cython: binding=False
+#cython: auto_pickle=False
 #cython: always_allow_keywords=True
+#cython: allow_none_for_extension_args=False
 #cython: autotestdict=False
 #cython: warn.multiple_declarators=False
+#cython: optimize.use_switch=False
+from __future__ import absolute_import
+cimport cython
 include "SLEPc/SLEPc.pyx"

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/slepc4py.git



More information about the debian-science-commits mailing list