[Numpy-svn] r2892 - in branches/ver1.0/numpy: core/include/numpy doc/pyrex linalg random/mtrand

numpy-svn at scipy.org numpy-svn at scipy.org
Tue Jul 25 18:06:16 EDT 2006


Author: oliphant
Date: 2006-07-25 17:06:02 -0500 (Tue, 25 Jul 2006)
New Revision: 2892

Modified:
   branches/ver1.0/numpy/core/include/numpy/arrayobject.h
   branches/ver1.0/numpy/doc/pyrex/c_numpy.pxd
   branches/ver1.0/numpy/linalg/linalg.py
   branches/ver1.0/numpy/random/mtrand/generate_mtrand_c.py
   branches/ver1.0/numpy/random/mtrand/mtrand.c
   branches/ver1.0/numpy/random/mtrand/mtrand.pyx
   branches/ver1.0/numpy/random/mtrand/numpy.pxi
Log:
Add broadcasting behavior to random-number generators.  Fix cholesky to keep matrix return.

Modified: branches/ver1.0/numpy/core/include/numpy/arrayobject.h
===================================================================
--- branches/ver1.0/numpy/core/include/numpy/arrayobject.h	2006-07-25 17:17:08 UTC (rev 2891)
+++ branches/ver1.0/numpy/core/include/numpy/arrayobject.h	2006-07-25 22:06:02 UTC (rev 2892)
@@ -1032,90 +1032,90 @@
 #define PyArrayIter_Check(op) PyObject_TypeCheck(op, &PyArrayIter_Type)
 
 #define PyArray_ITER_RESET(it) {					\
-	it->index = 0;						        \
-	it->dataptr = it->ao->data;					\
-	memset(it->coordinates, 0, (it->nd_m1+1)*sizeof(npy_intp));		\
+        (it)->index = 0;                                                \
+	(it)->dataptr = (it)->ao->data;					\
+	memset((it)->coordinates, 0, ((it)->nd_m1+1)*sizeof(npy_intp)); \
 }
 
 #define _PyArray_ITER_NEXT1(it) {		\
-		it->dataptr += it->strides[0];	\
-		it->coordinates[0]++;		\
+		(it)->dataptr += (it)->strides[0];	\
+		(it)->coordinates[0]++;                 \
 	}
 
 #define _PyArray_ITER_NEXT2(it) {					\
-		if (it->coordinates[1] < it->dims_m1[1]) {		\
-			it->coordinates[1]++;				\
-			it->dataptr += it->strides[1];			\
+		if ((it)->coordinates[1] < (it)->dims_m1[1]) {		\
+			(it)->coordinates[1]++;				\
+			(it)->dataptr += (it)->strides[1];			\
 		}							\
 		else {							\
-			it->coordinates[1] = 0;				\
-			it->coordinates[0]++;				\
-			it->dataptr += it->strides[0] -			\
-				it->backstrides[1];			\
+			(it)->coordinates[1] = 0;				\
+			(it)->coordinates[0]++;				\
+			(it)->dataptr += (it)->strides[0] -			\
+				(it)->backstrides[1];			\
 		}							\
 	}
 
 #define PyArray_ITER_NEXT(it) {						\
-	it->index++;						        \
-        if (it->nd_m1 == 0) {						\
+        (it)->index++;                                          \
+        if ((it)->nd_m1 == 0) {						\
 		_PyArray_ITER_NEXT1(it);				\
 	}								\
-	else if (it->contiguous)  it->dataptr += it->ao->descr->elsize; \
-	else if (it->nd_m1 == 1) {					\
+	else if ((it)->contiguous)  (it)->dataptr += (it)->ao->descr->elsize; \
+	else if ((it)->nd_m1 == 1) {					\
 		_PyArray_ITER_NEXT2(it);				\
 	}								\
 	else {								\
-		int _i_;						\
-		for (_i_ = it->nd_m1; _i_ >= 0; _i_--) {		\
-			if (it->coordinates[_i_] <			\
-			    it->dims_m1[_i_]) {				\
-				it->coordinates[_i_]++;			\
-				it->dataptr += it->strides[_i_];	\
+		int __npy_i;						\
+		for (__npy_i = (it)->nd_m1; __npy_i >= 0; __npy_i--) {		\
+			if ((it)->coordinates[__npy_i] <			\
+			    (it)->dims_m1[__npy_i]) {				\
+				(it)->coordinates[__npy_i]++;			\
+				(it)->dataptr += (it)->strides[__npy_i];	\
 				break;					\
 			}						\
 			else {						\
-				it->coordinates[_i_] = 0;		\
-				it->dataptr -= it->backstrides[_i_];	\
+				(it)->coordinates[__npy_i] = 0;		\
+				(it)->dataptr -= (it)->backstrides[__npy_i];	\
 			}						\
 		}							\
 	}								\
 }
 
 #define PyArray_ITER_GOTO(it, destination) {				\
-		int _i_;						\
-		it->index = 0;						\
-		it->dataptr = it->ao->data;				\
-		for (_i_ = it->nd_m1; _i_>=0; _i_--) {			\
-                        if (destination[_i_] < 0) {                     \
-                                destination[_i_] += it->dims_m1[_i_]+1; \
+		int __npy_i;						\
+		(it)->index = 0;						\
+		(it)->dataptr = (it)->ao->data;				\
+		for (__npy_i = (it)->nd_m1; __npy_i>=0; __npy_i--) {			\
+                        if (destination[__npy_i] < 0) {                     \
+                                destination[__npy_i] += (it)->dims_m1[__npy_i]+1; \
                         }                                               \
-			it->dataptr += destination[_i_] *		\
-				it->strides[_i_];			\
-			it->coordinates[_i_] = destination[_i_];	\
-			it->index += destination[_i_] *			\
-				( _i_==it->nd_m1 ? 1 :			\
-				  it->dims_m1[_i_+1]+1) ;		        \
+			(it)->dataptr += destination[__npy_i] *		\
+				(it)->strides[__npy_i];			\
+			(it)->coordinates[__npy_i] = destination[__npy_i];	\
+			(it)->index += destination[__npy_i] *			\
+				( __npy_i==(it)->nd_m1 ? 1 :			\
+				  (it)->dims_m1[__npy_i+1]+1) ;		        \
 		}							\
 	}
 
 #define PyArray_ITER_GOTO1D(it, ind) {                                  \
-		int _i_;						\
-		npy_intp _lind_ = (npy_intp) (ind);				\
-                if (_lind_ < 0) _lind_ += it->size;                     \
-		it->index = _lind_;					\
-                if (it->nd_m1 == 0) {                                   \
-                        it->dataptr = it->ao->data + _lind_ *           \
-                                it->strides[0];                         \
+		int __npy_i;						\
+		npy_intp __npy_ind = (npy_intp) (ind);				\
+                if (__npy_ind < 0) __npy_ind += (it)->size;                     \
+		(it)->index = __npy_ind;					\
+                if ((it)->nd_m1 == 0) {                                   \
+                        (it)->dataptr = (it)->ao->data + __npy_ind *           \
+                                (it)->strides[0];                         \
                 }                                                       \
-                else if (it->contiguous)                                \
-			it->dataptr = it->ao->data + _lind_ *		\
-				it->ao->descr->elsize;			\
+                else if ((it)->contiguous)                                \
+			(it)->dataptr = (it)->ao->data + __npy_ind *		\
+				(it)->ao->descr->elsize;			\
 		else {							\
-			it->dataptr = it->ao->data;			\
-			for (_i_ = 0; _i_<=it->nd_m1; _i_++) {		\
-				it->dataptr += (_lind_ / it->factors[_i_]) \
-					* it->strides[_i_];		\
-				_lind_ %= it->factors[_i_];		\
+			(it)->dataptr = (it)->ao->data;			\
+			for (__npy_i = 0; __npy_i<=(it)->nd_m1; __npy_i++) {		\
+				(it)->dataptr += (__npy_ind / (it)->factors[__npy_i]) \
+					* (it)->strides[__npy_i];		\
+				__npy_ind %= (it)->factors[__npy_i];		\
 			}						\
 		}							\
 }
@@ -1139,47 +1139,49 @@
 } PyArrayMultiIterObject;
 
 #define PyArray_MultiIter_RESET(multi) {			  \
-		int _mi_;					  \
-		PyArrayMultiIterObject *_mul_ = (multi);	  \
-		_mul_->index = 0;				  \
-		for (_mi_ = 0; _mi_ < _mul_->numiter; _mi_++) {	  \
-			PyArray_ITER_RESET(_mul_->iters[_mi_]);	  \
+		int __npy_mi;					  \
+		PyArrayMultiIterObject *__npy_mul = (multi);	  \
+		__npy_mul->index = 0;				  \
+		for (__npy_mi = 0; __npy_mi < __npy_mul->numiter; __npy_mi++) { \
+			PyArray_ITER_RESET(__npy_mul->iters[__npy_mi]);	  \
 		}						  \
 	}
 
 #define PyArray_MultiIter_NEXT(multi) {				 \
-		int _mi_;					 \
-		PyArrayMultiIterObject *_mul_ = (multi);	  \
-		_mul_->index += 1;				 \
-		for (_mi_=0; _mi_<_mul_->numiter; _mi_++) {	 \
-			PyArray_ITER_NEXT(_mul_->iters[_mi_]);	 \
+		int __npy_mi;                                     \
+		PyArrayMultiIterObject *__npy_mul = (multi);	  \
+		__npy_mul->index += 1;				 \
+		for (__npy_mi=0; __npy_mi<__npy_mul->numiter; __npy_mi++) {	 \
+			PyArray_ITER_NEXT(__npy_mul->iters[__npy_mi]);	 \
 		}						 \
 	}
 
 #define PyArray_MultiIter_GOTO(multi, dest) {				\
-		int _mi_;						\
-		PyArrayMultiIterObject *_mul_ = (multi);		\
-		for (_mi_=0; _mi_<_mul_->numiter; _mi_++) {		\
-			PyArray_ITER_GOTO(_mul_->iters[_mi_], dest);	\
+		int __npy_mi;						\
+		PyArrayMultiIterObject *__npy_mul = (multi);		\
+		for (__npy_mi=0; __npy_mi<__npy_mul->numiter; __npy_mi++) {		\
+			PyArray_ITER_GOTO(__npy_mul->iters[__npy_mi], dest);	\
 		}							\
-		_mul_->index = _mul_->iters[0]->index;			\
+		__npy_mul->index = __npy_mul->iters[0]->index;			\
 	}
 
 #define PyArray_MultiIter_GOTO1D(multi, ind) {				\
-		int _mi_;						\
-		PyArrayMultiIterObject *_mul_ = (multi);		\
-		for (_mi_=0; _mi_<_mul_->numiter; _mi_++) {		\
-			PyArray_ITER_GOTO1D(_mul_->iters[_mi_], ind);	\
+		int __npy_mi;						\
+		PyArrayMultiIterObject *__npy_mul = (multi);		\
+		for (__npy_mi=0; __npy_mi<__npy_mul->numiter; __npy_mi++) {		\
+			PyArray_ITER_GOTO1D(__npy_mul->iters[__npy_mi], ind);	\
 		}							\
-		_mul_->index = _mul_->iters[0]->index;			\
+		__npy_mul->index = __npy_mul->iters[0]->index;			\
 	}
 
-#define PyArray_MultiIter_DATA(multi, i) \
-	((PyArrayMultiIterObject *)multi)->iters[i]->dataptr
+#define PyArray_MultiIter_DATA(multi, i)                        \
+	(((PyArrayMultiIterObject *)multi)->iters[i]->dataptr)
 
-#define PyArray_MultiIter_SIZE(multi) \
-	((PyArrayMultiIterObject *)multi)->size;
+#define PyArray_MultiIter_SIZE(multi)                   \
+	((PyArrayMultiIterObject *)multi)->size
 
+#define PyArray_MultiIter_NEXTi(multi, i)                               \
+        PyArray_ITER_NEXT(((PyArrayMultiIterObject *)multi)->iters[i])
 
 /* Store the information needed for fancy-indexing over an array */
 

Modified: branches/ver1.0/numpy/doc/pyrex/c_numpy.pxd
===================================================================
--- branches/ver1.0/numpy/doc/pyrex/c_numpy.pxd	2006-07-25 17:17:08 UTC (rev 2891)
+++ branches/ver1.0/numpy/doc/pyrex/c_numpy.pxd	2006-07-25 22:06:02 UTC (rev 2892)
@@ -1,6 +1,4 @@
-# :Author:    Robert Kern
-# :Copyright: 2004, Enthought, Inc.
-# :License:   BSD Style
+# :Author:    Travis Oliphant
 
 cdef extern from "numpy/arrayobject.h":
 
@@ -60,6 +58,9 @@
 
         NPY_UPDATE_ALL 
 
+    cdef enum defines:
+        NPY_MAXDIMS
+
     ctypedef struct npy_cdouble:
         double real
         double imag
@@ -84,6 +85,19 @@
         cdef dtype descr
         cdef int flags
 
+    ctypedef extern class numpy.flatiter [object PyArrayIterObject]:
+        cdef int  nd_m1
+        cdef npy_intp index, size
+        cdef ndarray ao
+        cdef char *dataptr
+        
+    ctypedef extern class numpy.broadcast [object PyArrayMultiIterObject]:
+        cdef int numiter
+        cdef npy_intp size, index
+        cdef int nd
+        cdef npy_intp dimensions[NPY_MAXDIMS]
+        cdef flatiter iters[NPY_MAXDIMS]
+
     object PyArray_ZEROS(int ndims, npy_intp* dims, NPY_TYPES type_num, int fortran)
     object PyArray_EMPTY(int ndims, npy_intp* dims, NPY_TYPES type_num, int fortran)
     dtype PyArray_DescrFromTypeNum(NPY_TYPES type_num)
@@ -102,4 +116,6 @@
                                 npy_intp* dims, npy_intp* strides, void* data,
                                 int flags, object parent)
 
+    void PyArray_ITER_NEXT(flatiter it)
+
     void import_array()

Modified: branches/ver1.0/numpy/linalg/linalg.py
===================================================================
--- branches/ver1.0/numpy/linalg/linalg.py	2006-07-25 17:17:08 UTC (rev 2891)
+++ branches/ver1.0/numpy/linalg/linalg.py	2006-07-25 22:06:02 UTC (rev 2892)
@@ -165,7 +165,8 @@
     if results['info'] > 0:
         raise LinAlgError, 'Matrix is not positive definite - Cholesky decomposition cannot be computed'
     s = triu(a, k=0).transpose()
-    return array(s, dtype=result_t, copy=True)
+    if (s.dtype != result_t):
+        return s.astype(result_t)
 
 # Eigenvalues
 def eigvals(a):

Modified: branches/ver1.0/numpy/random/mtrand/generate_mtrand_c.py
===================================================================
--- branches/ver1.0/numpy/random/mtrand/generate_mtrand_c.py	2006-07-25 17:17:08 UTC (rev 2891)
+++ branches/ver1.0/numpy/random/mtrand/generate_mtrand_c.py	2006-07-25 22:06:02 UTC (rev 2892)
@@ -8,7 +8,6 @@
                          '__Pyx_ReRaise',
                          '__Pyx_GetExcValue',
                          '__Pyx_ArgTypeTest',
-                         '__Pyx_TypeTest',
                          '__Pyx_SetVtable',
                          '__Pyx_GetVtable',
                          '__Pyx_CreateClass']

Modified: branches/ver1.0/numpy/random/mtrand/mtrand.c
===================================================================
--- branches/ver1.0/numpy/random/mtrand/mtrand.c	2006-07-25 17:17:08 UTC (rev 2891)
+++ branches/ver1.0/numpy/random/mtrand/mtrand.c	2006-07-25 22:06:02 UTC (rev 2892)
@@ -1,10 +1,16 @@
-/* Generated by Pyrex 0.9.3.1cpp on Thu Jul 20 17:10:39 2006 */
+/* Generated by Pyrex 0.9.4.1 on Tue Jul 25 16:03:16 2006 */
 
 #include "Python.h"
 #include "structmember.h"
 #ifndef PY_LONG_LONG
   #define PY_LONG_LONG LONG_LONG
 #endif
+#ifdef __cplusplus
+#define __PYX_EXTERN_C extern "C"
+#else
+#define __PYX_EXTERN_C extern
+#endif
+__PYX_EXTERN_C double pow(double, double);
 #include "string.h"
 #include "math.h"
 #include "numpy/arrayobject.h"
@@ -19,13 +25,13 @@
 static int __Pyx_EndUnpack(PyObject *, int); /*proto*/
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
+static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
 static int __Pyx_GetStarArgs(PyObject **args, PyObject **kwds, char *kwd_list[], int nargs, PyObject **args2, PyObject **kwds2); /*proto*/
 static void __Pyx_WriteUnraisable(char *name); /*proto*/
 static void __Pyx_AddTraceback(char *funcname); /*proto*/
 static PyTypeObject *__Pyx_ImportType(char *module_name, char *class_name, long size);  /*proto*/
 static int __Pyx_InternStrings(__Pyx_InternTabEntry *t); /*proto*/
 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
-static char **__Pyx_FileNames(void); /*proto*/
 static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
 
 static PyObject *__pyx_m;
@@ -34,5651 +40,8364 @@
 static char *__pyx_filename;
 static char **__pyx_f;
 
-#ifdef __cplusplus
-extern "C" {
-  #endif
+/* Declarations from mtrand */
 
-  /* Declarations from mtrand */
 
+struct __pyx_obj_6mtrand_RandomState {
+  PyObject_HEAD
+  rk_state (*internal_state);
+};
 
-  struct __pyx_obj_6mtrand_RandomState {
-    PyObject_HEAD
-    rk_state (*internal_state);
-  };
+static PyTypeObject *__pyx_ptype_6mtrand_dtype = 0;
+static PyTypeObject *__pyx_ptype_6mtrand_ndarray = 0;
+static PyTypeObject *__pyx_ptype_6mtrand_flatiter = 0;
+static PyTypeObject *__pyx_ptype_6mtrand_broadcast = 0;
+static PyTypeObject *__pyx_ptype_6mtrand_RandomState = 0;
+static PyObject *__pyx_k2;
+static PyObject *__pyx_k3;
+static PyObject *__pyx_k4;
+static PyObject *__pyx_k5;
+static PyObject *__pyx_k6;
+static PyObject *__pyx_k7;
+static PyObject *__pyx_k8;
+static PyObject *__pyx_k9;
+static PyObject *__pyx_k10;
+static PyObject *__pyx_k11;
+static PyObject *__pyx_k12;
+static PyObject *__pyx_k13;
+static PyObject *__pyx_k14;
+static PyObject *__pyx_k15;
+static PyObject *__pyx_k16;
+static PyObject *__pyx_k17;
+static PyObject *__pyx_k18;
+static PyObject *__pyx_k19;
+static PyObject *__pyx_k20;
+static PyObject *__pyx_k21;
+static PyObject *__pyx_k22;
+static PyObject *__pyx_k23;
+static PyObject *__pyx_k24;
+static PyObject *__pyx_k25;
+static PyObject *__pyx_k26;
+static PyObject *__pyx_k27;
+static PyObject *__pyx_k28;
+static PyObject *__pyx_k29;
+static PyObject *__pyx_k30;
+static PyObject *__pyx_k31;
+static PyObject *__pyx_k32;
+static PyObject *__pyx_k33;
+static PyObject *__pyx_k34;
+static PyObject *__pyx_k35;
+static PyObject *__pyx_k36;
+static PyObject *__pyx_k37;
+static PyObject *__pyx_k38;
+static PyObject *__pyx_k39;
+static PyObject *__pyx_k40;
+static PyObject *__pyx_k41;
+static PyObject *__pyx_k42;
+static PyObject *__pyx_k43;
+static PyObject *__pyx_k44;
+static PyObject *__pyx_k45;
+static PyObject *__pyx_k46;
+static PyObject *__pyx_k47;
+static PyObject *__pyx_k48;
+static PyObject *__pyx_k49;
+static PyObject *__pyx_k50;
+static PyObject *__pyx_k51;
+static PyObject *__pyx_k52;
+static PyObject *__pyx_k53;
+static PyObject *__pyx_k54;
+static PyObject *__pyx_k55;
+static PyObject *__pyx_k56;
+static PyObject *__pyx_k57;
+static PyObject *__pyx_k58;
+static PyObject *__pyx_k59;
+static PyObject *(__pyx_f_6mtrand_cont0_array(rk_state (*),double ((*)(rk_state (*))),PyObject *)); /*proto*/
+static PyObject *(__pyx_f_6mtrand_cont1_array(rk_state (*),double ((*)(rk_state (*),double )),PyObject *,PyArrayObject *)); /*proto*/
+static PyObject *(__pyx_f_6mtrand_cont2_array(rk_state (*),double ((*)(rk_state (*),double ,double )),PyObject *,PyArrayObject *,PyArrayObject *)); /*proto*/
+static PyObject *(__pyx_f_6mtrand_cont3_array(rk_state (*),double ((*)(rk_state (*),double ,double ,double )),PyObject *,PyArrayObject *,PyArrayObject *,PyArrayObject *)); /*proto*/
+static PyObject *(__pyx_f_6mtrand_disc0_array(rk_state (*),long ((*)(rk_state (*))),PyObject *)); /*proto*/
+static PyObject *(__pyx_f_6mtrand_discnp_array(rk_state (*),long ((*)(rk_state (*),long ,double )),PyObject *,PyArrayObject *,PyArrayObject *)); /*proto*/
+static PyObject *(__pyx_f_6mtrand_discnmN_array(rk_state (*),long ((*)(rk_state (*),long ,long ,long )),PyObject *,PyArrayObject *,PyArrayObject *,PyArrayObject *)); /*proto*/
+static PyObject *(__pyx_f_6mtrand_discd_array(rk_state (*),long ((*)(rk_state (*),double )),PyObject *,PyArrayObject *)); /*proto*/
+static double (__pyx_f_6mtrand_kahan_sum(double (*),long )); /*proto*/
 
-  static PyTypeObject *__pyx_ptype_6mtrand_dtype = 0;
-  static PyTypeObject *__pyx_ptype_6mtrand_ndarray = 0;
-  static PyTypeObject *__pyx_ptype_6mtrand_RandomState = 0;
-  static PyObject *__pyx_k2;
-  static PyObject *__pyx_k3;
-  static PyObject *__pyx_k4;
-  static PyObject *__pyx_k5;
-  static PyObject *__pyx_k6;
-  static PyObject *__pyx_k7;
-  static double __pyx_k8;
-  static double __pyx_k9;
-  static PyObject *__pyx_k10;
-  static PyObject *__pyx_k11;
-  static PyObject *__pyx_k12;
-  static PyObject *__pyx_k13;
-  static double __pyx_k14;
-  static double __pyx_k15;
-  static PyObject *__pyx_k16;
-  static PyObject *__pyx_k17;
-  static double __pyx_k18;
-  static PyObject *__pyx_k19;
-  static PyObject *__pyx_k20;
-  static PyObject *__pyx_k21;
-  static double __pyx_k22;
-  static PyObject *__pyx_k23;
-  static PyObject *__pyx_k24;
-  static PyObject *__pyx_k25;
-  static PyObject *__pyx_k26;
-  static PyObject *__pyx_k27;
-  static PyObject *__pyx_k28;
-  static PyObject *__pyx_k29;
-  static PyObject *__pyx_k30;
-  static PyObject *__pyx_k31;
-  static PyObject *__pyx_k32;
-  static PyObject *__pyx_k33;
-  static double __pyx_k34;
-  static double __pyx_k35;
-  static PyObject *__pyx_k36;
-  static double __pyx_k37;
-  static double __pyx_k38;
-  static PyObject *__pyx_k39;
-  static double __pyx_k40;
-  static double __pyx_k41;
-  static PyObject *__pyx_k42;
-  static double __pyx_k43;
-  static double __pyx_k44;
-  static PyObject *__pyx_k45;
-  static double __pyx_k46;
-  static PyObject *__pyx_k47;
-  static PyObject *__pyx_k48;
-  static PyObject *__pyx_k49;
-  static PyObject *__pyx_k50;
-  static PyObject *__pyx_k51;
-  static double __pyx_k52;
-  static PyObject *__pyx_k53;
-  static PyObject *__pyx_k54;
-  static PyObject *__pyx_k55;
-  static PyObject *__pyx_k56;
-  static PyObject *__pyx_k57;
-  static PyObject *__pyx_k58;
-  static PyObject *__pyx_k59;
-  static PyObject *(__pyx_f_6mtrand_cont0_array(rk_state (*),double ((*)(rk_state (*))),PyObject *)); /*proto*/
-  static PyObject *(__pyx_f_6mtrand_cont1_array(rk_state (*),double ((*)(rk_state (*),double )),PyObject *,double )); /*proto*/
-  static PyObject *(__pyx_f_6mtrand_cont2_array(rk_state (*),double ((*)(rk_state (*),double ,double )),PyObject *,double ,double )); /*proto*/
-  static PyObject *(__pyx_f_6mtrand_cont3_array(rk_state (*),double ((*)(rk_state (*),double ,double ,double )),PyObject *,double ,double ,double )); /*proto*/
-  static PyObject *(__pyx_f_6mtrand_disc0_array(rk_state (*),long ((*)(rk_state (*))),PyObject *)); /*proto*/
-  static PyObject *(__pyx_f_6mtrand_discnp_array(rk_state (*),long ((*)(rk_state (*),long ,double )),PyObject *,long ,double )); /*proto*/
-  static PyObject *(__pyx_f_6mtrand_discnmN_array(rk_state (*),long ((*)(rk_state (*),long ,long ,long )),PyObject *,long ,long ,long )); /*proto*/
-  static PyObject *(__pyx_f_6mtrand_discd_array(rk_state (*),long ((*)(rk_state (*),double )),PyObject *,double )); /*proto*/
-  static double (__pyx_f_6mtrand_kahan_sum(double (*),long )); /*proto*/
+/* Implementation of mtrand */
 
-  /* Implementation of mtrand */
 
+static PyObject *__pyx_n__sp;
+static PyObject *__pyx_n__rand;
+static PyObject *__pyx_n_seed;
+static PyObject *__pyx_n_get_state;
+static PyObject *__pyx_n_set_state;
+static PyObject *__pyx_n_random_sample;
+static PyObject *__pyx_n_randint;
+static PyObject *__pyx_n_bytes;
+static PyObject *__pyx_n_uniform;
+static PyObject *__pyx_n_rand;
+static PyObject *__pyx_n_randn;
+static PyObject *__pyx_n_random_integers;
+static PyObject *__pyx_n_standard_normal;
+static PyObject *__pyx_n_normal;
+static PyObject *__pyx_n_beta;
+static PyObject *__pyx_n_exponential;
+static PyObject *__pyx_n_standard_exponential;
+static PyObject *__pyx_n_standard_gamma;
+static PyObject *__pyx_n_gamma;
+static PyObject *__pyx_n_f;
+static PyObject *__pyx_n_noncentral_f;
+static PyObject *__pyx_n_chisquare;
+static PyObject *__pyx_n_noncentral_chisquare;
+static PyObject *__pyx_n_standard_cauchy;
+static PyObject *__pyx_n_standard_t;
+static PyObject *__pyx_n_vonmises;
+static PyObject *__pyx_n_pareto;
+static PyObject *__pyx_n_weibull;
+static PyObject *__pyx_n_power;
+static PyObject *__pyx_n_laplace;
+static PyObject *__pyx_n_gumbel;
+static PyObject *__pyx_n_logistic;
+static PyObject *__pyx_n_lognormal;
+static PyObject *__pyx_n_rayleigh;
+static PyObject *__pyx_n_wald;
+static PyObject *__pyx_n_triangular;
+static PyObject *__pyx_n_binomial;
+static PyObject *__pyx_n_negative_binomial;
+static PyObject *__pyx_n_poisson;
+static PyObject *__pyx_n_zipf;
+static PyObject *__pyx_n_geometric;
+static PyObject *__pyx_n_hypergeometric;
+static PyObject *__pyx_n_logseries;
+static PyObject *__pyx_n_multivariate_normal;
+static PyObject *__pyx_n_multinomial;
+static PyObject *__pyx_n_shuffle;
+static PyObject *__pyx_n_permutation;
+static PyObject *__pyx_n_numpy;
 
-  static PyObject *__pyx_n__sp;
-  static PyObject *__pyx_n__rand;
-  static PyObject *__pyx_n_seed;
-  static PyObject *__pyx_n_get_state;
-  static PyObject *__pyx_n_set_state;
-  static PyObject *__pyx_n_random_sample;
-  static PyObject *__pyx_n_randint;
-  static PyObject *__pyx_n_bytes;
-  static PyObject *__pyx_n_uniform;
-  static PyObject *__pyx_n_rand;
-  static PyObject *__pyx_n_randn;
-  static PyObject *__pyx_n_random_integers;
-  static PyObject *__pyx_n_standard_normal;
-  static PyObject *__pyx_n_normal;
-  static PyObject *__pyx_n_beta;
-  static PyObject *__pyx_n_exponential;
-  static PyObject *__pyx_n_standard_exponential;
-  static PyObject *__pyx_n_standard_gamma;
-  static PyObject *__pyx_n_gamma;
-  static PyObject *__pyx_n_f;
-  static PyObject *__pyx_n_noncentral_f;
-  static PyObject *__pyx_n_chisquare;
-  static PyObject *__pyx_n_noncentral_chisquare;
-  static PyObject *__pyx_n_standard_cauchy;
-  static PyObject *__pyx_n_standard_t;
-  static PyObject *__pyx_n_vonmises;
-  static PyObject *__pyx_n_pareto;
-  static PyObject *__pyx_n_weibull;
-  static PyObject *__pyx_n_power;
-  static PyObject *__pyx_n_laplace;
-  static PyObject *__pyx_n_gumbel;
-  static PyObject *__pyx_n_logistic;
-  static PyObject *__pyx_n_lognormal;
-  static PyObject *__pyx_n_rayleigh;
-  static PyObject *__pyx_n_wald;
-  static PyObject *__pyx_n_triangular;
-  static PyObject *__pyx_n_binomial;
-  static PyObject *__pyx_n_negative_binomial;
-  static PyObject *__pyx_n_poisson;
-  static PyObject *__pyx_n_zipf;
-  static PyObject *__pyx_n_geometric;
-  static PyObject *__pyx_n_hypergeometric;
-  static PyObject *__pyx_n_logseries;
-  static PyObject *__pyx_n_multivariate_normal;
-  static PyObject *__pyx_n_multinomial;
-  static PyObject *__pyx_n_shuffle;
-  static PyObject *__pyx_n_permutation;
-  static PyObject *__pyx_n_numpy;
+static PyObject *__pyx_n_empty;
+static PyObject *__pyx_n_float64;
 
-  static PyObject *__pyx_n_empty;
-  static PyObject *__pyx_n_float64;
+static PyObject *__pyx_f_6mtrand_cont0_array(rk_state (*__pyx_v_state),double ((*__pyx_v_func)(rk_state (*))),PyObject *__pyx_v_size) {
+  double (*__pyx_v_array_data);
+  PyArrayObject *arrayObject;
+  long __pyx_v_length;
+  long __pyx_v_i;
+  PyObject *__pyx_r;
+  int __pyx_1;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  Py_INCREF(__pyx_v_size);
+  arrayObject = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-  static PyObject *__pyx_f_6mtrand_cont0_array(rk_state (*__pyx_v_state),double ((*__pyx_v_func)(rk_state (*))),PyObject *__pyx_v_size) {
-    double (*__pyx_v_array_data);
-    PyArrayObject *arrayObject;
-    long __pyx_v_length;
-    long __pyx_v_i;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":128 */
+  __pyx_1 = __pyx_v_size == Py_None;
+  if (__pyx_1) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":129 */
+    __pyx_2 = PyFloat_FromDouble(__pyx_v_func(__pyx_v_state)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; goto __pyx_L1;}
+    __pyx_r = __pyx_2;
+    __pyx_2 = 0;
+    goto __pyx_L0;
+    goto __pyx_L2;
+  }
+  /*else*/ {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":131 */
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
+    __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
+    __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_float64); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
     Py_INCREF(__pyx_v_size);
-    arrayObject = (PyArrayObject *)Py_None; Py_INCREF(arrayObject);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
+    __pyx_4 = 0;
+    __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_4)));
+    Py_DECREF(((PyObject *)arrayObject));
+    arrayObject = ((PyArrayObject *)__pyx_4);
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":128 */
-    __pyx_1 = __pyx_v_size == Py_None;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":132 */
+    __pyx_v_length = PyArray_SIZE(arrayObject);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":133 */
+    __pyx_v_array_data = ((double (*))arrayObject->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":134 */
+    for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":135 */
+      (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state);
+      __pyx_L3:;
+    }
+    __pyx_L4:;
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":136 */
+    Py_INCREF(((PyObject *)arrayObject));
+    __pyx_r = ((PyObject *)arrayObject);
+    goto __pyx_L0;
+  }
+  __pyx_L2:;
+
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.cont0_array");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(arrayObject);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_n_ValueError;
+
+static PyObject *__pyx_k60p;
+
+static char (__pyx_k60[]) = "size is not compatible with inputs";
+
+static PyObject *__pyx_f_6mtrand_cont1_array(rk_state (*__pyx_v_state),double ((*__pyx_v_func)(rk_state (*),double )),PyObject *__pyx_v_size,PyArrayObject *__pyx_v_oa) {
+  double (*__pyx_v_array_data);
+  double (*__pyx_v_oa_data);
+  PyArrayObject *arrayObject;
+  npy_intp __pyx_v_length;
+  npy_intp __pyx_v_i;
+  PyArrayIterObject *__pyx_v_itera;
+  PyArrayMultiIterObject *__pyx_v_multi;
+  int __pyx_v_scalar;
+  PyObject *__pyx_r;
+  int __pyx_1;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  npy_intp __pyx_5;
+  Py_INCREF(__pyx_v_size);
+  Py_INCREF(__pyx_v_oa);
+  arrayObject = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_itera = ((PyArrayIterObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_multi = ((PyArrayMultiIterObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":148 */
+  __pyx_v_scalar = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":149 */
+  __pyx_1 = (__pyx_v_oa->nd == 0);
+  if (__pyx_1) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":150 */
+    __pyx_v_oa_data = ((double (*))__pyx_v_oa->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":151 */
+    __pyx_v_scalar = 1;
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":153 */
+  __pyx_1 = __pyx_v_size == Py_None;
+  if (__pyx_1) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":154 */
+    __pyx_1 = __pyx_v_scalar;
     if (__pyx_1) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":129 */
-      __pyx_2 = PyFloat_FromDouble(__pyx_v_func(__pyx_v_state)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; goto __pyx_L1;}
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":155 */
+      __pyx_2 = PyFloat_FromDouble(__pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]))); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; goto __pyx_L1;}
       __pyx_r = __pyx_2;
       __pyx_2 = 0;
       goto __pyx_L0;
-      goto __pyx_L2;
+      goto __pyx_L4;
     }
     /*else*/ {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":131 */
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
-      __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":157 */
+      __pyx_2 = PyArray_SimpleNew(__pyx_v_oa->nd,__pyx_v_oa->dimensions,NPY_DOUBLE); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
+      Py_DECREF(((PyObject *)arrayObject));
+      arrayObject = ((PyArrayObject *)__pyx_2);
       Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
-      __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_float64); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
-      __pyx_4 = 0;
-      __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_INCREF(((PyObject *)__pyx_4));
-      Py_DECREF(((PyObject *)arrayObject));
-      arrayObject = (PyArrayObject *)((PyObject *)__pyx_4);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":132 */
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":158 */
       __pyx_v_length = PyArray_SIZE(arrayObject);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":133 */
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":159 */
       __pyx_v_array_data = ((double (*))arrayObject->data);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":134 */
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":160 */
+      __pyx_2 = PyArray_IterNew(((PyObject *)__pyx_v_oa)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayIterObject *)__pyx_2)));
+      Py_DECREF(((PyObject *)__pyx_v_itera));
+      __pyx_v_itera = ((PyArrayIterObject *)__pyx_2);
+      Py_DECREF(__pyx_2); __pyx_2 = 0;
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":161 */
       for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":135 */
-        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state);
-        __pyx_L3:;
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":162 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(((double (*))__pyx_v_itera->dataptr)[0]));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":163 */
+        PyArray_ITER_NEXT(__pyx_v_itera);
+        __pyx_L5:;
       }
-      __pyx_L4:;
-
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":136 */
-      Py_INCREF(((PyObject *)arrayObject));
-      __pyx_r = ((PyObject *)arrayObject);
-      goto __pyx_L0;
+      __pyx_L6:;
     }
-    __pyx_L2:;
-
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.cont0_array");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(arrayObject);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    __pyx_L4:;
+    goto __pyx_L3;
   }
+  /*else*/ {
 
-  static PyObject *__pyx_f_6mtrand_cont1_array(rk_state (*__pyx_v_state),double ((*__pyx_v_func)(rk_state (*),double )),PyObject *__pyx_v_size,double __pyx_v_a) {
-    double (*__pyx_v_array_data);
-    PyArrayObject *arrayObject;
-    long __pyx_v_length;
-    long __pyx_v_i;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":165 */
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; goto __pyx_L1;}
+    __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; goto __pyx_L1;}
+    __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_float64); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; goto __pyx_L1;}
     Py_INCREF(__pyx_v_size);
-    arrayObject = (PyArrayObject *)Py_None; Py_INCREF(arrayObject);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
+    __pyx_4 = 0;
+    __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; goto __pyx_L1;}
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_4)));
+    Py_DECREF(((PyObject *)arrayObject));
+    arrayObject = ((PyArrayObject *)__pyx_4);
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":144 */
-    __pyx_1 = __pyx_v_size == Py_None;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":166 */
+    __pyx_v_array_data = ((double (*))arrayObject->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":167 */
+    __pyx_1 = __pyx_v_scalar;
     if (__pyx_1) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":145 */
-      __pyx_2 = PyFloat_FromDouble(__pyx_v_func(__pyx_v_state,__pyx_v_a)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; goto __pyx_L1;}
-      __pyx_r = __pyx_2;
-      __pyx_2 = 0;
-      goto __pyx_L0;
-      goto __pyx_L2;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":168 */
+      __pyx_v_length = PyArray_SIZE(arrayObject);
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":169 */
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":170 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]));
+        __pyx_L8:;
+      }
+      __pyx_L9:;
+      goto __pyx_L7;
     }
     /*else*/ {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":147 */
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; goto __pyx_L1;}
-      __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; goto __pyx_L1;}
-      __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_float64); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
-      __pyx_4 = 0;
-      __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; goto __pyx_L1;}
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":172 */
+      __pyx_3 = PyArray_MultiIterNew(2,((void (*))arrayObject),((void (*))__pyx_v_oa)); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayMultiIterObject *)__pyx_3)));
+      Py_DECREF(((PyObject *)__pyx_v_multi));
+      __pyx_v_multi = ((PyArrayMultiIterObject *)__pyx_3);
       Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_INCREF(((PyObject *)__pyx_4));
-      Py_DECREF(((PyObject *)arrayObject));
-      arrayObject = (PyArrayObject *)((PyObject *)__pyx_4);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":148 */
-      __pyx_v_length = PyArray_SIZE(arrayObject);
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":173 */
+      __pyx_1 = (__pyx_v_multi->size != PyArray_SIZE(arrayObject));
+      if (__pyx_1) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":149 */
-      __pyx_v_array_data = ((double (*))arrayObject->data);
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":174 */
+        __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; goto __pyx_L1;}
+        __pyx_4 = PyTuple_New(1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; goto __pyx_L1;}
+        Py_INCREF(__pyx_k60p);
+        PyTuple_SET_ITEM(__pyx_4, 0, __pyx_k60p);
+        __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_4); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; goto __pyx_L1;}
+        Py_DECREF(__pyx_2); __pyx_2 = 0;
+        Py_DECREF(__pyx_4); __pyx_4 = 0;
+        __Pyx_Raise(__pyx_3, 0, 0);
+        Py_DECREF(__pyx_3); __pyx_3 = 0;
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; goto __pyx_L1;}
+        goto __pyx_L10;
+      }
+      __pyx_L10:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":150 */
-      for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":175 */
+      __pyx_5 = __pyx_v_multi->size;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_5; ++__pyx_v_i) {
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":151 */
-        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,__pyx_v_a);
-        __pyx_L3:;
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":176 */
+        __pyx_v_oa_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,1));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":177 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":178 */
+        PyArray_MultiIter_NEXTi(__pyx_v_multi,1);
+        __pyx_L11:;
       }
-      __pyx_L4:;
-
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":152 */
-      Py_INCREF(((PyObject *)arrayObject));
-      __pyx_r = ((PyObject *)arrayObject);
-      goto __pyx_L0;
+      __pyx_L12:;
     }
-    __pyx_L2:;
+    __pyx_L7:;
+  }
+  __pyx_L3:;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.cont1_array");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(arrayObject);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":179 */
+  Py_INCREF(((PyObject *)arrayObject));
+  __pyx_r = ((PyObject *)arrayObject);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.cont1_array");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(arrayObject);
+  Py_DECREF(__pyx_v_itera);
+  Py_DECREF(__pyx_v_multi);
+  Py_DECREF(__pyx_v_size);
+  Py_DECREF(__pyx_v_oa);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_k61p;
+
+static char (__pyx_k61[]) = "size is not compatible with inputs";
+
+static PyObject *__pyx_f_6mtrand_cont2_array(rk_state (*__pyx_v_state),double ((*__pyx_v_func)(rk_state (*),double ,double )),PyObject *__pyx_v_size,PyArrayObject *__pyx_v_oa,PyArrayObject *__pyx_v_ob) {
+  double (*__pyx_v_array_data);
+  double (*__pyx_v_oa_data);
+  double (*__pyx_v_ob_data);
+  PyArrayObject *arrayObject;
+  npy_intp __pyx_v_length;
+  npy_intp __pyx_v_i;
+  PyArrayMultiIterObject *__pyx_v_multi;
+  int __pyx_v_scalar;
+  PyObject *__pyx_r;
+  int __pyx_1;
+  PyObject *__pyx_2 = 0;
+  npy_intp __pyx_3;
+  PyObject *__pyx_4 = 0;
+  PyObject *__pyx_5 = 0;
+  Py_INCREF(__pyx_v_size);
+  Py_INCREF(__pyx_v_oa);
+  Py_INCREF(__pyx_v_ob);
+  arrayObject = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_multi = ((PyArrayMultiIterObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":192 */
+  __pyx_v_scalar = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":193 */
+  __pyx_1 = (__pyx_v_oa->nd == 0);
+  if (__pyx_1) {
+    __pyx_1 = (__pyx_v_ob->nd == 0);
   }
+  if (__pyx_1) {
 
-  static PyObject *__pyx_f_6mtrand_cont2_array(rk_state (*__pyx_v_state),double ((*__pyx_v_func)(rk_state (*),double ,double )),PyObject *__pyx_v_size,double __pyx_v_a,double __pyx_v_b) {
-    double (*__pyx_v_array_data);
-    PyArrayObject *arrayObject;
-    long __pyx_v_length;
-    long __pyx_v_i;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    Py_INCREF(__pyx_v_size);
-    arrayObject = (PyArrayObject *)Py_None; Py_INCREF(arrayObject);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":194 */
+    __pyx_v_oa_data = ((double (*))__pyx_v_oa->data);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":161 */
-    __pyx_1 = __pyx_v_size == Py_None;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":195 */
+    __pyx_v_ob_data = ((double (*))__pyx_v_ob->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":196 */
+    __pyx_v_scalar = 1;
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":198 */
+  __pyx_1 = __pyx_v_size == Py_None;
+  if (__pyx_1) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":199 */
+    __pyx_1 = __pyx_v_scalar;
     if (__pyx_1) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":162 */
-      __pyx_2 = PyFloat_FromDouble(__pyx_v_func(__pyx_v_state,__pyx_v_a,__pyx_v_b)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; goto __pyx_L1;}
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":200 */
+      __pyx_2 = PyFloat_FromDouble(__pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]),(__pyx_v_ob_data[0]))); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; goto __pyx_L1;}
       __pyx_r = __pyx_2;
       __pyx_2 = 0;
       goto __pyx_L0;
-      goto __pyx_L2;
+      goto __pyx_L4;
     }
     /*else*/ {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":164 */
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; goto __pyx_L1;}
-      __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; goto __pyx_L1;}
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":202 */
+      __pyx_2 = PyArray_MultiIterNew(2,((void (*))__pyx_v_oa),((void (*))__pyx_v_ob)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayMultiIterObject *)__pyx_2)));
+      Py_DECREF(((PyObject *)__pyx_v_multi));
+      __pyx_v_multi = ((PyArrayMultiIterObject *)__pyx_2);
       Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; goto __pyx_L1;}
-      __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_float64); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; goto __pyx_L1;}
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":203 */
+      __pyx_2 = PyArray_SimpleNew(__pyx_v_multi->nd,__pyx_v_multi->dimensions,NPY_DOUBLE); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
+      Py_DECREF(((PyObject *)arrayObject));
+      arrayObject = ((PyArrayObject *)__pyx_2);
       Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
-      __pyx_4 = 0;
-      __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_INCREF(((PyObject *)__pyx_4));
-      Py_DECREF(((PyObject *)arrayObject));
-      arrayObject = (PyArrayObject *)((PyObject *)__pyx_4);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":165 */
-      __pyx_v_length = PyArray_SIZE(arrayObject);
-
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":166 */
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":204 */
       __pyx_v_array_data = ((double (*))arrayObject->data);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":167 */
-      for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":205 */
+      __pyx_3 = __pyx_v_multi->size;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_3; ++__pyx_v_i) {
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":168 */
-        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,__pyx_v_a,__pyx_v_b);
-        __pyx_L3:;
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":206 */
+        __pyx_v_oa_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,0));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":207 */
+        __pyx_v_ob_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,1));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":208 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]),(__pyx_v_ob_data[0]));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":209 */
+        PyArray_MultiIter_NEXT(__pyx_v_multi);
+        __pyx_L5:;
       }
-      __pyx_L4:;
-
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":169 */
-      Py_INCREF(((PyObject *)arrayObject));
-      __pyx_r = ((PyObject *)arrayObject);
-      goto __pyx_L0;
+      __pyx_L6:;
     }
-    __pyx_L2:;
-
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.cont2_array");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(arrayObject);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    __pyx_L4:;
+    goto __pyx_L3;
   }
+  /*else*/ {
 
-  static PyObject *__pyx_f_6mtrand_cont3_array(rk_state (*__pyx_v_state),double ((*__pyx_v_func)(rk_state (*),double ,double ,double )),PyObject *__pyx_v_size,double __pyx_v_a,double __pyx_v_b,double __pyx_v_c) {
-    double (*__pyx_v_array_data);
-    PyArrayObject *arrayObject;
-    long __pyx_v_length;
-    long __pyx_v_i;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":211 */
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; goto __pyx_L1;}
+    __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; goto __pyx_L1;}
+    __pyx_5 = PyObject_GetAttr(__pyx_2, __pyx_n_float64); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; goto __pyx_L1;}
     Py_INCREF(__pyx_v_size);
-    arrayObject = (PyArrayObject *)Py_None; Py_INCREF(arrayObject);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_2, 1, __pyx_5);
+    __pyx_5 = 0;
+    __pyx_5 = PyObject_CallObject(__pyx_4, __pyx_2); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_5)));
+    Py_DECREF(((PyObject *)arrayObject));
+    arrayObject = ((PyArrayObject *)__pyx_5);
+    Py_DECREF(__pyx_5); __pyx_5 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":179 */
-    __pyx_1 = __pyx_v_size == Py_None;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":212 */
+    __pyx_v_array_data = ((double (*))arrayObject->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":213 */
+    __pyx_1 = __pyx_v_scalar;
     if (__pyx_1) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":180 */
-      __pyx_2 = PyFloat_FromDouble(__pyx_v_func(__pyx_v_state,__pyx_v_a,__pyx_v_b,__pyx_v_c)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; goto __pyx_L1;}
-      __pyx_r = __pyx_2;
-      __pyx_2 = 0;
-      goto __pyx_L0;
-      goto __pyx_L2;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":214 */
+      __pyx_v_length = PyArray_SIZE(arrayObject);
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":215 */
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":216 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]),(__pyx_v_ob_data[0]));
+        __pyx_L8:;
+      }
+      __pyx_L9:;
+      goto __pyx_L7;
     }
     /*else*/ {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":182 */
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; goto __pyx_L1;}
-      __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; goto __pyx_L1;}
-      __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_float64); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
-      __pyx_4 = 0;
-      __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_INCREF(((PyObject *)__pyx_4));
-      Py_DECREF(((PyObject *)arrayObject));
-      arrayObject = (PyArrayObject *)((PyObject *)__pyx_4);
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":218 */
+      __pyx_4 = PyArray_MultiIterNew(3,((void (*))arrayObject),((void (*))__pyx_v_oa),((void (*))__pyx_v_ob)); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayMultiIterObject *)__pyx_4)));
+      Py_DECREF(((PyObject *)__pyx_v_multi));
+      __pyx_v_multi = ((PyArrayMultiIterObject *)__pyx_4);
       Py_DECREF(__pyx_4); __pyx_4 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":183 */
-      __pyx_v_length = PyArray_SIZE(arrayObject);
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":219 */
+      __pyx_1 = (__pyx_v_multi->size != PyArray_SIZE(arrayObject));
+      if (__pyx_1) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":184 */
-      __pyx_v_array_data = ((double (*))arrayObject->data);
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":220 */
+        __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; goto __pyx_L1;}
+        __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; goto __pyx_L1;}
+        Py_INCREF(__pyx_k61p);
+        PyTuple_SET_ITEM(__pyx_5, 0, __pyx_k61p);
+        __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_5); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; goto __pyx_L1;}
+        Py_DECREF(__pyx_2); __pyx_2 = 0;
+        Py_DECREF(__pyx_5); __pyx_5 = 0;
+        __Pyx_Raise(__pyx_4, 0, 0);
+        Py_DECREF(__pyx_4); __pyx_4 = 0;
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; goto __pyx_L1;}
+        goto __pyx_L10;
+      }
+      __pyx_L10:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":185 */
-      for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":221 */
+      __pyx_3 = __pyx_v_multi->size;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_3; ++__pyx_v_i) {
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":186 */
-        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,__pyx_v_a,__pyx_v_b,__pyx_v_c);
-        __pyx_L3:;
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":222 */
+        __pyx_v_oa_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,1));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":223 */
+        __pyx_v_ob_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,2));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":224 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]),(__pyx_v_ob_data[0]));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":225 */
+        PyArray_MultiIter_NEXTi(__pyx_v_multi,1);
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":226 */
+        PyArray_MultiIter_NEXTi(__pyx_v_multi,2);
+        __pyx_L11:;
       }
-      __pyx_L4:;
+      __pyx_L12:;
+    }
+    __pyx_L7:;
+  }
+  __pyx_L3:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":187 */
-      Py_INCREF(((PyObject *)arrayObject));
-      __pyx_r = ((PyObject *)arrayObject);
-      goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":227 */
+  Py_INCREF(((PyObject *)arrayObject));
+  __pyx_r = ((PyObject *)arrayObject);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_4);
+  Py_XDECREF(__pyx_5);
+  __Pyx_AddTraceback("mtrand.cont2_array");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(arrayObject);
+  Py_DECREF(__pyx_v_multi);
+  Py_DECREF(__pyx_v_size);
+  Py_DECREF(__pyx_v_oa);
+  Py_DECREF(__pyx_v_ob);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_k62p;
+
+static char (__pyx_k62[]) = "size is not compatible with inputs";
+
+static PyObject *__pyx_f_6mtrand_cont3_array(rk_state (*__pyx_v_state),double ((*__pyx_v_func)(rk_state (*),double ,double ,double )),PyObject *__pyx_v_size,PyArrayObject *__pyx_v_oa,PyArrayObject *__pyx_v_ob,PyArrayObject *__pyx_v_oc) {
+  double (*__pyx_v_array_data);
+  double (*__pyx_v_oa_data);
+  double (*__pyx_v_ob_data);
+  double (*__pyx_v_oc_data);
+  PyArrayObject *arrayObject;
+  npy_intp __pyx_v_length;
+  npy_intp __pyx_v_i;
+  PyArrayMultiIterObject *__pyx_v_multi;
+  int __pyx_v_scalar;
+  PyObject *__pyx_r;
+  int __pyx_1;
+  PyObject *__pyx_2 = 0;
+  npy_intp __pyx_3;
+  PyObject *__pyx_4 = 0;
+  PyObject *__pyx_5 = 0;
+  Py_INCREF(__pyx_v_size);
+  Py_INCREF(__pyx_v_oa);
+  Py_INCREF(__pyx_v_ob);
+  Py_INCREF(__pyx_v_oc);
+  arrayObject = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_multi = ((PyArrayMultiIterObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":242 */
+  __pyx_v_scalar = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":243 */
+  __pyx_1 = (__pyx_v_oa->nd == 0);
+  if (__pyx_1) {
+    __pyx_1 = (__pyx_v_ob->nd == 0);
+    if (__pyx_1) {
+      __pyx_1 = (__pyx_v_oc->nd == 0);
     }
-    __pyx_L2:;
+  }
+  if (__pyx_1) {
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.cont3_array");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(arrayObject);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":244 */
+    __pyx_v_oa_data = ((double (*))__pyx_v_oa->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":245 */
+    __pyx_v_ob_data = ((double (*))__pyx_v_ob->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":246 */
+    __pyx_v_oc_data = ((double (*))__pyx_v_oc->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":247 */
+    __pyx_v_scalar = 1;
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_n_int;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":249 */
+  __pyx_1 = __pyx_v_size == Py_None;
+  if (__pyx_1) {
 
-  static PyObject *__pyx_f_6mtrand_disc0_array(rk_state (*__pyx_v_state),long ((*__pyx_v_func)(rk_state (*))),PyObject *__pyx_v_size) {
-    long (*__pyx_v_array_data);
-    PyArrayObject *arrayObject;
-    long __pyx_v_length;
-    long __pyx_v_i;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    Py_INCREF(__pyx_v_size);
-    arrayObject = (PyArrayObject *)Py_None; Py_INCREF(arrayObject);
-
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":195 */
-    __pyx_1 = __pyx_v_size == Py_None;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":250 */
+    __pyx_1 = __pyx_v_scalar;
     if (__pyx_1) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":196 */
-      __pyx_2 = PyInt_FromLong(__pyx_v_func(__pyx_v_state)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; goto __pyx_L1;}
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":251 */
+      __pyx_2 = PyFloat_FromDouble(__pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]),(__pyx_v_ob_data[0]),(__pyx_v_oc_data[0]))); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; goto __pyx_L1;}
       __pyx_r = __pyx_2;
       __pyx_2 = 0;
       goto __pyx_L0;
-      goto __pyx_L2;
+      goto __pyx_L4;
     }
     /*else*/ {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":198 */
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; goto __pyx_L1;}
-      __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; goto __pyx_L1;}
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":253 */
+      __pyx_2 = PyArray_MultiIterNew(3,((void (*))__pyx_v_oa),((void (*))__pyx_v_ob),((void (*))__pyx_v_oc)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayMultiIterObject *)__pyx_2)));
+      Py_DECREF(((PyObject *)__pyx_v_multi));
+      __pyx_v_multi = ((PyArrayMultiIterObject *)__pyx_2);
       Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; goto __pyx_L1;}
-      __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_4, 1, __pyx_2);
-      __pyx_2 = 0;
-      __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      Py_INCREF(((PyObject *)__pyx_2));
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":254 */
+      __pyx_2 = PyArray_SimpleNew(__pyx_v_multi->nd,__pyx_v_multi->dimensions,NPY_DOUBLE); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
       Py_DECREF(((PyObject *)arrayObject));
-      arrayObject = (PyArrayObject *)((PyObject *)__pyx_2);
+      arrayObject = ((PyArrayObject *)__pyx_2);
       Py_DECREF(__pyx_2); __pyx_2 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":199 */
-      __pyx_v_length = PyArray_SIZE(arrayObject);
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":255 */
+      __pyx_v_array_data = ((double (*))arrayObject->data);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":200 */
-      __pyx_v_array_data = ((long (*))arrayObject->data);
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":256 */
+      __pyx_3 = __pyx_v_multi->size;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_3; ++__pyx_v_i) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":201 */
-      for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":257 */
+        __pyx_v_oa_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,0));
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":202 */
-        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state);
-        __pyx_L3:;
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":258 */
+        __pyx_v_ob_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,1));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":259 */
+        __pyx_v_oc_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,2));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":260 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]),(__pyx_v_ob_data[0]),(__pyx_v_oc_data[0]));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":261 */
+        PyArray_MultiIter_NEXT(__pyx_v_multi);
+        __pyx_L5:;
       }
-      __pyx_L4:;
-
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":203 */
-      Py_INCREF(((PyObject *)arrayObject));
-      __pyx_r = ((PyObject *)arrayObject);
-      goto __pyx_L0;
+      __pyx_L6:;
     }
-    __pyx_L2:;
-
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.disc0_array");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(arrayObject);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    __pyx_L4:;
+    goto __pyx_L3;
   }
+  /*else*/ {
 
-  static PyObject *__pyx_f_6mtrand_discnp_array(rk_state (*__pyx_v_state),long ((*__pyx_v_func)(rk_state (*),long ,double )),PyObject *__pyx_v_size,long __pyx_v_n,double __pyx_v_p) {
-    long (*__pyx_v_array_data);
-    PyArrayObject *arrayObject;
-    long __pyx_v_length;
-    long __pyx_v_i;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":263 */
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; goto __pyx_L1;}
+    __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; goto __pyx_L1;}
+    __pyx_5 = PyObject_GetAttr(__pyx_2, __pyx_n_float64); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; goto __pyx_L1;}
     Py_INCREF(__pyx_v_size);
-    arrayObject = (PyArrayObject *)Py_None; Py_INCREF(arrayObject);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_2, 1, __pyx_5);
+    __pyx_5 = 0;
+    __pyx_5 = PyObject_CallObject(__pyx_4, __pyx_2); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_5)));
+    Py_DECREF(((PyObject *)arrayObject));
+    arrayObject = ((PyArrayObject *)__pyx_5);
+    Py_DECREF(__pyx_5); __pyx_5 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":211 */
-    __pyx_1 = __pyx_v_size == Py_None;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":264 */
+    __pyx_v_array_data = ((double (*))arrayObject->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":265 */
+    __pyx_1 = __pyx_v_scalar;
     if (__pyx_1) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":212 */
-      __pyx_2 = PyInt_FromLong(__pyx_v_func(__pyx_v_state,__pyx_v_n,__pyx_v_p)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; goto __pyx_L1;}
-      __pyx_r = __pyx_2;
-      __pyx_2 = 0;
-      goto __pyx_L0;
-      goto __pyx_L2;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":266 */
+      __pyx_v_length = PyArray_SIZE(arrayObject);
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":267 */
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":268 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]),(__pyx_v_ob_data[0]),(__pyx_v_oc_data[0]));
+        __pyx_L8:;
+      }
+      __pyx_L9:;
+      goto __pyx_L7;
     }
     /*else*/ {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":214 */
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; goto __pyx_L1;}
-      __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; goto __pyx_L1;}
-      __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_4, 1, __pyx_2);
-      __pyx_2 = 0;
-      __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":270 */
+      __pyx_4 = PyArray_MultiIterNew(4,((void (*))arrayObject),((void (*))__pyx_v_oa),((void (*))__pyx_v_ob),((void (*))__pyx_v_oc)); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayMultiIterObject *)__pyx_4)));
+      Py_DECREF(((PyObject *)__pyx_v_multi));
+      __pyx_v_multi = ((PyArrayMultiIterObject *)__pyx_4);
       Py_DECREF(__pyx_4); __pyx_4 = 0;
-      Py_INCREF(((PyObject *)__pyx_2));
-      Py_DECREF(((PyObject *)arrayObject));
-      arrayObject = (PyArrayObject *)((PyObject *)__pyx_2);
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":215 */
-      __pyx_v_length = PyArray_SIZE(arrayObject);
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":272 */
+      __pyx_1 = (__pyx_v_multi->size != PyArray_SIZE(arrayObject));
+      if (__pyx_1) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":216 */
-      __pyx_v_array_data = ((long (*))arrayObject->data);
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":273 */
+        __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; goto __pyx_L1;}
+        __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; goto __pyx_L1;}
+        Py_INCREF(__pyx_k62p);
+        PyTuple_SET_ITEM(__pyx_5, 0, __pyx_k62p);
+        __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_5); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; goto __pyx_L1;}
+        Py_DECREF(__pyx_2); __pyx_2 = 0;
+        Py_DECREF(__pyx_5); __pyx_5 = 0;
+        __Pyx_Raise(__pyx_4, 0, 0);
+        Py_DECREF(__pyx_4); __pyx_4 = 0;
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; goto __pyx_L1;}
+        goto __pyx_L10;
+      }
+      __pyx_L10:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":217 */
-      for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":274 */
+      __pyx_3 = __pyx_v_multi->size;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_3; ++__pyx_v_i) {
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":218 */
-        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,__pyx_v_n,__pyx_v_p);
-        __pyx_L3:;
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":275 */
+        __pyx_v_oa_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,1));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":276 */
+        __pyx_v_ob_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,2));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":277 */
+        __pyx_v_oc_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,3));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":278 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]),(__pyx_v_ob_data[0]),(__pyx_v_oc_data[0]));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":279 */
+        PyArray_MultiIter_NEXT(__pyx_v_multi);
+        __pyx_L11:;
       }
-      __pyx_L4:;
-
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":219 */
-      Py_INCREF(((PyObject *)arrayObject));
-      __pyx_r = ((PyObject *)arrayObject);
-      goto __pyx_L0;
+      __pyx_L12:;
     }
-    __pyx_L2:;
+    __pyx_L7:;
+  }
+  __pyx_L3:;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":280 */
+  Py_INCREF(((PyObject *)arrayObject));
+  __pyx_r = ((PyObject *)arrayObject);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_4);
+  Py_XDECREF(__pyx_5);
+  __Pyx_AddTraceback("mtrand.cont3_array");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(arrayObject);
+  Py_DECREF(__pyx_v_multi);
+  Py_DECREF(__pyx_v_size);
+  Py_DECREF(__pyx_v_oa);
+  Py_DECREF(__pyx_v_ob);
+  Py_DECREF(__pyx_v_oc);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_n_int;
+
+static PyObject *__pyx_f_6mtrand_disc0_array(rk_state (*__pyx_v_state),long ((*__pyx_v_func)(rk_state (*))),PyObject *__pyx_v_size) {
+  long (*__pyx_v_array_data);
+  PyArrayObject *arrayObject;
+  long __pyx_v_length;
+  long __pyx_v_i;
+  PyObject *__pyx_r;
+  int __pyx_1;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  Py_INCREF(__pyx_v_size);
+  arrayObject = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":288 */
+  __pyx_1 = __pyx_v_size == Py_None;
+  if (__pyx_1) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":289 */
+    __pyx_2 = PyInt_FromLong(__pyx_v_func(__pyx_v_state)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; goto __pyx_L1;}
+    __pyx_r = __pyx_2;
+    __pyx_2 = 0;
     goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.discnp_array");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(arrayObject);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    goto __pyx_L2;
   }
+  /*else*/ {
 
-  static PyObject *__pyx_f_6mtrand_discnmN_array(rk_state (*__pyx_v_state),long ((*__pyx_v_func)(rk_state (*),long ,long ,long )),PyObject *__pyx_v_size,long __pyx_v_n,long __pyx_v_m,long __pyx_v_N) {
-    long (*__pyx_v_array_data);
-    PyArrayObject *arrayObject;
-    long __pyx_v_length;
-    long __pyx_v_i;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":291 */
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; goto __pyx_L1;}
+    __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; goto __pyx_L1;}
+    __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; goto __pyx_L1;}
     Py_INCREF(__pyx_v_size);
-    arrayObject = (PyArrayObject *)Py_None; Py_INCREF(arrayObject);
+    PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_4, 1, __pyx_2);
+    __pyx_2 = 0;
+    __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; goto __pyx_L1;}
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
+    Py_DECREF(((PyObject *)arrayObject));
+    arrayObject = ((PyArrayObject *)__pyx_2);
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":228 */
-    __pyx_1 = __pyx_v_size == Py_None;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":292 */
+    __pyx_v_length = PyArray_SIZE(arrayObject);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":293 */
+    __pyx_v_array_data = ((long (*))arrayObject->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":294 */
+    for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":295 */
+      (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state);
+      __pyx_L3:;
+    }
+    __pyx_L4:;
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":296 */
+    Py_INCREF(((PyObject *)arrayObject));
+    __pyx_r = ((PyObject *)arrayObject);
+    goto __pyx_L0;
+  }
+  __pyx_L2:;
+
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.disc0_array");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(arrayObject);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_k63p;
+
+static char (__pyx_k63[]) = "size is not compatible with inputs";
+
+static PyObject *__pyx_f_6mtrand_discnp_array(rk_state (*__pyx_v_state),long ((*__pyx_v_func)(rk_state (*),long ,double )),PyObject *__pyx_v_size,PyArrayObject *__pyx_v_on,PyArrayObject *__pyx_v_op) {
+  long (*__pyx_v_array_data);
+  PyArrayObject *arrayObject;
+  npy_intp __pyx_v_length;
+  npy_intp __pyx_v_i;
+  double (*__pyx_v_op_data);
+  long (*__pyx_v_on_data);
+  int __pyx_v_scalar;
+  PyArrayMultiIterObject *__pyx_v_multi;
+  PyObject *__pyx_r;
+  int __pyx_1;
+  PyObject *__pyx_2 = 0;
+  npy_intp __pyx_3;
+  PyObject *__pyx_4 = 0;
+  PyObject *__pyx_5 = 0;
+  Py_INCREF(__pyx_v_size);
+  Py_INCREF(__pyx_v_on);
+  Py_INCREF(__pyx_v_op);
+  arrayObject = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_multi = ((PyArrayMultiIterObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":308 */
+  __pyx_v_scalar = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":309 */
+  __pyx_1 = (__pyx_v_on->nd == 0);
+  if (__pyx_1) {
+    __pyx_1 = (__pyx_v_op->nd == 0);
+  }
+  if (__pyx_1) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":310 */
+    __pyx_v_on_data = ((long (*))__pyx_v_on->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":311 */
+    __pyx_v_op_data = ((double (*))__pyx_v_op->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":312 */
+    __pyx_v_scalar = 1;
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":314 */
+  __pyx_1 = __pyx_v_size == Py_None;
+  if (__pyx_1) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":315 */
+    __pyx_1 = __pyx_v_scalar;
     if (__pyx_1) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":229 */
-      __pyx_2 = PyInt_FromLong(__pyx_v_func(__pyx_v_state,__pyx_v_n,__pyx_v_m,__pyx_v_N)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; goto __pyx_L1;}
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":316 */
+      __pyx_2 = PyInt_FromLong(__pyx_v_func(__pyx_v_state,(__pyx_v_on_data[0]),(__pyx_v_op_data[0]))); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; goto __pyx_L1;}
       __pyx_r = __pyx_2;
       __pyx_2 = 0;
       goto __pyx_L0;
-      goto __pyx_L2;
+      goto __pyx_L4;
     }
     /*else*/ {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":231 */
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; goto __pyx_L1;}
-      __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; goto __pyx_L1;}
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":318 */
+      __pyx_2 = PyArray_MultiIterNew(2,((void (*))__pyx_v_on),((void (*))__pyx_v_op)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayMultiIterObject *)__pyx_2)));
+      Py_DECREF(((PyObject *)__pyx_v_multi));
+      __pyx_v_multi = ((PyArrayMultiIterObject *)__pyx_2);
       Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; goto __pyx_L1;}
-      __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_4, 1, __pyx_2);
-      __pyx_2 = 0;
-      __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      Py_INCREF(((PyObject *)__pyx_2));
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":319 */
+      __pyx_2 = PyArray_SimpleNew(__pyx_v_multi->nd,__pyx_v_multi->dimensions,NPY_LONG); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
       Py_DECREF(((PyObject *)arrayObject));
-      arrayObject = (PyArrayObject *)((PyObject *)__pyx_2);
+      arrayObject = ((PyArrayObject *)__pyx_2);
       Py_DECREF(__pyx_2); __pyx_2 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":232 */
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":320 */
+      __pyx_v_array_data = ((long (*))arrayObject->data);
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":321 */
+      __pyx_3 = __pyx_v_multi->size;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_3; ++__pyx_v_i) {
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":322 */
+        __pyx_v_on_data = ((long (*))PyArray_MultiIter_DATA(__pyx_v_multi,0));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":323 */
+        __pyx_v_op_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,1));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":324 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_on_data[0]),(__pyx_v_op_data[0]));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":325 */
+        PyArray_MultiIter_NEXT(__pyx_v_multi);
+        __pyx_L5:;
+      }
+      __pyx_L6:;
+    }
+    __pyx_L4:;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":327 */
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; goto __pyx_L1;}
+    __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; goto __pyx_L1;}
+    __pyx_5 = PyTuple_New(2); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; goto __pyx_L1;}
+    Py_INCREF(__pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_5, 1, __pyx_2);
+    __pyx_2 = 0;
+    __pyx_2 = PyObject_CallObject(__pyx_4, __pyx_5); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_5); __pyx_5 = 0;
+    Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
+    Py_DECREF(((PyObject *)arrayObject));
+    arrayObject = ((PyArrayObject *)__pyx_2);
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":328 */
+    __pyx_1 = __pyx_v_scalar;
+    if (__pyx_1) {
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":329 */
       __pyx_v_length = PyArray_SIZE(arrayObject);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":233 */
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":330 */
       __pyx_v_array_data = ((long (*))arrayObject->data);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":234 */
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":331 */
       for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":235 */
-        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,__pyx_v_n,__pyx_v_m,__pyx_v_N);
-        __pyx_L3:;
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":332 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_on_data[0]),(__pyx_v_op_data[0]));
+        __pyx_L8:;
       }
-      __pyx_L4:;
+      __pyx_L9:;
+      goto __pyx_L7;
+    }
+    /*else*/ {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":236 */
-      Py_INCREF(((PyObject *)arrayObject));
-      __pyx_r = ((PyObject *)arrayObject);
-      goto __pyx_L0;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":334 */
+      __pyx_4 = PyArray_MultiIterNew(3,((void (*))arrayObject),((void (*))__pyx_v_on),((void (*))__pyx_v_op)); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayMultiIterObject *)__pyx_4)));
+      Py_DECREF(((PyObject *)__pyx_v_multi));
+      __pyx_v_multi = ((PyArrayMultiIterObject *)__pyx_4);
+      Py_DECREF(__pyx_4); __pyx_4 = 0;
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":335 */
+      __pyx_1 = (__pyx_v_multi->size != PyArray_SIZE(arrayObject));
+      if (__pyx_1) {
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":336 */
+        __pyx_5 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; goto __pyx_L1;}
+        __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; goto __pyx_L1;}
+        Py_INCREF(__pyx_k63p);
+        PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k63p);
+        __pyx_4 = PyObject_CallObject(__pyx_5, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; goto __pyx_L1;}
+        Py_DECREF(__pyx_5); __pyx_5 = 0;
+        Py_DECREF(__pyx_2); __pyx_2 = 0;
+        __Pyx_Raise(__pyx_4, 0, 0);
+        Py_DECREF(__pyx_4); __pyx_4 = 0;
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; goto __pyx_L1;}
+        goto __pyx_L10;
+      }
+      __pyx_L10:;
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":337 */
+      __pyx_3 = __pyx_v_multi->size;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_3; ++__pyx_v_i) {
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":338 */
+        __pyx_v_on_data = ((long (*))PyArray_MultiIter_DATA(__pyx_v_multi,1));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":339 */
+        __pyx_v_op_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,2));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":340 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_on_data[0]),(__pyx_v_op_data[0]));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":341 */
+        PyArray_MultiIter_NEXTi(__pyx_v_multi,1);
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":342 */
+        PyArray_MultiIter_NEXTi(__pyx_v_multi,2);
+        __pyx_L11:;
+      }
+      __pyx_L12:;
     }
-    __pyx_L2:;
+    __pyx_L7:;
+  }
+  __pyx_L3:;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.discnmN_array");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(arrayObject);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":344 */
+  Py_INCREF(((PyObject *)arrayObject));
+  __pyx_r = ((PyObject *)arrayObject);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_4);
+  Py_XDECREF(__pyx_5);
+  __Pyx_AddTraceback("mtrand.discnp_array");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(arrayObject);
+  Py_DECREF(__pyx_v_multi);
+  Py_DECREF(__pyx_v_size);
+  Py_DECREF(__pyx_v_on);
+  Py_DECREF(__pyx_v_op);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_k64p;
+
+static char (__pyx_k64[]) = "size is not compatible with inputs";
+
+static PyObject *__pyx_f_6mtrand_discnmN_array(rk_state (*__pyx_v_state),long ((*__pyx_v_func)(rk_state (*),long ,long ,long )),PyObject *__pyx_v_size,PyArrayObject *__pyx_v_on,PyArrayObject *__pyx_v_om,PyArrayObject *__pyx_v_oN) {
+  long (*__pyx_v_array_data);
+  long (*__pyx_v_on_data);
+  long (*__pyx_v_om_data);
+  long (*__pyx_v_oN_data);
+  PyArrayObject *arrayObject;
+  npy_intp __pyx_v_length;
+  npy_intp __pyx_v_i;
+  PyArrayMultiIterObject *__pyx_v_multi;
+  int __pyx_v_scalar;
+  PyObject *__pyx_r;
+  int __pyx_1;
+  PyObject *__pyx_2 = 0;
+  npy_intp __pyx_3;
+  PyObject *__pyx_4 = 0;
+  PyObject *__pyx_5 = 0;
+  Py_INCREF(__pyx_v_size);
+  Py_INCREF(__pyx_v_on);
+  Py_INCREF(__pyx_v_om);
+  Py_INCREF(__pyx_v_oN);
+  arrayObject = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_multi = ((PyArrayMultiIterObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":358 */
+  __pyx_v_scalar = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":359 */
+  __pyx_1 = (__pyx_v_on->nd == 0);
+  if (__pyx_1) {
+    __pyx_1 = (__pyx_v_om->nd == 0);
+    if (__pyx_1) {
+      __pyx_1 = (__pyx_v_oN->nd == 0);
+    }
   }
+  if (__pyx_1) {
 
-  static PyObject *__pyx_f_6mtrand_discd_array(rk_state (*__pyx_v_state),long ((*__pyx_v_func)(rk_state (*),double )),PyObject *__pyx_v_size,double __pyx_v_a) {
-    long (*__pyx_v_array_data);
-    PyArrayObject *arrayObject;
-    long __pyx_v_length;
-    long __pyx_v_i;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    Py_INCREF(__pyx_v_size);
-    arrayObject = (PyArrayObject *)Py_None; Py_INCREF(arrayObject);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":360 */
+    __pyx_v_scalar = 1;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":244 */
-    __pyx_1 = __pyx_v_size == Py_None;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":361 */
+    __pyx_v_on_data = ((long (*))__pyx_v_on->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":362 */
+    __pyx_v_om_data = ((long (*))__pyx_v_om->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":363 */
+    __pyx_v_oN_data = ((long (*))__pyx_v_oN->data);
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":365 */
+  __pyx_1 = __pyx_v_size == Py_None;
+  if (__pyx_1) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":366 */
+    __pyx_1 = __pyx_v_scalar;
     if (__pyx_1) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":245 */
-      __pyx_2 = PyInt_FromLong(__pyx_v_func(__pyx_v_state,__pyx_v_a)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; goto __pyx_L1;}
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":367 */
+      __pyx_2 = PyInt_FromLong(__pyx_v_func(__pyx_v_state,(__pyx_v_on_data[0]),(__pyx_v_om_data[0]),(__pyx_v_oN_data[0]))); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; goto __pyx_L1;}
       __pyx_r = __pyx_2;
       __pyx_2 = 0;
       goto __pyx_L0;
-      goto __pyx_L2;
+      goto __pyx_L4;
     }
     /*else*/ {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":247 */
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 247; goto __pyx_L1;}
-      __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 247; goto __pyx_L1;}
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":369 */
+      __pyx_2 = PyArray_MultiIterNew(3,((void (*))__pyx_v_on),((void (*))__pyx_v_om),((void (*))__pyx_v_oN)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayMultiIterObject *)__pyx_2)));
+      Py_DECREF(((PyObject *)__pyx_v_multi));
+      __pyx_v_multi = ((PyArrayMultiIterObject *)__pyx_2);
       Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 247; goto __pyx_L1;}
-      __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 247; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_4, 1, __pyx_2);
-      __pyx_2 = 0;
-      __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 247; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      Py_INCREF(((PyObject *)__pyx_2));
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":370 */
+      __pyx_2 = PyArray_SimpleNew(__pyx_v_multi->nd,__pyx_v_multi->dimensions,NPY_LONG); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
       Py_DECREF(((PyObject *)arrayObject));
-      arrayObject = (PyArrayObject *)((PyObject *)__pyx_2);
+      arrayObject = ((PyArrayObject *)__pyx_2);
       Py_DECREF(__pyx_2); __pyx_2 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":248 */
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":371 */
+      __pyx_v_array_data = ((long (*))arrayObject->data);
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":372 */
+      __pyx_3 = __pyx_v_multi->size;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_3; ++__pyx_v_i) {
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":373 */
+        __pyx_v_on_data = ((long (*))PyArray_MultiIter_DATA(__pyx_v_multi,0));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":374 */
+        __pyx_v_om_data = ((long (*))PyArray_MultiIter_DATA(__pyx_v_multi,1));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":375 */
+        __pyx_v_oN_data = ((long (*))PyArray_MultiIter_DATA(__pyx_v_multi,2));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":376 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_on_data[0]),(__pyx_v_om_data[0]),(__pyx_v_oN_data[0]));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":377 */
+        PyArray_MultiIter_NEXT(__pyx_v_multi);
+        __pyx_L5:;
+      }
+      __pyx_L6:;
+    }
+    __pyx_L4:;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":379 */
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; goto __pyx_L1;}
+    __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; goto __pyx_L1;}
+    __pyx_5 = PyTuple_New(2); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; goto __pyx_L1;}
+    Py_INCREF(__pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_5, 1, __pyx_2);
+    __pyx_2 = 0;
+    __pyx_2 = PyObject_CallObject(__pyx_4, __pyx_5); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_5); __pyx_5 = 0;
+    Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
+    Py_DECREF(((PyObject *)arrayObject));
+    arrayObject = ((PyArrayObject *)__pyx_2);
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":380 */
+    __pyx_v_array_data = ((long (*))arrayObject->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":381 */
+    __pyx_1 = __pyx_v_scalar;
+    if (__pyx_1) {
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":382 */
       __pyx_v_length = PyArray_SIZE(arrayObject);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":249 */
-      __pyx_v_array_data = ((long (*))arrayObject->data);
-
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":250 */
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":383 */
       for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":251 */
-        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,__pyx_v_a);
-        __pyx_L3:;
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":384 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_on_data[0]),(__pyx_v_om_data[0]),(__pyx_v_oN_data[0]));
+        __pyx_L8:;
       }
-      __pyx_L4:;
-
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":252 */
-      Py_INCREF(((PyObject *)arrayObject));
-      __pyx_r = ((PyObject *)arrayObject);
-      goto __pyx_L0;
+      __pyx_L9:;
+      goto __pyx_L7;
     }
-    __pyx_L2:;
+    /*else*/ {
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.discd_array");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(arrayObject);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
-  }
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":386 */
+      __pyx_4 = PyArray_MultiIterNew(4,((void (*))arrayObject),((void (*))__pyx_v_on),((void (*))__pyx_v_om),((void (*))__pyx_v_oN)); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayMultiIterObject *)__pyx_4)));
+      Py_DECREF(((PyObject *)__pyx_v_multi));
+      __pyx_v_multi = ((PyArrayMultiIterObject *)__pyx_4);
+      Py_DECREF(__pyx_4); __pyx_4 = 0;
 
-  static double __pyx_f_6mtrand_kahan_sum(double (*__pyx_v_darr),long __pyx_v_n) {
-    double __pyx_v_c;
-    double __pyx_v_y;
-    double __pyx_v_t;
-    double __pyx_v_sum;
-    long __pyx_v_i;
-    double __pyx_r;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":388 */
+      __pyx_1 = (__pyx_v_multi->size != PyArray_SIZE(arrayObject));
+      if (__pyx_1) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":257 */
-    __pyx_v_sum = (__pyx_v_darr[0]);
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":389 */
+        __pyx_5 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; goto __pyx_L1;}
+        __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; goto __pyx_L1;}
+        Py_INCREF(__pyx_k64p);
+        PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k64p);
+        __pyx_4 = PyObject_CallObject(__pyx_5, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; goto __pyx_L1;}
+        Py_DECREF(__pyx_5); __pyx_5 = 0;
+        Py_DECREF(__pyx_2); __pyx_2 = 0;
+        __Pyx_Raise(__pyx_4, 0, 0);
+        Py_DECREF(__pyx_4); __pyx_4 = 0;
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; goto __pyx_L1;}
+        goto __pyx_L10;
+      }
+      __pyx_L10:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":258 */
-    __pyx_v_c = 0.0;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":390 */
+      __pyx_3 = __pyx_v_multi->size;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_3; ++__pyx_v_i) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":259 */
-    for (__pyx_v_i = 1; __pyx_v_i < __pyx_v_n; ++__pyx_v_i) {
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":391 */
+        __pyx_v_on_data = ((long (*))PyArray_MultiIter_DATA(__pyx_v_multi,1));
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":260 */
-      __pyx_v_y = ((__pyx_v_darr[__pyx_v_i]) - __pyx_v_c);
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":392 */
+        __pyx_v_om_data = ((long (*))PyArray_MultiIter_DATA(__pyx_v_multi,2));
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":261 */
-      __pyx_v_t = (__pyx_v_sum + __pyx_v_y);
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":393 */
+        __pyx_v_oN_data = ((long (*))PyArray_MultiIter_DATA(__pyx_v_multi,3));
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":262 */
-      __pyx_v_c = ((__pyx_v_t - __pyx_v_sum) - __pyx_v_y);
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":394 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_on_data[0]),(__pyx_v_om_data[0]),(__pyx_v_oN_data[0]));
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":263 */
-      __pyx_v_sum = __pyx_v_t;
-      __pyx_L2:;
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":395 */
+        PyArray_MultiIter_NEXT(__pyx_v_multi);
+        __pyx_L11:;
+      }
+      __pyx_L12:;
     }
-    __pyx_L3:;
+    __pyx_L7:;
+  }
+  __pyx_L3:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":264 */
-    __pyx_r = __pyx_v_sum;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":397 */
+  Py_INCREF(((PyObject *)arrayObject));
+  __pyx_r = ((PyObject *)arrayObject);
+  goto __pyx_L0;
 
-    __pyx_r = ((double )0);
-    goto __pyx_L0;
-    __pyx_L1:;
-    __Pyx_WriteUnraisable("mtrand.kahan_sum");
-    __pyx_L0:;
-    return __pyx_r;
-  }
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_4);
+  Py_XDECREF(__pyx_5);
+  __Pyx_AddTraceback("mtrand.discnmN_array");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(arrayObject);
+  Py_DECREF(__pyx_v_multi);
+  Py_DECREF(__pyx_v_size);
+  Py_DECREF(__pyx_v_on);
+  Py_DECREF(__pyx_v_om);
+  Py_DECREF(__pyx_v_oN);
+  return __pyx_r;
+}
 
-  static int __pyx_f_6mtrand_11RandomState___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static int __pyx_f_6mtrand_11RandomState___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_seed = 0;
-    int __pyx_r;
-    PyObject *__pyx_1 = 0;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    static char *__pyx_argnames[] = {"seed",0};
-    __pyx_v_seed = __pyx_k2;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_seed)) return -1;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_seed);
+static PyObject *__pyx_k65p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":287 */
-    ((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state = ((rk_state (*))PyMem_Malloc((sizeof(rk_state ))));
+static char (__pyx_k65[]) = "size is not compatible with inputs";
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":289 */
-    __pyx_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_seed); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; goto __pyx_L1;}
-    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_seed);
-    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_seed);
-    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
+static PyObject *__pyx_f_6mtrand_discd_array(rk_state (*__pyx_v_state),long ((*__pyx_v_func)(rk_state (*),double )),PyObject *__pyx_v_size,PyArrayObject *__pyx_v_oa) {
+  long (*__pyx_v_array_data);
+  double (*__pyx_v_oa_data);
+  PyArrayObject *arrayObject;
+  npy_intp __pyx_v_length;
+  npy_intp __pyx_v_i;
+  PyArrayMultiIterObject *__pyx_v_multi;
+  PyArrayIterObject *__pyx_v_itera;
+  int __pyx_v_scalar;
+  PyObject *__pyx_r;
+  int __pyx_1;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  npy_intp __pyx_5;
+  Py_INCREF(__pyx_v_size);
+  Py_INCREF(__pyx_v_oa);
+  arrayObject = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_multi = ((PyArrayMultiIterObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_itera = ((PyArrayIterObject *)Py_None); Py_INCREF(Py_None);
 
-    __pyx_r = ((int )0);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    __Pyx_AddTraceback("mtrand.RandomState.__init__");
-    __pyx_r = -1;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_seed);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":409 */
+  __pyx_v_scalar = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":410 */
+  __pyx_1 = (__pyx_v_oa->nd == 0);
+  if (__pyx_1) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":411 */
+    __pyx_v_oa_data = ((double (*))__pyx_v_oa->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":412 */
+    __pyx_v_scalar = 1;
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static void __pyx_f_6mtrand_11RandomState___dealloc__(PyObject *__pyx_v_self); /*proto*/
-  static void __pyx_f_6mtrand_11RandomState___dealloc__(PyObject *__pyx_v_self) {
-    int __pyx_1;
-    Py_INCREF(__pyx_v_self);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":414 */
+  __pyx_1 = __pyx_v_size == Py_None;
+  if (__pyx_1) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":292 */
-    __pyx_1 = (((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state != 0);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":415 */
+    __pyx_1 = __pyx_v_scalar;
     if (__pyx_1) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":293 */
-      PyMem_Free(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state);
-
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":294 */
-      ((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state = 0;
-      goto __pyx_L2;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":416 */
+      __pyx_2 = PyInt_FromLong(__pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]))); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; goto __pyx_L1;}
+      __pyx_r = __pyx_2;
+      __pyx_2 = 0;
+      goto __pyx_L0;
+      goto __pyx_L4;
     }
-    __pyx_L2:;
+    /*else*/ {
 
-    goto __pyx_L0;
-    __pyx_L1:;
-    __Pyx_AddTraceback("mtrand.RandomState.__dealloc__");
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-  }
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":418 */
+      __pyx_2 = PyArray_SimpleNew(__pyx_v_oa->nd,__pyx_v_oa->dimensions,NPY_LONG); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 418; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
+      Py_DECREF(((PyObject *)arrayObject));
+      arrayObject = ((PyArrayObject *)__pyx_2);
+      Py_DECREF(__pyx_2); __pyx_2 = 0;
 
-  static PyObject *__pyx_n_type;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":419 */
+      __pyx_v_length = PyArray_SIZE(arrayObject);
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_seed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_seed[] = "Seed the generator.\n\n        seed(seed=None)\n\n        seed can be an integer, an array (or other sequence) of integers of any\n        length, or None. If seed is None, then RandomState will try to read data\n        from /dev/urandom (or the Windows analogue) if available or seed from\n        the clock otherwise.\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_seed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_seed = 0;
-    rk_error __pyx_v_errcode;
-    PyArrayObject *arrayObject_obj;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    unsigned long __pyx_5;
-    static char *__pyx_argnames[] = {"seed",0};
-    __pyx_v_seed = __pyx_k3;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_seed)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_seed);
-    arrayObject_obj = (PyArrayObject *)Py_None; Py_INCREF(arrayObject_obj);
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":420 */
+      __pyx_v_array_data = ((long (*))arrayObject->data);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":308 */
-    __pyx_1 = __pyx_v_seed == Py_None;
-    if (__pyx_1) {
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":421 */
+      __pyx_2 = PyArray_IterNew(((PyObject *)__pyx_v_oa)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayIterObject *)__pyx_2)));
+      Py_DECREF(((PyObject *)__pyx_v_itera));
+      __pyx_v_itera = ((PyArrayIterObject *)__pyx_2);
+      Py_DECREF(__pyx_2); __pyx_2 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":309 */
-      __pyx_v_errcode = rk_randomseed(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state);
-      goto __pyx_L2;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":422 */
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":423 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(((double (*))__pyx_v_itera->dataptr)[0]));
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":424 */
+        PyArray_ITER_NEXT(__pyx_v_itera);
+        __pyx_L5:;
+      }
+      __pyx_L6:;
     }
-    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_type); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; goto __pyx_L1;}
-    __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_seed);
-    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_seed);
-    __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; goto __pyx_L1;}
+    __pyx_L4:;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":426 */
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; goto __pyx_L1;}
+    __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_empty); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; goto __pyx_L1;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; goto __pyx_L1;}
+    __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; goto __pyx_L1;}
+    Py_INCREF(__pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_4, 1, __pyx_2);
+    __pyx_2 = 0;
+    __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; goto __pyx_L1;}
     Py_DECREF(__pyx_3); __pyx_3 = 0;
-    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; goto __pyx_L1;}
-    __pyx_1 = __pyx_4 == __pyx_2;
     Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
+    Py_DECREF(((PyObject *)arrayObject));
+    arrayObject = ((PyArrayObject *)__pyx_2);
     Py_DECREF(__pyx_2); __pyx_2 = 0;
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":427 */
+    __pyx_v_array_data = ((long (*))arrayObject->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":428 */
+    __pyx_1 = __pyx_v_scalar;
     if (__pyx_1) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":311 */
-      __pyx_5 = PyLong_AsUnsignedLong(__pyx_v_seed); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; goto __pyx_L1;}
-      rk_seed(__pyx_5,((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state);
-      goto __pyx_L2;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":429 */
+      __pyx_v_length = PyArray_SIZE(arrayObject);
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":430 */
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":431 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]));
+        __pyx_L8:;
+      }
+      __pyx_L9:;
+      goto __pyx_L7;
     }
     /*else*/ {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":313 */
-      __pyx_3 = ((PyObject *)PyArray_ContiguousFromObject(__pyx_v_seed,PyArray_LONG,1,1)); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; goto __pyx_L1;}
-      Py_INCREF(((PyObject *)__pyx_3));
-      Py_DECREF(((PyObject *)arrayObject_obj));
-      arrayObject_obj = (PyArrayObject *)((PyObject *)__pyx_3);
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":433 */
+      __pyx_3 = PyArray_MultiIterNew(2,((void (*))arrayObject),((void (*))__pyx_v_oa)); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; goto __pyx_L1;}
+      Py_INCREF(((PyObject *)((PyArrayMultiIterObject *)__pyx_3)));
+      Py_DECREF(((PyObject *)__pyx_v_multi));
+      __pyx_v_multi = ((PyArrayMultiIterObject *)__pyx_3);
       Py_DECREF(__pyx_3); __pyx_3 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":314 */
-      init_by_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,((unsigned long (*))arrayObject_obj->data),(arrayObject_obj->dimensions[0]));
-    }
-    __pyx_L2:;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":434 */
+      __pyx_1 = (__pyx_v_multi->size != PyArray_SIZE(arrayObject));
+      if (__pyx_1) {
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.seed");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(arrayObject_obj);
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_seed);
-    return __pyx_r;
-  }
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":435 */
+        __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; goto __pyx_L1;}
+        __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; goto __pyx_L1;}
+        Py_INCREF(__pyx_k65p);
+        PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k65p);
+        __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; goto __pyx_L1;}
+        Py_DECREF(__pyx_4); __pyx_4 = 0;
+        Py_DECREF(__pyx_2); __pyx_2 = 0;
+        __Pyx_Raise(__pyx_3, 0, 0);
+        Py_DECREF(__pyx_3); __pyx_3 = 0;
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; goto __pyx_L1;}
+        goto __pyx_L10;
+      }
+      __pyx_L10:;
 
-  static PyObject *__pyx_n_MT19937;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":436 */
+      __pyx_5 = __pyx_v_multi->size;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_5; ++__pyx_v_i) {
 
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":437 */
+        __pyx_v_oa_data = ((double (*))PyArray_MultiIter_DATA(__pyx_v_multi,1));
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_get_state(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_get_state[] = "Return a tuple representing the internal state of the generator.\n\n        get_state() -> (\'MT19937\', int key[624], int pos)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_get_state(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyArrayObject *arrayObject_state;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {0};
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return 0;
-    Py_INCREF(__pyx_v_self);
-    arrayObject_state = (PyArrayObject *)Py_None; Py_INCREF(arrayObject_state);
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":438 */
+        (__pyx_v_array_data[__pyx_v_i]) = __pyx_v_func(__pyx_v_state,(__pyx_v_oa_data[0]));
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":323 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_empty); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    __pyx_1 = PyInt_FromLong(624); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; goto __pyx_L1;}
-    __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; goto __pyx_L1;}
-    __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; goto __pyx_L1;}
-    PyTuple_SET_ITEM(__pyx_4, 0, __pyx_1);
-    PyTuple_SET_ITEM(__pyx_4, 1, __pyx_3);
-    __pyx_1 = 0;
-    __pyx_3 = 0;
-    __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    Py_DECREF(__pyx_4); __pyx_4 = 0;
-    Py_INCREF(((PyObject *)__pyx_1));
-    Py_DECREF(((PyObject *)arrayObject_state));
-    arrayObject_state = (PyArrayObject *)((PyObject *)__pyx_1);
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":439 */
+        PyArray_MultiIter_NEXTi(__pyx_v_multi,1);
+        __pyx_L11:;
+      }
+      __pyx_L12:;
+    }
+    __pyx_L7:;
+  }
+  __pyx_L3:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":324 */
-    memcpy(((void (*))arrayObject_state->data),((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state->key,(624 * (sizeof(long ))));
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":440 */
+  Py_INCREF(((PyObject *)arrayObject));
+  __pyx_r = ((PyObject *)arrayObject);
+  goto __pyx_L0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":325 */
-    __pyx_3 = PyInt_FromLong(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state->pos); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; goto __pyx_L1;}
-    __pyx_2 = PyTuple_New(3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; goto __pyx_L1;}
-    Py_INCREF(__pyx_n_MT19937);
-    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_n_MT19937);
-    Py_INCREF(((PyObject *)arrayObject_state));
-    PyTuple_SET_ITEM(__pyx_2, 1, ((PyObject *)arrayObject_state));
-    PyTuple_SET_ITEM(__pyx_2, 2, __pyx_3);
-    __pyx_3 = 0;
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.discd_array");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(arrayObject);
+  Py_DECREF(__pyx_v_multi);
+  Py_DECREF(__pyx_v_itera);
+  Py_DECREF(__pyx_v_size);
+  Py_DECREF(__pyx_v_oa);
+  return __pyx_r;
+}
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.get_state");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(arrayObject_state);
-    Py_DECREF(__pyx_v_self);
-    return __pyx_r;
-  }
+static double __pyx_f_6mtrand_kahan_sum(double (*__pyx_v_darr),long __pyx_v_n) {
+  double __pyx_v_c;
+  double __pyx_v_y;
+  double __pyx_v_t;
+  double __pyx_v_sum;
+  long __pyx_v_i;
+  double __pyx_r;
 
-  static PyObject *__pyx_n_ValueError;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":445 */
+  __pyx_v_sum = (__pyx_v_darr[0]);
 
-  static PyObject *__pyx_k62p;
-  static PyObject *__pyx_k63p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":446 */
+  __pyx_v_c = 0.0;
 
-  static char (__pyx_k62[]) = "algorithm must be 'MT19937'";
-  static char (__pyx_k63[]) = "state must be 624 longs";
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":447 */
+  for (__pyx_v_i = 1; __pyx_v_i < __pyx_v_n; ++__pyx_v_i) {
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_set_state(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_set_state[] = "Set the state from a tuple.\n        \n        state = (\'MT19937\', int key[624], int pos)\n        \n        set_state(state)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_set_state(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_state = 0;
-    PyArrayObject *arrayObject_obj;
-    int __pyx_v_pos;
-    PyObject *__pyx_v_algorithm_name;
-    PyObject *__pyx_v_key;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    PyObject *__pyx_2 = 0;
-    int __pyx_3;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"state",0};
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_state)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_state);
-    arrayObject_obj = (PyArrayObject *)Py_None; Py_INCREF(arrayObject_obj);
-    __pyx_v_algorithm_name = Py_None; Py_INCREF(__pyx_v_algorithm_name);
-    __pyx_v_key = Py_None; Py_INCREF(__pyx_v_key);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":448 */
+    __pyx_v_y = ((__pyx_v_darr[__pyx_v_i]) - __pyx_v_c);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":336 */
-    __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetItem(__pyx_v_state, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    Py_DECREF(__pyx_v_algorithm_name);
-    __pyx_v_algorithm_name = __pyx_2;
-    __pyx_2 = 0;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":449 */
+    __pyx_v_t = (__pyx_v_sum + __pyx_v_y);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":337 */
-    if (PyObject_Cmp(__pyx_v_algorithm_name, __pyx_n_MT19937, &__pyx_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; goto __pyx_L1;}
-    __pyx_3 = __pyx_3 != 0;
-    if (__pyx_3) {
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":450 */
+    __pyx_v_c = ((__pyx_v_t - __pyx_v_sum) - __pyx_v_y);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":338 */
-      __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; goto __pyx_L1;}
-      __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; goto __pyx_L1;}
-      Py_INCREF(__pyx_k62p);
-      PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k62p);
-      __pyx_4 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; goto __pyx_L1;}
-      Py_DECREF(__pyx_1); __pyx_1 = 0;
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":451 */
+    __pyx_v_sum = __pyx_v_t;
     __pyx_L2:;
+  }
+  __pyx_L3:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":339 */
-    __pyx_1 = PySequence_GetSlice(__pyx_v_state, 1, 0x7fffffff); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; goto __pyx_L1;}
-    __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; goto __pyx_L1;}
-    Py_DECREF(__pyx_v_key);
-    __pyx_v_key = __pyx_2;
-    __pyx_2 = 0;
-    __pyx_4 = __Pyx_UnpackItem(__pyx_1, 1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; goto __pyx_L1;}
-    __pyx_3 = PyInt_AsLong(__pyx_4); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; goto __pyx_L1;}
-    Py_DECREF(__pyx_4); __pyx_4 = 0;
-    __pyx_v_pos = __pyx_3;
-    if (__Pyx_EndUnpack(__pyx_1, 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":452 */
+  __pyx_r = __pyx_v_sum;
+  goto __pyx_L0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":340 */
-    __pyx_4 = ((PyObject *)PyArray_ContiguousFromObject(__pyx_v_key,PyArray_LONG,1,1)); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; goto __pyx_L1;}
-    Py_INCREF(((PyObject *)__pyx_4));
-    Py_DECREF(((PyObject *)arrayObject_obj));
-    arrayObject_obj = (PyArrayObject *)((PyObject *)__pyx_4);
-    Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1:;
+  __Pyx_WriteUnraisable("mtrand.kahan_sum");
+  __pyx_L0:;
+  return __pyx_r;
+}
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":341 */
-    __pyx_3 = ((arrayObject_obj->dimensions[0]) != 624);
-    if (__pyx_3) {
+static int __pyx_f_6mtrand_11RandomState___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_6mtrand_11RandomState___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_seed = 0;
+  int __pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  static char *__pyx_argnames[] = {"seed",0};
+  __pyx_v_seed = __pyx_k2;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_seed)) return -1;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_seed);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":342 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; goto __pyx_L1;}
-      __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; goto __pyx_L1;}
-      Py_INCREF(__pyx_k63p);
-      PyTuple_SET_ITEM(__pyx_1, 0, __pyx_k63p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_1); __pyx_1 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; goto __pyx_L1;}
-      goto __pyx_L3;
-    }
-    __pyx_L3:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":475 */
+  ((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state = ((rk_state (*))PyMem_Malloc((sizeof(rk_state ))));
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":343 */
-    memcpy(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state->key,((void (*))arrayObject_obj->data),(624 * (sizeof(long ))));
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":477 */
+  __pyx_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_seed); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_seed);
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_seed);
+  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":344 */
-    ((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state->pos = __pyx_v_pos;
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  __Pyx_AddTraceback("mtrand.RandomState.__init__");
+  __pyx_r = -1;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_seed);
+  return __pyx_r;
+}
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.set_state");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(arrayObject_obj);
-    Py_DECREF(__pyx_v_algorithm_name);
-    Py_DECREF(__pyx_v_key);
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_state);
-    return __pyx_r;
+static void __pyx_f_6mtrand_11RandomState___dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_f_6mtrand_11RandomState___dealloc__(PyObject *__pyx_v_self) {
+  int __pyx_1;
+  Py_INCREF(__pyx_v_self);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":480 */
+  __pyx_1 = (((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state != 0);
+  if (__pyx_1) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":481 */
+    PyMem_Free(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":482 */
+    ((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state = 0;
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState___getstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static PyObject *__pyx_f_6mtrand_11RandomState___getstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    static char *__pyx_argnames[] = {0};
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return 0;
-    Py_INCREF(__pyx_v_self);
+  goto __pyx_L0;
+  __pyx_L1:;
+  __Pyx_AddTraceback("mtrand.RandomState.__dealloc__");
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_self);
+}
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":348 */
-    __pyx_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_get_state); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; goto __pyx_L1;}
-    __pyx_2 = PyTuple_New(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; goto __pyx_L1;}
-    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_r = __pyx_3;
-    __pyx_3 = 0;
-    goto __pyx_L0;
+static PyObject *__pyx_n_type;
+static PyObject *__pyx_n_PyArray_ContiguousFromObject;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    __Pyx_AddTraceback("mtrand.RandomState.__getstate__");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    return __pyx_r;
+static PyObject *__pyx_f_6mtrand_11RandomState_seed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_seed[] = "Seed the generator.\n\n        seed(seed=None)\n\n        seed can be an integer, an array (or other sequence) of integers of any\n        length, or None. If seed is None, then RandomState will try to read data\n        from /dev/urandom (or the Windows analogue) if available or seed from\n        the clock otherwise.\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_seed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_seed = 0;
+  rk_error __pyx_v_errcode;
+  PyArrayObject *arrayObject_obj;
+  PyObject *__pyx_r;
+  int __pyx_1;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  unsigned long __pyx_5;
+  PyObject *__pyx_6 = 0;
+  PyObject *__pyx_7 = 0;
+  static char *__pyx_argnames[] = {"seed",0};
+  __pyx_v_seed = __pyx_k3;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_seed)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_seed);
+  arrayObject_obj = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":496 */
+  __pyx_1 = __pyx_v_seed == Py_None;
+  if (__pyx_1) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":497 */
+    __pyx_v_errcode = rk_randomseed(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state);
+    goto __pyx_L2;
   }
+  __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_type); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; goto __pyx_L1;}
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_seed);
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_seed);
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; goto __pyx_L1;}
+  __pyx_1 = __pyx_4 == __pyx_2;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_1) {
 
-  static PyObject *__pyx_f_6mtrand_11RandomState___setstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static PyObject *__pyx_f_6mtrand_11RandomState___setstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_state = 0;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    static char *__pyx_argnames[] = {"state",0};
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_state)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_state);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":499 */
+    __pyx_5 = PyInt_AsUnsignedLongMask(__pyx_v_seed); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; goto __pyx_L1;}
+    rk_seed(__pyx_5,((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state);
+    goto __pyx_L2;
+  }
+  /*else*/ {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":351 */
-    __pyx_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_set_state); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; goto __pyx_L1;}
-    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_state);
-    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_state);
-    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":501 */
+    __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_PyArray_ContiguousFromObject); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; goto __pyx_L1;}
+    __pyx_4 = PyInt_FromLong(NPY_LONG); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; goto __pyx_L1;}
+    __pyx_2 = PyInt_FromLong(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; goto __pyx_L1;}
+    __pyx_6 = PyInt_FromLong(1); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; goto __pyx_L1;}
+    __pyx_7 = PyTuple_New(4); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; goto __pyx_L1;}
+    Py_INCREF(__pyx_v_seed);
+    PyTuple_SET_ITEM(__pyx_7, 0, __pyx_v_seed);
+    PyTuple_SET_ITEM(__pyx_7, 1, __pyx_4);
+    PyTuple_SET_ITEM(__pyx_7, 2, __pyx_2);
+    PyTuple_SET_ITEM(__pyx_7, 3, __pyx_6);
+    __pyx_4 = 0;
+    __pyx_2 = 0;
+    __pyx_6 = 0;
+    __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_7); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; goto __pyx_L1;}
     Py_DECREF(__pyx_3); __pyx_3 = 0;
+    Py_DECREF(__pyx_7); __pyx_7 = 0;
+    Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_4)));
+    Py_DECREF(((PyObject *)arrayObject_obj));
+    arrayObject_obj = ((PyArrayObject *)__pyx_4);
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    __Pyx_AddTraceback("mtrand.RandomState.__setstate__");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_state);
-    return __pyx_r;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":502 */
+    init_by_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,((unsigned long (*))arrayObject_obj->data),(arrayObject_obj->dimensions[0]));
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_n_random;
-  static PyObject *__pyx_n___RandomState_ctor;
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  Py_XDECREF(__pyx_6);
+  Py_XDECREF(__pyx_7);
+  __Pyx_AddTraceback("mtrand.RandomState.seed");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(arrayObject_obj);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_seed);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState___reduce__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static PyObject *__pyx_f_6mtrand_11RandomState___reduce__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    PyObject *__pyx_5 = 0;
-    static char *__pyx_argnames[] = {0};
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return 0;
-    Py_INCREF(__pyx_v_self);
+static PyObject *__pyx_n_MT19937;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":354 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_random); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; goto __pyx_L1;}
+
+static PyObject *__pyx_f_6mtrand_11RandomState_get_state(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_get_state[] = "Return a tuple representing the internal state of the generator.\n\n        get_state() -> (\'MT19937\', int key[624], int pos)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_get_state(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyArrayObject *arrayObject_state;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  static char *__pyx_argnames[] = {0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return 0;
+  Py_INCREF(__pyx_v_self);
+  arrayObject_state = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":511 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_empty); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyInt_FromLong(624); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; goto __pyx_L1;}
+  __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_4, 0, __pyx_1);
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_3);
+  __pyx_1 = 0;
+  __pyx_3 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)arrayObject_state));
+  arrayObject_state = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":512 */
+  memcpy(((void (*))arrayObject_state->data),((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state->key,(624 * (sizeof(long ))));
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":513 */
+  __pyx_3 = PyInt_FromLong(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state->pos); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; goto __pyx_L1;}
+  Py_INCREF(__pyx_n_MT19937);
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_n_MT19937);
+  Py_INCREF(((PyObject *)arrayObject_state));
+  PyTuple_SET_ITEM(__pyx_2, 1, ((PyObject *)arrayObject_state));
+  PyTuple_SET_ITEM(__pyx_2, 2, __pyx_3);
+  __pyx_3 = 0;
+  __pyx_r = __pyx_2;
+  __pyx_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.get_state");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(arrayObject_state);
+  Py_DECREF(__pyx_v_self);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_k68p;
+static PyObject *__pyx_k69p;
+
+static char (__pyx_k68[]) = "algorithm must be 'MT19937'";
+static char (__pyx_k69[]) = "state must be 624 longs";
+
+static PyObject *__pyx_f_6mtrand_11RandomState_set_state(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_set_state[] = "Set the state from a tuple.\n        \n        state = (\'MT19937\', int key[624], int pos)\n        \n        set_state(state)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_set_state(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_state = 0;
+  PyArrayObject *arrayObject_obj;
+  int __pyx_v_pos;
+  PyObject *__pyx_v_algorithm_name;
+  PyObject *__pyx_v_key;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  int __pyx_3;
+  PyObject *__pyx_4 = 0;
+  PyObject *__pyx_5 = 0;
+  PyObject *__pyx_6 = 0;
+  static char *__pyx_argnames[] = {"state",0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_state)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_state);
+  arrayObject_obj = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_algorithm_name = Py_None; Py_INCREF(Py_None);
+  __pyx_v_key = Py_None; Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":524 */
+  __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetItem(__pyx_v_state, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_v_algorithm_name);
+  __pyx_v_algorithm_name = __pyx_2;
+  __pyx_2 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":525 */
+  if (PyObject_Cmp(__pyx_v_algorithm_name, __pyx_n_MT19937, &__pyx_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; goto __pyx_L1;}
+  __pyx_3 = __pyx_3 != 0;
+  if (__pyx_3) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":526 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; goto __pyx_L1;}
+    Py_INCREF(__pyx_k68p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k68p);
+    __pyx_4 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; goto __pyx_L1;}
     Py_DECREF(__pyx_1); __pyx_1 = 0;
-    __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n___RandomState_ctor); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; goto __pyx_L1;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_2 = PyTuple_New(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; goto __pyx_L1;}
-    __pyx_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_get_state); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; goto __pyx_L1;}
-    __pyx_4 = PyTuple_New(0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; goto __pyx_L1;}
-    __pyx_5 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; goto __pyx_L1;}
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    __Pyx_Raise(__pyx_4, 0, 0);
     Py_DECREF(__pyx_4); __pyx_4 = 0;
-    __pyx_3 = PyTuple_New(3); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; goto __pyx_L1;}
-    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
-    PyTuple_SET_ITEM(__pyx_3, 1, __pyx_2);
-    PyTuple_SET_ITEM(__pyx_3, 2, __pyx_5);
-    __pyx_1 = 0;
-    __pyx_2 = 0;
-    __pyx_5 = 0;
-    __pyx_r = __pyx_3;
-    __pyx_3 = 0;
-    goto __pyx_L0;
-
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    Py_XDECREF(__pyx_5);
-    __Pyx_AddTraceback("mtrand.RandomState.__reduce__");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    return __pyx_r;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_random_sample(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_random_sample[] = "Return random floats in the half-open interval [0.0, 1.0).\n\n        random_sample(size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_random_sample(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    static char *__pyx_argnames[] = {"size",0};
-    __pyx_v_size = __pyx_k4;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":527 */
+  __pyx_1 = PySequence_GetSlice(__pyx_v_state, 1, 0x7fffffff); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; goto __pyx_L1;}
+  __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; goto __pyx_L1;}
+  Py_DECREF(__pyx_v_key);
+  __pyx_v_key = __pyx_2;
+  __pyx_2 = 0;
+  __pyx_4 = __Pyx_UnpackItem(__pyx_1, 1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; goto __pyx_L1;}
+  __pyx_3 = PyInt_AsLong(__pyx_4); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_v_pos = __pyx_3;
+  if (__Pyx_EndUnpack(__pyx_1, 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":362 */
-    __pyx_1 = __pyx_f_6mtrand_cont0_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_double,__pyx_v_size); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; goto __pyx_L1;}
-    __pyx_r = __pyx_1;
-    __pyx_1 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":528 */
+  __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_PyArray_ContiguousFromObject); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; goto __pyx_L1;}
+  __pyx_2 = PyInt_FromLong(NPY_LONG); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; goto __pyx_L1;}
+  __pyx_1 = PyInt_FromLong(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; goto __pyx_L1;}
+  __pyx_5 = PyInt_FromLong(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; goto __pyx_L1;}
+  __pyx_6 = PyTuple_New(4); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_key);
+  PyTuple_SET_ITEM(__pyx_6, 0, __pyx_v_key);
+  PyTuple_SET_ITEM(__pyx_6, 1, __pyx_2);
+  PyTuple_SET_ITEM(__pyx_6, 2, __pyx_1);
+  PyTuple_SET_ITEM(__pyx_6, 3, __pyx_5);
+  __pyx_2 = 0;
+  __pyx_1 = 0;
+  __pyx_5 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_4, __pyx_6); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  Py_DECREF(__pyx_6); __pyx_6 = 0;
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
+  Py_DECREF(((PyObject *)arrayObject_obj));
+  arrayObject_obj = ((PyArrayObject *)__pyx_2);
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    __Pyx_AddTraceback("mtrand.RandomState.random_sample");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":529 */
+  __pyx_3 = ((arrayObject_obj->dimensions[0]) != 624);
+  if (__pyx_3) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":530 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; goto __pyx_L1;}
+    __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; goto __pyx_L1;}
+    Py_INCREF(__pyx_k69p);
+    PyTuple_SET_ITEM(__pyx_5, 0, __pyx_k69p);
+    __pyx_4 = PyObject_CallObject(__pyx_1, __pyx_5); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_5); __pyx_5 = 0;
+    __Pyx_Raise(__pyx_4, 0, 0);
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; goto __pyx_L1;}
+    goto __pyx_L3;
   }
+  __pyx_L3:;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_tomaxint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_tomaxint[] = "Returns random integers x such that 0 <= x <= sys.maxint.\n\n        tomaxint(size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_tomaxint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    static char *__pyx_argnames[] = {"size",0};
-    __pyx_v_size = __pyx_k5;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":531 */
+  memcpy(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state->key,((void (*))arrayObject_obj->data),(624 * (sizeof(long ))));
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":369 */
-    __pyx_1 = __pyx_f_6mtrand_disc0_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_long,__pyx_v_size); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; goto __pyx_L1;}
-    __pyx_r = __pyx_1;
-    __pyx_1 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":532 */
+  ((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state->pos = __pyx_v_pos;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    __Pyx_AddTraceback("mtrand.RandomState.tomaxint");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
-  }
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_4);
+  Py_XDECREF(__pyx_5);
+  Py_XDECREF(__pyx_6);
+  __Pyx_AddTraceback("mtrand.RandomState.set_state");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(arrayObject_obj);
+  Py_DECREF(__pyx_v_algorithm_name);
+  Py_DECREF(__pyx_v_key);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_state);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_k64p;
+static PyObject *__pyx_f_6mtrand_11RandomState___getstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6mtrand_11RandomState___getstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  static char *__pyx_argnames[] = {0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return 0;
+  Py_INCREF(__pyx_v_self);
 
-  static char (__pyx_k64[]) = "low >= high";
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":536 */
+  __pyx_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_get_state); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; goto __pyx_L1;}
+  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_r = __pyx_3;
+  __pyx_3 = 0;
+  goto __pyx_L0;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_randint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_randint[] = "Return random integers x such that low <= x < high.\n\n        randint(low, high=None, size=None) -> random values\n\n        If high is None, then 0 <= x < low.\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_randint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_low = 0;
-    PyObject *__pyx_v_high = 0;
-    PyObject *__pyx_v_size = 0;
-    long __pyx_v_lo;
-    long __pyx_v_hi;
-    long __pyx_v_diff;
-    long (*__pyx_v_array_data);
-    PyArrayObject *arrayObject;
-    long __pyx_v_length;
-    long __pyx_v_i;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    long __pyx_2;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    PyObject *__pyx_5 = 0;
-    static char *__pyx_argnames[] = {"low","high","size",0};
-    __pyx_v_high = __pyx_k6;
-    __pyx_v_size = __pyx_k7;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|OO", __pyx_argnames, &__pyx_v_low, &__pyx_v_high, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_low);
-    Py_INCREF(__pyx_v_high);
-    Py_INCREF(__pyx_v_size);
-    arrayObject = (PyArrayObject *)Py_None; Py_INCREF(arrayObject);
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  __Pyx_AddTraceback("mtrand.RandomState.__getstate__");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_self);
+  return __pyx_r;
+}
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":384 */
-    __pyx_1 = __pyx_v_high == Py_None;
-    if (__pyx_1) {
+static PyObject *__pyx_f_6mtrand_11RandomState___setstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6mtrand_11RandomState___setstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_state = 0;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  static char *__pyx_argnames[] = {"state",0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_state)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_state);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":385 */
-      __pyx_v_lo = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":539 */
+  __pyx_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_set_state); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_state);
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_state);
+  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":386 */
-      __pyx_2 = PyInt_AsLong(__pyx_v_low); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; goto __pyx_L1;}
-      __pyx_v_hi = __pyx_2;
-      goto __pyx_L2;
-    }
-    /*else*/ {
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  __Pyx_AddTraceback("mtrand.RandomState.__setstate__");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_state);
+  return __pyx_r;
+}
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":388 */
-      __pyx_2 = PyInt_AsLong(__pyx_v_low); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; goto __pyx_L1;}
-      __pyx_v_lo = __pyx_2;
+static PyObject *__pyx_n_random;
+static PyObject *__pyx_n___RandomState_ctor;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":389 */
-      __pyx_2 = PyInt_AsLong(__pyx_v_high); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; goto __pyx_L1;}
-      __pyx_v_hi = __pyx_2;
-    }
-    __pyx_L2:;
+static PyObject *__pyx_f_6mtrand_11RandomState___reduce__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6mtrand_11RandomState___reduce__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  PyObject *__pyx_5 = 0;
+  static char *__pyx_argnames[] = {0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return 0;
+  Py_INCREF(__pyx_v_self);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":391 */
-    __pyx_v_diff = ((__pyx_v_hi - __pyx_v_lo) - 1);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":542 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_random); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n___RandomState_ctor); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_2 = PyTuple_New(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_get_state); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; goto __pyx_L1;}
+  __pyx_5 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(3); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  PyTuple_SET_ITEM(__pyx_3, 1, __pyx_2);
+  PyTuple_SET_ITEM(__pyx_3, 2, __pyx_5);
+  __pyx_1 = 0;
+  __pyx_2 = 0;
+  __pyx_5 = 0;
+  __pyx_r = __pyx_3;
+  __pyx_3 = 0;
+  goto __pyx_L0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":392 */
-    __pyx_1 = (__pyx_v_diff < 0);
-    if (__pyx_1) {
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  Py_XDECREF(__pyx_5);
+  __Pyx_AddTraceback("mtrand.RandomState.__reduce__");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_self);
+  return __pyx_r;
+}
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":393 */
-      __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; goto __pyx_L1;}
-      __pyx_4 = PyTuple_New(1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; goto __pyx_L1;}
-      Py_INCREF(__pyx_k64p);
-      PyTuple_SET_ITEM(__pyx_4, 0, __pyx_k64p);
-      __pyx_5 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      __Pyx_Raise(__pyx_5, 0, 0);
-      Py_DECREF(__pyx_5); __pyx_5 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; goto __pyx_L1;}
-      goto __pyx_L3;
-    }
-    __pyx_L3:;
+static PyObject *__pyx_f_6mtrand_11RandomState_random_sample(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_random_sample[] = "Return random floats in the half-open interval [0.0, 1.0).\n\n        random_sample(size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_random_sample(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_size = 0;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  static char *__pyx_argnames[] = {"size",0};
+  __pyx_v_size = __pyx_k4;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_size);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":395 */
-    __pyx_1 = __pyx_v_size == Py_None;
-    if (__pyx_1) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":550 */
+  __pyx_1 = __pyx_f_6mtrand_cont0_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_double,__pyx_v_size); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; goto __pyx_L1;}
+  __pyx_r = __pyx_1;
+  __pyx_1 = 0;
+  goto __pyx_L0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":396 */
-      __pyx_3 = PyLong_FromUnsignedLong((rk_interval(__pyx_v_diff,((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state) + __pyx_v_lo)); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; goto __pyx_L1;}
-      __pyx_r = __pyx_3;
-      __pyx_3 = 0;
-      goto __pyx_L0;
-      goto __pyx_L4;
-    }
-    /*else*/ {
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  __Pyx_AddTraceback("mtrand.RandomState.random_sample");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":398 */
-      __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; goto __pyx_L1;}
-      __pyx_5 = PyObject_GetAttr(__pyx_4, __pyx_n_empty); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; goto __pyx_L1;}
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; goto __pyx_L1;}
-      __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_4, 1, __pyx_3);
-      __pyx_3 = 0;
-      __pyx_3 = PyObject_CallObject(__pyx_5, __pyx_4); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; goto __pyx_L1;}
-      Py_DECREF(__pyx_5); __pyx_5 = 0;
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      Py_INCREF(((PyObject *)__pyx_3));
-      Py_DECREF(((PyObject *)arrayObject));
-      arrayObject = (PyArrayObject *)((PyObject *)__pyx_3);
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
+static PyObject *__pyx_f_6mtrand_11RandomState_tomaxint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_tomaxint[] = "Returns random integers x such that 0 <= x <= sys.maxint.\n\n        tomaxint(size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_tomaxint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_size = 0;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  static char *__pyx_argnames[] = {"size",0};
+  __pyx_v_size = __pyx_k5;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_size);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":399 */
-      __pyx_v_length = PyArray_SIZE(arrayObject);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":557 */
+  __pyx_1 = __pyx_f_6mtrand_disc0_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_long,__pyx_v_size); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; goto __pyx_L1;}
+  __pyx_r = __pyx_1;
+  __pyx_1 = 0;
+  goto __pyx_L0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":400 */
-      __pyx_v_array_data = ((long (*))arrayObject->data);
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  __Pyx_AddTraceback("mtrand.RandomState.tomaxint");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":401 */
-      for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+static PyObject *__pyx_k70p;
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":402 */
-        (__pyx_v_array_data[__pyx_v_i]) = (__pyx_v_lo + ((long )rk_interval(__pyx_v_diff,((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state)));
-        __pyx_L5:;
-      }
-      __pyx_L6:;
+static char (__pyx_k70[]) = "low >= high";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":403 */
-      Py_INCREF(((PyObject *)arrayObject));
-      __pyx_r = ((PyObject *)arrayObject);
-      goto __pyx_L0;
-    }
-    __pyx_L4:;
+static PyObject *__pyx_f_6mtrand_11RandomState_randint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_randint[] = "Return random integers x such that low <= x < high.\n\n        randint(low, high=None, size=None) -> random values\n\n        If high is None, then 0 <= x < low.\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_randint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_low = 0;
+  PyObject *__pyx_v_high = 0;
+  PyObject *__pyx_v_size = 0;
+  long __pyx_v_lo;
+  long __pyx_v_hi;
+  long __pyx_v_diff;
+  long (*__pyx_v_array_data);
+  PyArrayObject *arrayObject;
+  long __pyx_v_length;
+  long __pyx_v_i;
+  PyObject *__pyx_r;
+  int __pyx_1;
+  long __pyx_2;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  PyObject *__pyx_5 = 0;
+  static char *__pyx_argnames[] = {"low","high","size",0};
+  __pyx_v_high = __pyx_k6;
+  __pyx_v_size = __pyx_k7;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|OO", __pyx_argnames, &__pyx_v_low, &__pyx_v_high, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_low);
+  Py_INCREF(__pyx_v_high);
+  Py_INCREF(__pyx_v_size);
+  arrayObject = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    Py_XDECREF(__pyx_5);
-    __Pyx_AddTraceback("mtrand.RandomState.randint");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(arrayObject);
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_low);
-    Py_DECREF(__pyx_v_high);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":572 */
+  __pyx_1 = __pyx_v_high == Py_None;
+  if (__pyx_1) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":573 */
+    __pyx_v_lo = 0;
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":574 */
+    __pyx_2 = PyInt_AsLong(__pyx_v_low); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; goto __pyx_L1;}
+    __pyx_v_hi = __pyx_2;
+    goto __pyx_L2;
   }
+  /*else*/ {
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_bytes(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_bytes[] = "Return random bytes.\n\n        bytes(length) -> str\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_bytes(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    unsigned int __pyx_v_length;
-    void (*__pyx_v_bytes);
-    PyObject *__pyx_v_bytestring;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    static char *__pyx_argnames[] = {"length",0};
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "i", __pyx_argnames, &__pyx_v_length)) return 0;
-    Py_INCREF(__pyx_v_self);
-    __pyx_v_bytestring = Py_None; Py_INCREF(__pyx_v_bytestring);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":576 */
+    __pyx_2 = PyInt_AsLong(__pyx_v_low); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; goto __pyx_L1;}
+    __pyx_v_lo = __pyx_2;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":411 */
-    __pyx_v_bytes = PyMem_Malloc(__pyx_v_length);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":577 */
+    __pyx_2 = PyInt_AsLong(__pyx_v_high); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; goto __pyx_L1;}
+    __pyx_v_hi = __pyx_2;
+  }
+  __pyx_L2:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":412 */
-    rk_fill(__pyx_v_bytes,__pyx_v_length,((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":579 */
+  __pyx_v_diff = ((__pyx_v_hi - __pyx_v_lo) - 1);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":413 */
-    __pyx_1 = PyString_FromStringAndSize(((char (*))__pyx_v_bytes),__pyx_v_length); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; goto __pyx_L1;}
-    Py_DECREF(__pyx_v_bytestring);
-    __pyx_v_bytestring = __pyx_1;
-    __pyx_1 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":580 */
+  __pyx_1 = (__pyx_v_diff < 0);
+  if (__pyx_1) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":414 */
-    PyMem_Free(__pyx_v_bytes);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":581 */
+    __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; goto __pyx_L1;}
+    __pyx_4 = PyTuple_New(1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; goto __pyx_L1;}
+    Py_INCREF(__pyx_k70p);
+    PyTuple_SET_ITEM(__pyx_4, 0, __pyx_k70p);
+    __pyx_5 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; goto __pyx_L1;}
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    __Pyx_Raise(__pyx_5, 0, 0);
+    Py_DECREF(__pyx_5); __pyx_5 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; goto __pyx_L1;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":415 */
-    Py_INCREF(__pyx_v_bytestring);
-    __pyx_r = __pyx_v_bytestring;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":583 */
+  __pyx_1 = __pyx_v_size == Py_None;
+  if (__pyx_1) {
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":584 */
+    __pyx_3 = PyLong_FromUnsignedLong((rk_interval(__pyx_v_diff,((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state) + __pyx_v_lo)); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 584; goto __pyx_L1;}
+    __pyx_r = __pyx_3;
+    __pyx_3 = 0;
     goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    __Pyx_AddTraceback("mtrand.RandomState.bytes");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_bytestring);
-    Py_DECREF(__pyx_v_self);
-    return __pyx_r;
+    goto __pyx_L4;
   }
+  /*else*/ {
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_uniform(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_uniform[] = "Uniform distribution over [low, high).\n\n        uniform(low=0.0, high=1.0, size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_uniform(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_low;
-    double __pyx_v_high;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    static char *__pyx_argnames[] = {"low","high","size",0};
-    __pyx_v_low = __pyx_k8;
-    __pyx_v_high = __pyx_k9;
-    __pyx_v_size = __pyx_k10;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|ddO", __pyx_argnames, &__pyx_v_low, &__pyx_v_high, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":586 */
+    __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; goto __pyx_L1;}
+    __pyx_5 = PyObject_GetAttr(__pyx_4, __pyx_n_empty); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; goto __pyx_L1;}
+    __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; goto __pyx_L1;}
     Py_INCREF(__pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_4, 1, __pyx_3);
+    __pyx_3 = 0;
+    __pyx_3 = PyObject_CallObject(__pyx_5, __pyx_4); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; goto __pyx_L1;}
+    Py_DECREF(__pyx_5); __pyx_5 = 0;
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_3)));
+    Py_DECREF(((PyObject *)arrayObject));
+    arrayObject = ((PyArrayObject *)__pyx_3);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":422 */
-    __pyx_1 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_uniform,__pyx_v_size,__pyx_v_low,(__pyx_v_high - __pyx_v_low)); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; goto __pyx_L1;}
-    __pyx_r = __pyx_1;
-    __pyx_1 = 0;
-    goto __pyx_L0;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":587 */
+    __pyx_v_length = PyArray_SIZE(arrayObject);
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":588 */
+    __pyx_v_array_data = ((long (*))arrayObject->data);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":589 */
+    for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_length; ++__pyx_v_i) {
+
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":590 */
+      (__pyx_v_array_data[__pyx_v_i]) = (__pyx_v_lo + ((long )rk_interval(__pyx_v_diff,((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state)));
+      __pyx_L5:;
+    }
+    __pyx_L6:;
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":591 */
+    Py_INCREF(((PyObject *)arrayObject));
+    __pyx_r = ((PyObject *)arrayObject);
     goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    __Pyx_AddTraceback("mtrand.RandomState.uniform");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
   }
+  __pyx_L4:;
 
-  static PyObject *__pyx_n_len;
-  static PyObject *__pyx_n_size;
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  Py_XDECREF(__pyx_5);
+  __Pyx_AddTraceback("mtrand.RandomState.randint");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(arrayObject);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_low);
+  Py_DECREF(__pyx_v_high);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
+static PyObject *__pyx_f_6mtrand_11RandomState_bytes(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_bytes[] = "Return random bytes.\n\n        bytes(length) -> str\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_bytes(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  unsigned int __pyx_v_length;
+  void (*__pyx_v_bytes);
+  PyObject *__pyx_v_bytestring;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  static char *__pyx_argnames[] = {"length",0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "I", __pyx_argnames, &__pyx_v_length)) return 0;
+  Py_INCREF(__pyx_v_self);
+  __pyx_v_bytestring = Py_None; Py_INCREF(Py_None);
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_rand(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_rand[] = "Return an array of the given dimensions which is initialized to \n        random numbers from a uniform distribution in the range [0,1).\n\n        rand(d0, d1, ..., dn) -> random values\n\n        Note:  This is a convenience function. If you want an\n                    interface that takes a tuple as the first argument\n                    use numpy.random.random_sample(shape_tuple).\n        \n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_rand(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_args = 0;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    int __pyx_4;
-    PyObject *__pyx_5 = 0;
-    static char *__pyx_argnames[] = {0};
-    if (__Pyx_GetStarArgs(&__pyx_args, &__pyx_kwds, __pyx_argnames, 0, &__pyx_v_args, 0) < 0) return 0;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) {
-      Py_XDECREF(__pyx_args);
-      Py_XDECREF(__pyx_kwds);
-      Py_XDECREF(__pyx_v_args);
-      return 0;
-    }
-    Py_INCREF(__pyx_v_self);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":599 */
+  __pyx_v_bytes = PyMem_Malloc(__pyx_v_length);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":436 */
-    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; goto __pyx_L1;}
-    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_args);
-    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_args);
-    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; goto __pyx_L1;}
-    if (PyObject_Cmp(__pyx_3, __pyx_1, &__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; goto __pyx_L1;}
-    __pyx_4 = __pyx_4 == 0;
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (__pyx_4) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":600 */
+  rk_fill(__pyx_v_bytes,__pyx_v_length,((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":437 */
-      __pyx_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_random_sample); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; goto __pyx_L1;}
-      __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __pyx_r = __pyx_1;
-      __pyx_1 = 0;
-      goto __pyx_L0;
-      goto __pyx_L2;
-    }
-    /*else*/ {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":601 */
+  __pyx_1 = PyString_FromStringAndSize(((char (*))__pyx_v_bytes),__pyx_v_length); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; goto __pyx_L1;}
+  Py_DECREF(__pyx_v_bytestring);
+  __pyx_v_bytestring = __pyx_1;
+  __pyx_1 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":439 */
-      __pyx_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_random_sample); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; goto __pyx_L1;}
-      __pyx_1 = PyDict_New(); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; goto __pyx_L1;}
-      if (PyDict_SetItem(__pyx_1, __pyx_n_size, __pyx_v_args) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; goto __pyx_L1;}
-      __pyx_5 = PyEval_CallObjectWithKeywords(__pyx_2, __pyx_3, __pyx_1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(__pyx_1); __pyx_1 = 0;
-      __pyx_r = __pyx_5;
-      __pyx_5 = 0;
-      goto __pyx_L0;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":602 */
+  PyMem_Free(__pyx_v_bytes);
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_5);
-    __Pyx_AddTraceback("mtrand.RandomState.rand");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_XDECREF(__pyx_v_args);
-    Py_DECREF(__pyx_v_self);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":603 */
+  Py_INCREF(__pyx_v_bytestring);
+  __pyx_r = __pyx_v_bytestring;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  __Pyx_AddTraceback("mtrand.RandomState.bytes");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_bytestring);
+  Py_DECREF(__pyx_v_self);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_n_subtract;
+
+static PyObject *__pyx_f_6mtrand_11RandomState_uniform(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_uniform[] = "Uniform distribution over [low, high).\n\n        uniform(low=0.0, high=1.0, size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_uniform(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_low = 0;
+  PyObject *__pyx_v_high = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_olow;
+  PyArrayObject *__pyx_v_ohigh;
+  PyArrayObject *__pyx_v_odiff;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  static char *__pyx_argnames[] = {"low","high","size",0};
+  __pyx_v_low = __pyx_k8;
+  __pyx_v_high = __pyx_k9;
+  __pyx_v_size = __pyx_k10;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|OOO", __pyx_argnames, &__pyx_v_low, &__pyx_v_high, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_low);
+  Py_INCREF(__pyx_v_high);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_olow = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_ohigh = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_odiff = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":613 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_low,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 613; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_olow));
+  __pyx_v_olow = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":614 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_high,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 614; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_ohigh));
+  __pyx_v_ohigh = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":615 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_subtract); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_ohigh));
+  PyTuple_SET_ITEM(__pyx_1, 0, ((PyObject *)__pyx_v_ohigh));
+  Py_INCREF(((PyObject *)__pyx_v_olow));
+  PyTuple_SET_ITEM(__pyx_1, 1, ((PyObject *)__pyx_v_olow));
+  __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_3)));
+  Py_DECREF(((PyObject *)__pyx_v_odiff));
+  __pyx_v_odiff = ((PyArrayObject *)__pyx_3);
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":616 */
+  __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_uniform,__pyx_v_size,__pyx_v_olow,__pyx_v_odiff); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; goto __pyx_L1;}
+  __pyx_r = __pyx_2;
+  __pyx_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  __Pyx_AddTraceback("mtrand.RandomState.uniform");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_olow);
+  Py_DECREF(__pyx_v_ohigh);
+  Py_DECREF(__pyx_v_odiff);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_low);
+  Py_DECREF(__pyx_v_high);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_n_len;
+static PyObject *__pyx_n_size;
+
+
+static PyObject *__pyx_f_6mtrand_11RandomState_rand(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_rand[] = "Return an array of the given dimensions which is initialized to \n        random numbers from a uniform distribution in the range [0,1).\n\n        rand(d0, d1, ..., dn) -> random values\n\n        Note:  This is a convenience function. If you want an\n                    interface that takes a tuple as the first argument\n                    use numpy.random.random_sample(shape_tuple).\n        \n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_rand(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_args = 0;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  int __pyx_4;
+  PyObject *__pyx_5 = 0;
+  static char *__pyx_argnames[] = {0};
+  if (__Pyx_GetStarArgs(&__pyx_args, &__pyx_kwds, __pyx_argnames, 0, &__pyx_v_args, 0) < 0) return 0;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) {
     Py_XDECREF(__pyx_args);
     Py_XDECREF(__pyx_kwds);
-    return __pyx_r;
+    Py_XDECREF(__pyx_v_args);
+    return 0;
   }
+  Py_INCREF(__pyx_v_self);
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_randn(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_randn[] = "Returns zero-mean, unit-variance Gaussian random numbers in an \n        array of shape (d0, d1, ..., dn).\n\n        randn(d0, d1, ..., dn) -> random values\n\n        Note:  This is a convenience function. If you want an\n                    interface that takes a tuple as the first argument\n                    use numpy.random.standard_normal(shape_tuple).\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_randn(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_args = 0;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    int __pyx_4;
-    static char *__pyx_argnames[] = {0};
-    if (__Pyx_GetStarArgs(&__pyx_args, &__pyx_kwds, __pyx_argnames, 0, &__pyx_v_args, 0) < 0) return 0;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) {
-      Py_XDECREF(__pyx_args);
-      Py_XDECREF(__pyx_kwds);
-      Py_XDECREF(__pyx_v_args);
-      return 0;
-    }
-    Py_INCREF(__pyx_v_self);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":629 */
+  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_args);
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_args);
+  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; goto __pyx_L1;}
+  if (PyObject_Cmp(__pyx_3, __pyx_1, &__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; goto __pyx_L1;}
+  __pyx_4 = __pyx_4 == 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  if (__pyx_4) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":451 */
-    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; goto __pyx_L1;}
-    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_args);
-    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_args);
-    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":630 */
+    __pyx_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_random_sample); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 630; goto __pyx_L1;}
+    __pyx_3 = PyTuple_New(0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 630; goto __pyx_L1;}
+    __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 630; goto __pyx_L1;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; goto __pyx_L1;}
-    if (PyObject_Cmp(__pyx_3, __pyx_1, &__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; goto __pyx_L1;}
-    __pyx_4 = __pyx_4 == 0;
     Py_DECREF(__pyx_3); __pyx_3 = 0;
+    __pyx_r = __pyx_1;
+    __pyx_1 = 0;
+    goto __pyx_L0;
+    goto __pyx_L2;
+  }
+  /*else*/ {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":632 */
+    __pyx_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_random_sample); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; goto __pyx_L1;}
+    __pyx_3 = PyTuple_New(0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; goto __pyx_L1;}
+    __pyx_1 = PyDict_New(); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; goto __pyx_L1;}
+    if (PyDict_SetItem(__pyx_1, __pyx_n_size, __pyx_v_args) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; goto __pyx_L1;}
+    __pyx_5 = PyEval_CallObjectWithKeywords(__pyx_2, __pyx_3, __pyx_1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
     Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (__pyx_4) {
+    __pyx_r = __pyx_5;
+    __pyx_5 = 0;
+    goto __pyx_L0;
+  }
+  __pyx_L2:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":452 */
-      __pyx_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_standard_normal); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; goto __pyx_L1;}
-      __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __pyx_r = __pyx_1;
-      __pyx_1 = 0;
-      goto __pyx_L0;
-      goto __pyx_L2;
-    }
-    /*else*/ {
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_5);
+  __Pyx_AddTraceback("mtrand.RandomState.rand");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_XDECREF(__pyx_v_args);
+  Py_DECREF(__pyx_v_self);
+  Py_XDECREF(__pyx_args);
+  Py_XDECREF(__pyx_kwds);
+  return __pyx_r;
+}
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":454 */
-      __pyx_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_standard_normal); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_args);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_args);
-      __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __pyx_r = __pyx_1;
-      __pyx_1 = 0;
-      goto __pyx_L0;
-    }
-    __pyx_L2:;
-
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    __Pyx_AddTraceback("mtrand.RandomState.randn");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_XDECREF(__pyx_v_args);
-    Py_DECREF(__pyx_v_self);
+static PyObject *__pyx_f_6mtrand_11RandomState_randn(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_randn[] = "Returns zero-mean, unit-variance Gaussian random numbers in an \n        array of shape (d0, d1, ..., dn).\n\n        randn(d0, d1, ..., dn) -> random values\n\n        Note:  This is a convenience function. If you want an\n                    interface that takes a tuple as the first argument\n                    use numpy.random.standard_normal(shape_tuple).\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_randn(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_args = 0;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  int __pyx_4;
+  static char *__pyx_argnames[] = {0};
+  if (__Pyx_GetStarArgs(&__pyx_args, &__pyx_kwds, __pyx_argnames, 0, &__pyx_v_args, 0) < 0) return 0;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) {
     Py_XDECREF(__pyx_args);
     Py_XDECREF(__pyx_kwds);
-    return __pyx_r;
+    Py_XDECREF(__pyx_v_args);
+    return 0;
   }
+  Py_INCREF(__pyx_v_self);
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_random_integers(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_random_integers[] = "Return random integers x such that low <= x <= high.\n\n        random_integers(low, high=None, size=None) -> random values.\n\n        If high is None, then 1 <= x <= low.\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_random_integers(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_low = 0;
-    PyObject *__pyx_v_high = 0;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"low","high","size",0};
-    __pyx_v_high = __pyx_k11;
-    __pyx_v_size = __pyx_k12;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|OO", __pyx_argnames, &__pyx_v_low, &__pyx_v_high, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_low);
-    Py_INCREF(__pyx_v_high);
-    Py_INCREF(__pyx_v_size);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":644 */
+  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_args);
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_args);
+  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; goto __pyx_L1;}
+  if (PyObject_Cmp(__pyx_3, __pyx_1, &__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; goto __pyx_L1;}
+  __pyx_4 = __pyx_4 == 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  if (__pyx_4) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":463 */
-    __pyx_1 = __pyx_v_high == Py_None;
-    if (__pyx_1) {
-
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":464 */
-      Py_INCREF(__pyx_v_low);
-      Py_DECREF(__pyx_v_high);
-      __pyx_v_high = __pyx_v_low;
-
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":465 */
-      __pyx_2 = PyInt_FromLong(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; goto __pyx_L1;}
-      Py_DECREF(__pyx_v_low);
-      __pyx_v_low = __pyx_2;
-      __pyx_2 = 0;
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
-
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":466 */
-    __pyx_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_randint); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; goto __pyx_L1;}
-    __pyx_3 = PyInt_FromLong(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; goto __pyx_L1;}
-    __pyx_4 = PyNumber_Add(__pyx_v_high, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; goto __pyx_L1;}
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    __pyx_3 = PyTuple_New(3); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_low);
-    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_low);
-    PyTuple_SET_ITEM(__pyx_3, 1, __pyx_4);
-    Py_INCREF(__pyx_v_size);
-    PyTuple_SET_ITEM(__pyx_3, 2, __pyx_v_size);
-    __pyx_4 = 0;
-    __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; goto __pyx_L1;}
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":645 */
+    __pyx_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_standard_normal); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; goto __pyx_L1;}
+    __pyx_3 = PyTuple_New(0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; goto __pyx_L1;}
+    __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; goto __pyx_L1;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
     Py_DECREF(__pyx_3); __pyx_3 = 0;
-    __pyx_r = __pyx_4;
-    __pyx_4 = 0;
+    __pyx_r = __pyx_1;
+    __pyx_1 = 0;
     goto __pyx_L0;
-
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.random_integers");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_low);
-    Py_DECREF(__pyx_v_high);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    goto __pyx_L2;
   }
+  /*else*/ {
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_standard_normal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_standard_normal[] = "Standard Normal distribution (mean=0, stdev=1).\n\n        standard_normal(size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_standard_normal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    static char *__pyx_argnames[] = {"size",0};
-    __pyx_v_size = __pyx_k13;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
-
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":474 */
-    __pyx_1 = __pyx_f_6mtrand_cont0_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_gauss,__pyx_v_size); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; goto __pyx_L1;}
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":647 */
+    __pyx_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_standard_normal); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; goto __pyx_L1;}
+    __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; goto __pyx_L1;}
+    Py_INCREF(__pyx_v_args);
+    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_args);
+    __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
     __pyx_r = __pyx_1;
     __pyx_1 = 0;
     goto __pyx_L0;
+  }
+  __pyx_L2:;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    __Pyx_AddTraceback("mtrand.RandomState.standard_normal");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  __Pyx_AddTraceback("mtrand.RandomState.randn");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_XDECREF(__pyx_v_args);
+  Py_DECREF(__pyx_v_self);
+  Py_XDECREF(__pyx_args);
+  Py_XDECREF(__pyx_kwds);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_f_6mtrand_11RandomState_random_integers(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_random_integers[] = "Return random integers x such that low <= x <= high.\n\n        random_integers(low, high=None, size=None) -> random values.\n\n        If high is None, then 1 <= x <= low.\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_random_integers(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_low = 0;
+  PyObject *__pyx_v_high = 0;
+  PyObject *__pyx_v_size = 0;
+  PyObject *__pyx_r;
+  int __pyx_1;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  static char *__pyx_argnames[] = {"low","high","size",0};
+  __pyx_v_high = __pyx_k11;
+  __pyx_v_size = __pyx_k12;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|OO", __pyx_argnames, &__pyx_v_low, &__pyx_v_high, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_low);
+  Py_INCREF(__pyx_v_high);
+  Py_INCREF(__pyx_v_size);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":656 */
+  __pyx_1 = __pyx_v_high == Py_None;
+  if (__pyx_1) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":657 */
+    Py_INCREF(__pyx_v_low);
+    Py_DECREF(__pyx_v_high);
+    __pyx_v_high = __pyx_v_low;
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":658 */
+    __pyx_2 = PyInt_FromLong(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 658; goto __pyx_L1;}
+    Py_DECREF(__pyx_v_low);
+    __pyx_v_low = __pyx_2;
+    __pyx_2 = 0;
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k66p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":659 */
+  __pyx_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_randint); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; goto __pyx_L1;}
+  __pyx_3 = PyInt_FromLong(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; goto __pyx_L1;}
+  __pyx_4 = PyNumber_Add(__pyx_v_high, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_3 = PyTuple_New(3); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_low);
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_low);
+  PyTuple_SET_ITEM(__pyx_3, 1, __pyx_4);
+  Py_INCREF(__pyx_v_size);
+  PyTuple_SET_ITEM(__pyx_3, 2, __pyx_v_size);
+  __pyx_4 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k66[]) = "scale <= 0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.random_integers");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_low);
+  Py_DECREF(__pyx_v_high);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_normal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_normal[] = "Normal distribution (mean=loc, stdev=scale).\n\n        normal(loc=0.0, scale=1.0, size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_normal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_loc;
-    double __pyx_v_scale;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"loc","scale","size",0};
-    __pyx_v_loc = __pyx_k14;
-    __pyx_v_scale = __pyx_k15;
-    __pyx_v_size = __pyx_k16;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|ddO", __pyx_argnames, &__pyx_v_loc, &__pyx_v_scale, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_f_6mtrand_11RandomState_standard_normal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_standard_normal[] = "Standard Normal distribution (mean=0, stdev=1).\n\n        standard_normal(size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_standard_normal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_size = 0;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  static char *__pyx_argnames[] = {"size",0};
+  __pyx_v_size = __pyx_k13;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_size);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":481 */
-    __pyx_1 = (__pyx_v_scale <= 0);
-    if (__pyx_1) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":667 */
+  __pyx_1 = __pyx_f_6mtrand_cont0_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_gauss,__pyx_v_size); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; goto __pyx_L1;}
+  __pyx_r = __pyx_1;
+  __pyx_1 = 0;
+  goto __pyx_L0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":482 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; goto __pyx_L1;}
-      Py_INCREF(__pyx_k66p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k66p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  __Pyx_AddTraceback("mtrand.RandomState.standard_normal");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":483 */
-    __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_normal,__pyx_v_size,__pyx_v_loc,__pyx_v_scale); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+static PyObject *__pyx_n_any;
+static PyObject *__pyx_n_less_equal;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.normal");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+static PyObject *__pyx_k72p;
+
+static char (__pyx_k72[]) = "scale <= 0";
+
+static PyObject *__pyx_f_6mtrand_11RandomState_normal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_normal[] = "Normal distribution (mean=loc, stdev=scale).\n\n        normal(loc=0.0, scale=1.0, size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_normal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_loc = 0;
+  PyObject *__pyx_v_scale = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oloc;
+  PyArrayObject *__pyx_v_oscale;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"loc","scale","size",0};
+  __pyx_v_loc = __pyx_k14;
+  __pyx_v_scale = __pyx_k15;
+  __pyx_v_size = __pyx_k16;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|OOO", __pyx_argnames, &__pyx_v_loc, &__pyx_v_scale, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_loc);
+  Py_INCREF(__pyx_v_scale);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oloc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_oscale = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":676 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_loc,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 676; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_oloc));
+  __pyx_v_oloc = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":677 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_scale,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 677; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_oscale));
+  __pyx_v_oscale = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":678 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":679 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; goto __pyx_L1;}
+    Py_INCREF(__pyx_k72p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k72p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k67p;
-  static PyObject *__pyx_k68p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":680 */
+  __pyx_4 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_normal,__pyx_v_size,__pyx_v_oloc,__pyx_v_oscale); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k67[]) = "a <= 0";
-  static char (__pyx_k68[]) = "b <= 0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.normal");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oloc);
+  Py_DECREF(__pyx_v_oscale);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_loc);
+  Py_DECREF(__pyx_v_scale);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_beta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_beta[] = "Beta distribution over [0, 1].\n\n        beta(a, b, size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_beta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_a;
-    double __pyx_v_b;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"a","b","size",0};
-    __pyx_v_size = __pyx_k17;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "dd|O", __pyx_argnames, &__pyx_v_a, &__pyx_v_b, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k73p;
+static PyObject *__pyx_k74p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":490 */
-    __pyx_1 = (__pyx_v_a <= 0);
-    if (__pyx_1) {
+static char (__pyx_k73[]) = "a <= 0";
+static char (__pyx_k74[]) = "b <= 0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":491 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; goto __pyx_L1;}
-      Py_INCREF(__pyx_k67p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k67p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_b <= 0);
-    if (__pyx_1) {
+static PyObject *__pyx_f_6mtrand_11RandomState_beta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_beta[] = "Beta distribution over [0, 1].\n\n        beta(a, b, size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_beta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_a = 0;
+  PyObject *__pyx_v_b = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oa;
+  PyArrayObject *__pyx_v_ob;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"a","b","size",0};
+  __pyx_v_size = __pyx_k17;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO|O", __pyx_argnames, &__pyx_v_a, &__pyx_v_b, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_a);
+  Py_INCREF(__pyx_v_b);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oa = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_ob = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":493 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; goto __pyx_L1;}
-      Py_INCREF(__pyx_k68p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k68p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":689 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_a,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_oa));
+  __pyx_v_oa = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":494 */
-    __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_beta,__pyx_v_size,__pyx_v_a,__pyx_v_b); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":690 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_b,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 690; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_ob));
+  __pyx_v_ob = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.beta");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":692 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 692; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 692; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 692; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 692; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 692; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 692; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oa));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_oa));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 692; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 692; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 692; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 692; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":693 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; goto __pyx_L1;}
+    Py_INCREF(__pyx_k73p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k73p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k69p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":694 */
+  __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_4, __pyx_n_any); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_4 = PyInt_FromLong(0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_ob));
+  PyTuple_SET_ITEM(__pyx_2, 0, ((PyObject *)__pyx_v_ob));
+  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_2); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_5) {
 
-  static char (__pyx_k69[]) = "scale <= 0";
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":695 */
+    __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; goto __pyx_L1;}
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; goto __pyx_L1;}
+    Py_INCREF(__pyx_k74p);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_k74p);
+    __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; goto __pyx_L1;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_exponential(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_exponential[] = "Exponential distribution.\n\n        exponential(scale=1.0, size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_exponential(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_scale;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"scale","size",0};
-    __pyx_v_scale = __pyx_k18;
-    __pyx_v_size = __pyx_k19;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|dO", __pyx_argnames, &__pyx_v_scale, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":696 */
+  __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_beta,__pyx_v_size,__pyx_v_oa,__pyx_v_ob); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; goto __pyx_L1;}
+  __pyx_r = __pyx_2;
+  __pyx_2 = 0;
+  goto __pyx_L0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":501 */
-    __pyx_1 = (__pyx_v_scale <= 0);
-    if (__pyx_1) {
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.beta");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oa);
+  Py_DECREF(__pyx_v_ob);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_a);
+  Py_DECREF(__pyx_v_b);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":502 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; goto __pyx_L1;}
-      Py_INCREF(__pyx_k69p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k69p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+static PyObject *__pyx_k75p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":503 */
-    __pyx_2 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_exponential,__pyx_v_size,__pyx_v_scale); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+static char (__pyx_k75[]) = "scale <= 0";
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.exponential");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
-  }
+static PyObject *__pyx_f_6mtrand_11RandomState_exponential(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_exponential[] = "Exponential distribution.\n\n        exponential(scale=1.0, size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_exponential(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_scale = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oscale;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"scale","size",0};
+  __pyx_v_scale = __pyx_k18;
+  __pyx_v_size = __pyx_k19;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|OO", __pyx_argnames, &__pyx_v_scale, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_scale);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oscale = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_standard_exponential(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_standard_exponential[] = "Standard exponential distribution (scale=1).\n\n        standard_exponential(size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_standard_exponential(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    static char *__pyx_argnames[] = {"size",0};
-    __pyx_v_size = __pyx_k20;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":704 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_scale,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_oscale));
+  __pyx_v_oscale = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":510 */
-    __pyx_1 = __pyx_f_6mtrand_cont0_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_standard_exponential,__pyx_v_size); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; goto __pyx_L1;}
-    __pyx_r = __pyx_1;
-    __pyx_1 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":705 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    __Pyx_AddTraceback("mtrand.RandomState.standard_exponential");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":706 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; goto __pyx_L1;}
+    Py_INCREF(__pyx_k75p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k75p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k70p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":707 */
+  __pyx_4 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_exponential,__pyx_v_size,__pyx_v_oscale); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k70[]) = "shape <= 0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.exponential");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oscale);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_scale);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_standard_gamma(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_standard_gamma[] = "Standard Gamma distribution.\n\n        standard_gamma(shape, size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_standard_gamma(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_shape;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"shape","size",0};
-    __pyx_v_size = __pyx_k21;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "d|O", __pyx_argnames, &__pyx_v_shape, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_f_6mtrand_11RandomState_standard_exponential(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_standard_exponential[] = "Standard exponential distribution (scale=1).\n\n        standard_exponential(size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_standard_exponential(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_size = 0;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  static char *__pyx_argnames[] = {"size",0};
+  __pyx_v_size = __pyx_k20;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_size);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":517 */
-    __pyx_1 = (__pyx_v_shape <= 0);
-    if (__pyx_1) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":714 */
+  __pyx_1 = __pyx_f_6mtrand_cont0_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_standard_exponential,__pyx_v_size); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; goto __pyx_L1;}
+  __pyx_r = __pyx_1;
+  __pyx_1 = 0;
+  goto __pyx_L0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":518 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; goto __pyx_L1;}
-      Py_INCREF(__pyx_k70p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k70p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  __Pyx_AddTraceback("mtrand.RandomState.standard_exponential");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":519 */
-    __pyx_2 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_standard_gamma,__pyx_v_size,__pyx_v_shape); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+static PyObject *__pyx_k76p;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.standard_gamma");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+static char (__pyx_k76[]) = "shape <= 0";
+
+static PyObject *__pyx_f_6mtrand_11RandomState_standard_gamma(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_standard_gamma[] = "Standard Gamma distribution.\n\n        standard_gamma(shape, size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_standard_gamma(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_shape = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oshape;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"shape","size",0};
+  __pyx_v_size = __pyx_k21;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|O", __pyx_argnames, &__pyx_v_shape, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_shape);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oshape = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":722 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_shape,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_oshape));
+  __pyx_v_oshape = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":723 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 723; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 723; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 723; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 723; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 723; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 723; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oshape));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_oshape));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 723; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 723; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 723; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 723; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":724 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; goto __pyx_L1;}
+    Py_INCREF(__pyx_k76p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k76p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k71p;
-  static PyObject *__pyx_k72p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":725 */
+  __pyx_4 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_standard_gamma,__pyx_v_size,__pyx_v_oshape); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k71[]) = "shape <= 0";
-  static char (__pyx_k72[]) = "scale <= 0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.standard_gamma");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oshape);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_shape);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_gamma(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_gamma[] = "Gamma distribution.\n\n        gamma(shape, scale=1.0, size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_gamma(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_shape;
-    double __pyx_v_scale;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"shape","scale","size",0};
-    __pyx_v_scale = __pyx_k22;
-    __pyx_v_size = __pyx_k23;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "d|dO", __pyx_argnames, &__pyx_v_shape, &__pyx_v_scale, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k77p;
+static PyObject *__pyx_k78p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":526 */
-    __pyx_1 = (__pyx_v_shape <= 0);
-    if (__pyx_1) {
+static char (__pyx_k77[]) = "shape <= 0";
+static char (__pyx_k78[]) = "scale <= 0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":527 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; goto __pyx_L1;}
-      Py_INCREF(__pyx_k71p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k71p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_scale <= 0);
-    if (__pyx_1) {
+static PyObject *__pyx_f_6mtrand_11RandomState_gamma(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_gamma[] = "Gamma distribution.\n\n        gamma(shape, scale=1.0, size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_gamma(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_shape = 0;
+  PyObject *__pyx_v_scale = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oshape;
+  PyArrayObject *__pyx_v_oscale;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"shape","scale","size",0};
+  __pyx_v_scale = __pyx_k22;
+  __pyx_v_size = __pyx_k23;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|OO", __pyx_argnames, &__pyx_v_shape, &__pyx_v_scale, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_shape);
+  Py_INCREF(__pyx_v_scale);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oshape = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_oscale = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":529 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; goto __pyx_L1;}
-      Py_INCREF(__pyx_k72p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k72p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":734 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_shape,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_oshape));
+  __pyx_v_oshape = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":530 */
-    __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_gamma,__pyx_v_size,__pyx_v_shape,__pyx_v_scale); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":735 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_scale,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_oscale));
+  __pyx_v_oscale = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.gamma");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":736 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oshape));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_oshape));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":737 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; goto __pyx_L1;}
+    Py_INCREF(__pyx_k77p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k77p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k73p;
-  static PyObject *__pyx_k74p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":738 */
+  __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_4, __pyx_n_any); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_4 = PyFloat_FromDouble(0.0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_2, 0, ((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_2); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_5) {
 
-  static char (__pyx_k73[]) = "dfnum <= 0";
-  static char (__pyx_k74[]) = "dfden <= 0";
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":739 */
+    __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; goto __pyx_L1;}
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; goto __pyx_L1;}
+    Py_INCREF(__pyx_k78p);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_k78p);
+    __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; goto __pyx_L1;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_f[] = "F distribution.\n\n        f(dfnum, dfden, size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_dfnum;
-    double __pyx_v_dfden;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"dfnum","dfden","size",0};
-    __pyx_v_size = __pyx_k24;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "dd|O", __pyx_argnames, &__pyx_v_dfnum, &__pyx_v_dfden, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":740 */
+  __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_gamma,__pyx_v_size,__pyx_v_oshape,__pyx_v_oscale); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 740; goto __pyx_L1;}
+  __pyx_r = __pyx_2;
+  __pyx_2 = 0;
+  goto __pyx_L0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":537 */
-    __pyx_1 = (__pyx_v_dfnum <= 0);
-    if (__pyx_1) {
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.gamma");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oshape);
+  Py_DECREF(__pyx_v_oscale);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_shape);
+  Py_DECREF(__pyx_v_scale);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":538 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; goto __pyx_L1;}
-      Py_INCREF(__pyx_k73p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k73p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_dfden <= 0);
-    if (__pyx_1) {
+static PyObject *__pyx_k79p;
+static PyObject *__pyx_k80p;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":540 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; goto __pyx_L1;}
-      Py_INCREF(__pyx_k74p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k74p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+static char (__pyx_k79[]) = "dfnum <= 0";
+static char (__pyx_k80[]) = "dfden <= 0";
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":541 */
-    __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_f,__pyx_v_size,__pyx_v_dfnum,__pyx_v_dfden); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+static PyObject *__pyx_f_6mtrand_11RandomState_f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_f[] = "F distribution.\n\n        f(dfnum, dfden, size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_dfnum = 0;
+  PyObject *__pyx_v_dfden = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_odfnum;
+  PyArrayObject *__pyx_v_odfden;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"dfnum","dfden","size",0};
+  __pyx_v_size = __pyx_k24;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO|O", __pyx_argnames, &__pyx_v_dfnum, &__pyx_v_dfden, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_dfnum);
+  Py_INCREF(__pyx_v_dfden);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_odfnum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_odfden = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.f");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":749 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_dfnum,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_odfnum));
+  __pyx_v_odfnum = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":750 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_dfden,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_odfden));
+  __pyx_v_odfden = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":751 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_odfnum));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_odfnum));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":752 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; goto __pyx_L1;}
+    Py_INCREF(__pyx_k79p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k79p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k75p;
-  static PyObject *__pyx_k76p;
-  static PyObject *__pyx_k77p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":753 */
+  __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_4, __pyx_n_any); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_4 = PyFloat_FromDouble(0.0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_odfden));
+  PyTuple_SET_ITEM(__pyx_2, 0, ((PyObject *)__pyx_v_odfden));
+  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_2); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_5) {
 
-  static char (__pyx_k75[]) = "dfnum <= 1";
-  static char (__pyx_k76[]) = "dfden <= 0";
-  static char (__pyx_k77[]) = "nonc < 0";
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":754 */
+    __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 754; goto __pyx_L1;}
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 754; goto __pyx_L1;}
+    Py_INCREF(__pyx_k80p);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_k80p);
+    __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 754; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 754; goto __pyx_L1;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_noncentral_f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_noncentral_f[] = "Noncentral F distribution.\n\n        noncentral_f(dfnum, dfden, nonc, size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_noncentral_f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_dfnum;
-    double __pyx_v_dfden;
-    double __pyx_v_nonc;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"dfnum","dfden","nonc","size",0};
-    __pyx_v_size = __pyx_k25;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "ddd|O", __pyx_argnames, &__pyx_v_dfnum, &__pyx_v_dfden, &__pyx_v_nonc, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":755 */
+  __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_f,__pyx_v_size,__pyx_v_odfnum,__pyx_v_odfden); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 755; goto __pyx_L1;}
+  __pyx_r = __pyx_2;
+  __pyx_2 = 0;
+  goto __pyx_L0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":548 */
-    __pyx_1 = (__pyx_v_dfnum <= 1);
-    if (__pyx_1) {
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.f");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_odfnum);
+  Py_DECREF(__pyx_v_odfden);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_dfnum);
+  Py_DECREF(__pyx_v_dfden);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":549 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; goto __pyx_L1;}
-      Py_INCREF(__pyx_k75p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k75p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_dfden <= 0);
-    if (__pyx_1) {
+static PyObject *__pyx_n_less;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":551 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; goto __pyx_L1;}
-      Py_INCREF(__pyx_k76p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k76p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_nonc < 0);
-    if (__pyx_1) {
+static PyObject *__pyx_k81p;
+static PyObject *__pyx_k82p;
+static PyObject *__pyx_k83p;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":553 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; goto __pyx_L1;}
-      Py_INCREF(__pyx_k77p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k77p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+static char (__pyx_k81[]) = "dfnum <= 1";
+static char (__pyx_k82[]) = "dfden <= 0";
+static char (__pyx_k83[]) = "nonc < 0";
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":554 */
-    __pyx_2 = __pyx_f_6mtrand_cont3_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_noncentral_f,__pyx_v_size,__pyx_v_dfnum,__pyx_v_dfden,__pyx_v_nonc); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+static PyObject *__pyx_f_6mtrand_11RandomState_noncentral_f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_noncentral_f[] = "Noncentral F distribution.\n\n        noncentral_f(dfnum, dfden, nonc, size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_noncentral_f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_dfnum = 0;
+  PyObject *__pyx_v_dfden = 0;
+  PyObject *__pyx_v_nonc = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_odfnum;
+  PyArrayObject *__pyx_v_odfden;
+  PyArrayObject *__pyx_v_ononc;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"dfnum","dfden","nonc","size",0};
+  __pyx_v_size = __pyx_k25;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OOO|O", __pyx_argnames, &__pyx_v_dfnum, &__pyx_v_dfden, &__pyx_v_nonc, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_dfnum);
+  Py_INCREF(__pyx_v_dfden);
+  Py_INCREF(__pyx_v_nonc);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_odfnum = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_odfden = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_ononc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.noncentral_f");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
-  }
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":765 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_dfnum,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_odfnum));
+  __pyx_v_odfnum = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-  static PyObject *__pyx_k78p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":766 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_dfden,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 766; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_odfden));
+  __pyx_v_odfden = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-  static char (__pyx_k78[]) = "df <= 0";
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":767 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_nonc,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 767; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_ononc));
+  __pyx_v_ononc = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_chisquare(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_chisquare[] = "Chi^2 distribution.\n\n        chisquare(df, size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_chisquare(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_df;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"df","size",0};
-    __pyx_v_size = __pyx_k26;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "d|O", __pyx_argnames, &__pyx_v_df, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":769 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(1.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_odfnum));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_odfnum));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":562 */
-    __pyx_1 = (__pyx_v_df <= 0);
-    if (__pyx_1) {
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":770 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; goto __pyx_L1;}
+    Py_INCREF(__pyx_k81p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k81p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; goto __pyx_L1;}
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":563 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; goto __pyx_L1;}
-      Py_INCREF(__pyx_k78p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k78p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":771 */
+  __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_4, __pyx_n_any); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_4 = PyFloat_FromDouble(0.0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_odfden));
+  PyTuple_SET_ITEM(__pyx_2, 0, ((PyObject *)__pyx_v_odfden));
+  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_2); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_5) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":564 */
-    __pyx_2 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_chisquare,__pyx_v_size,__pyx_v_df); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":772 */
+    __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 772; goto __pyx_L1;}
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 772; goto __pyx_L1;}
+    Py_INCREF(__pyx_k82p);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_k82p);
+    __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 772; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 772; goto __pyx_L1;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.chisquare");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":773 */
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; goto __pyx_L1;}
+  __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_any); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_2 = PyFloat_FromDouble(0.0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; goto __pyx_L1;}
+  __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_ononc));
+  PyTuple_SET_ITEM(__pyx_1, 0, ((PyObject *)__pyx_v_ononc));
+  PyTuple_SET_ITEM(__pyx_1, 1, __pyx_2);
+  __pyx_2 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
+  __pyx_2 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_4, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_1); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":774 */
+    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 774; goto __pyx_L1;}
+    __pyx_4 = PyTuple_New(1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 774; goto __pyx_L1;}
+    Py_INCREF(__pyx_k83p);
+    PyTuple_SET_ITEM(__pyx_4, 0, __pyx_k83p);
+    __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_4); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 774; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 774; goto __pyx_L1;}
+    goto __pyx_L4;
   }
+  __pyx_L4:;
 
-  static PyObject *__pyx_k79p;
-  static PyObject *__pyx_k80p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":775 */
+  __pyx_1 = __pyx_f_6mtrand_cont3_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_noncentral_f,__pyx_v_size,__pyx_v_odfnum,__pyx_v_odfden,__pyx_v_ononc); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; goto __pyx_L1;}
+  __pyx_r = __pyx_1;
+  __pyx_1 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k79[]) = "df <= 1";
-  static char (__pyx_k80[]) = "nonc < 0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.noncentral_f");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_odfnum);
+  Py_DECREF(__pyx_v_odfden);
+  Py_DECREF(__pyx_v_ononc);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_dfnum);
+  Py_DECREF(__pyx_v_dfden);
+  Py_DECREF(__pyx_v_nonc);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_noncentral_chisquare(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_noncentral_chisquare[] = "Noncentral Chi^2 distribution.\n\n        noncentral_chisquare(df, nonc, size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_noncentral_chisquare(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_df;
-    double __pyx_v_nonc;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"df","nonc","size",0};
-    __pyx_v_size = __pyx_k27;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "dd|O", __pyx_argnames, &__pyx_v_df, &__pyx_v_nonc, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k84p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":571 */
-    __pyx_1 = (__pyx_v_df <= 1);
-    if (__pyx_1) {
+static char (__pyx_k84[]) = "df <= 0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":572 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; goto __pyx_L1;}
-      Py_INCREF(__pyx_k79p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k79p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_nonc < 0);
-    if (__pyx_1) {
+static PyObject *__pyx_f_6mtrand_11RandomState_chisquare(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_chisquare[] = "Chi^2 distribution.\n\n        chisquare(df, size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_chisquare(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_df = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_odf;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"df","size",0};
+  __pyx_v_size = __pyx_k26;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|O", __pyx_argnames, &__pyx_v_df, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_df);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_odf = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":574 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; goto __pyx_L1;}
-      Py_INCREF(__pyx_k80p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k80p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":784 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_df,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_odf));
+  __pyx_v_odf = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":575 */
-    __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_noncentral_chisquare,__pyx_v_size,__pyx_v_df,__pyx_v_nonc); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":785 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_odf));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_odf));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.noncentral_chisquare");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":786 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; goto __pyx_L1;}
+    Py_INCREF(__pyx_k84p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k84p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_standard_cauchy(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_standard_cauchy[] = "Standard Cauchy with mode=0.\n\n        standard_cauchy(size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_standard_cauchy(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    static char *__pyx_argnames[] = {"size",0};
-    __pyx_v_size = __pyx_k28;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":787 */
+  __pyx_4 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_chisquare,__pyx_v_size,__pyx_v_odf); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 787; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":583 */
-    __pyx_1 = __pyx_f_6mtrand_cont0_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_standard_cauchy,__pyx_v_size); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; goto __pyx_L1;}
-    __pyx_r = __pyx_1;
-    __pyx_1 = 0;
-    goto __pyx_L0;
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.chisquare");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_odf);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_df);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    __Pyx_AddTraceback("mtrand.RandomState.standard_cauchy");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
-  }
+static PyObject *__pyx_k85p;
+static PyObject *__pyx_k86p;
 
-  static PyObject *__pyx_k81p;
+static char (__pyx_k85[]) = "df <= 1";
+static char (__pyx_k86[]) = "nonc < 0";
 
-  static char (__pyx_k81[]) = "df <= 0";
+static PyObject *__pyx_f_6mtrand_11RandomState_noncentral_chisquare(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_noncentral_chisquare[] = "Noncentral Chi^2 distribution.\n\n        noncentral_chisquare(df, nonc, size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_noncentral_chisquare(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_df = 0;
+  PyObject *__pyx_v_nonc = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_odf;
+  PyArrayObject *__pyx_v_ononc;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"df","nonc","size",0};
+  __pyx_v_size = __pyx_k27;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO|O", __pyx_argnames, &__pyx_v_df, &__pyx_v_nonc, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_df);
+  Py_INCREF(__pyx_v_nonc);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_odf = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_ononc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_standard_t(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_standard_t[] = "Standard Student\'s t distribution with df degrees of freedom.\n\n        standard_t(df, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_standard_t(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_df;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"df","size",0};
-    __pyx_v_size = __pyx_k29;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "d|O", __pyx_argnames, &__pyx_v_df, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":796 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_df,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_odf));
+  __pyx_v_odf = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":590 */
-    __pyx_1 = (__pyx_v_df <= 0);
-    if (__pyx_1) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":797 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_nonc,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 797; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_ononc));
+  __pyx_v_ononc = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":591 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; goto __pyx_L1;}
-      Py_INCREF(__pyx_k81p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k81p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":798 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_odf));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_odf));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":592 */
-    __pyx_2 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_standard_t,__pyx_v_size,__pyx_v_df); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":799 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 799; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 799; goto __pyx_L1;}
+    Py_INCREF(__pyx_k85p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k85p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 799; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 799; goto __pyx_L1;}
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.standard_t");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":800 */
+  __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_4, __pyx_n_any); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_4 = PyFloat_FromDouble(0.0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_ononc));
+  PyTuple_SET_ITEM(__pyx_2, 0, ((PyObject *)__pyx_v_ononc));
+  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_2); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":801 */
+    __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; goto __pyx_L1;}
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; goto __pyx_L1;}
+    Py_INCREF(__pyx_k86p);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_k86p);
+    __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; goto __pyx_L1;}
+    goto __pyx_L3;
   }
+  __pyx_L3:;
 
-  static PyObject *__pyx_k82p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":802 */
+  __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_noncentral_chisquare,__pyx_v_size,__pyx_v_odf,__pyx_v_ononc); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; goto __pyx_L1;}
+  __pyx_r = __pyx_2;
+  __pyx_2 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k82[]) = "kappa < 0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.noncentral_chisquare");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_odf);
+  Py_DECREF(__pyx_v_ononc);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_df);
+  Py_DECREF(__pyx_v_nonc);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_vonmises(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_vonmises[] = "von Mises circular distribution with mode mu and dispersion parameter\n        kappa on [-pi, pi].\n\n        vonmises(mu, kappa, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_vonmises(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_mu;
-    double __pyx_v_kappa;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"mu","kappa","size",0};
-    __pyx_v_size = __pyx_k30;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "dd|O", __pyx_argnames, &__pyx_v_mu, &__pyx_v_kappa, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_f_6mtrand_11RandomState_standard_cauchy(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_standard_cauchy[] = "Standard Cauchy with mode=0.\n\n        standard_cauchy(size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_standard_cauchy(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_size = 0;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  static char *__pyx_argnames[] = {"size",0};
+  __pyx_v_size = __pyx_k28;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_size);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":600 */
-    __pyx_1 = (__pyx_v_kappa < 0);
-    if (__pyx_1) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":810 */
+  __pyx_1 = __pyx_f_6mtrand_cont0_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_standard_cauchy,__pyx_v_size); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; goto __pyx_L1;}
+  __pyx_r = __pyx_1;
+  __pyx_1 = 0;
+  goto __pyx_L0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":601 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; goto __pyx_L1;}
-      Py_INCREF(__pyx_k82p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k82p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  __Pyx_AddTraceback("mtrand.RandomState.standard_cauchy");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":602 */
-    __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_vonmises,__pyx_v_size,__pyx_v_mu,__pyx_v_kappa); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 602; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+static PyObject *__pyx_k87p;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.vonmises");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+static char (__pyx_k87[]) = "df <= 0";
+
+static PyObject *__pyx_f_6mtrand_11RandomState_standard_t(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_standard_t[] = "Standard Student\'s t distribution with df degrees of freedom.\n\n        standard_t(df, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_standard_t(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_df = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_odf;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"df","size",0};
+  __pyx_v_size = __pyx_k29;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|O", __pyx_argnames, &__pyx_v_df, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_df);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_odf = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":818 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_df,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_odf));
+  __pyx_v_odf = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":819 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_odf));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_odf));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":820 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; goto __pyx_L1;}
+    Py_INCREF(__pyx_k87p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k87p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k83p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":821 */
+  __pyx_4 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_standard_t,__pyx_v_size,__pyx_v_odf); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k83[]) = "a <= 0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.standard_t");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_odf);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_df);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_pareto(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_pareto[] = "Pareto distribution.\n\n        pareto(a, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_pareto(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_a;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"a","size",0};
-    __pyx_v_size = __pyx_k31;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "d|O", __pyx_argnames, &__pyx_v_a, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k88p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":609 */
-    __pyx_1 = (__pyx_v_a <= 0);
-    if (__pyx_1) {
+static char (__pyx_k88[]) = "kappa < 0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":610 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 610; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 610; goto __pyx_L1;}
-      Py_INCREF(__pyx_k83p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k83p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 610; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 610; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+static PyObject *__pyx_f_6mtrand_11RandomState_vonmises(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_vonmises[] = "von Mises circular distribution with mode mu and dispersion parameter\n        kappa on [-pi, pi].\n\n        vonmises(mu, kappa, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_vonmises(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_mu = 0;
+  PyObject *__pyx_v_kappa = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_omu;
+  PyArrayObject *__pyx_v_okappa;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"mu","kappa","size",0};
+  __pyx_v_size = __pyx_k30;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO|O", __pyx_argnames, &__pyx_v_mu, &__pyx_v_kappa, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_mu);
+  Py_INCREF(__pyx_v_kappa);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_omu = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_okappa = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":611 */
-    __pyx_2 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_pareto,__pyx_v_size,__pyx_v_a); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 611; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":831 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_mu,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_omu));
+  __pyx_v_omu = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.pareto");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":832 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_kappa,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_okappa));
+  __pyx_v_okappa = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":833 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_okappa));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_okappa));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":834 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; goto __pyx_L1;}
+    Py_INCREF(__pyx_k88p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k88p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k84p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":835 */
+  __pyx_4 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_vonmises,__pyx_v_size,__pyx_v_omu,__pyx_v_okappa); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k84[]) = "a <= 0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.vonmises");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_omu);
+  Py_DECREF(__pyx_v_okappa);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_mu);
+  Py_DECREF(__pyx_v_kappa);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_weibull(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_weibull[] = "Weibull distribution.\n\n        weibull(a, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_weibull(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_a;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"a","size",0};
-    __pyx_v_size = __pyx_k32;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "d|O", __pyx_argnames, &__pyx_v_a, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k89p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":618 */
-    __pyx_1 = (__pyx_v_a <= 0);
-    if (__pyx_1) {
+static char (__pyx_k89[]) = "a <= 0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":619 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 619; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 619; goto __pyx_L1;}
-      Py_INCREF(__pyx_k84p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k84p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 619; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 619; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+static PyObject *__pyx_f_6mtrand_11RandomState_pareto(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_pareto[] = "Pareto distribution.\n\n        pareto(a, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_pareto(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_a = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oa;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"a","size",0};
+  __pyx_v_size = __pyx_k31;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|O", __pyx_argnames, &__pyx_v_a, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_a);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oa = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":620 */
-    __pyx_2 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_weibull,__pyx_v_size,__pyx_v_a); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":843 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_a,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_oa));
+  __pyx_v_oa = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.weibull");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":844 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oa));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_oa));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":845 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; goto __pyx_L1;}
+    Py_INCREF(__pyx_k89p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k89p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k85p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":846 */
+  __pyx_4 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_pareto,__pyx_v_size,__pyx_v_oa); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k85[]) = "a <= 0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.pareto");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oa);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_a);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_power(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_power[] = "Power distribution.\n\n        power(a, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_power(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_a;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"a","size",0};
-    __pyx_v_size = __pyx_k33;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "d|O", __pyx_argnames, &__pyx_v_a, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k90p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":627 */
-    __pyx_1 = (__pyx_v_a <= 0);
-    if (__pyx_1) {
+static char (__pyx_k90[]) = "a <= 0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":628 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 628; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 628; goto __pyx_L1;}
-      Py_INCREF(__pyx_k85p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k85p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 628; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 628; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+static PyObject *__pyx_f_6mtrand_11RandomState_weibull(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_weibull[] = "Weibull distribution.\n\n        weibull(a, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_weibull(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  double __pyx_v_a;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oa;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"a","size",0};
+  __pyx_v_size = __pyx_k32;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "d|O", __pyx_argnames, &__pyx_v_a, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oa = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":629 */
-    __pyx_2 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_power,__pyx_v_size,__pyx_v_a); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":854 */
+  __pyx_1 = PyFloat_FromDouble(__pyx_v_a); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 854; goto __pyx_L1;}
+  __pyx_2 = PyArray_FROM_OTF(__pyx_1,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 854; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
+  Py_DECREF(((PyObject *)__pyx_v_oa));
+  __pyx_v_oa = ((PyArrayObject *)__pyx_2);
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.power");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":855 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oa));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_oa));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":856 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 856; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 856; goto __pyx_L1;}
+    Py_INCREF(__pyx_k90p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k90p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 856; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 856; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k86p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":857 */
+  __pyx_4 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_weibull,__pyx_v_size,__pyx_v_oa); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k86[]) = "scale <= 0.0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.weibull");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oa);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_laplace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_laplace[] = "Laplace distribution.\n        \n        laplace(loc=0.0, scale=1.0, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_laplace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_loc;
-    double __pyx_v_scale;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"loc","scale","size",0};
-    __pyx_v_loc = __pyx_k34;
-    __pyx_v_scale = __pyx_k35;
-    __pyx_v_size = __pyx_k36;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|ddO", __pyx_argnames, &__pyx_v_loc, &__pyx_v_scale, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k91p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":636 */
-    __pyx_1 = (__pyx_v_scale <= 0.0);
-    if (__pyx_1) {
+static char (__pyx_k91[]) = "a <= 0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":637 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; goto __pyx_L1;}
-      Py_INCREF(__pyx_k86p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k86p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+static PyObject *__pyx_f_6mtrand_11RandomState_power(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_power[] = "Power distribution.\n\n        power(a, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_power(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  double __pyx_v_a;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oa;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"a","size",0};
+  __pyx_v_size = __pyx_k33;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "d|O", __pyx_argnames, &__pyx_v_a, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oa = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":638 */
-    __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_laplace,__pyx_v_size,__pyx_v_loc,__pyx_v_scale); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":865 */
+  __pyx_1 = PyFloat_FromDouble(__pyx_v_a); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; goto __pyx_L1;}
+  __pyx_2 = PyArray_FROM_OTF(__pyx_1,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
+  Py_DECREF(((PyObject *)__pyx_v_oa));
+  __pyx_v_oa = ((PyArrayObject *)__pyx_2);
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.laplace");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":866 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oa));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_oa));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":867 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; goto __pyx_L1;}
+    Py_INCREF(__pyx_k91p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k91p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k87p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":868 */
+  __pyx_4 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_power,__pyx_v_size,__pyx_v_oa); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k87[]) = "scale <= 0.0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.power");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oa);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_gumbel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_gumbel[] = "Gumbel distribution.\n        \n        gumbel(loc=0.0, scale=1.0, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_gumbel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_loc;
-    double __pyx_v_scale;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"loc","scale","size",0};
-    __pyx_v_loc = __pyx_k37;
-    __pyx_v_scale = __pyx_k38;
-    __pyx_v_size = __pyx_k39;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|ddO", __pyx_argnames, &__pyx_v_loc, &__pyx_v_scale, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k92p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":645 */
-    __pyx_1 = (__pyx_v_scale <= 0.0);
-    if (__pyx_1) {
+static char (__pyx_k92[]) = "scale <= 0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":646 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 646; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 646; goto __pyx_L1;}
-      Py_INCREF(__pyx_k87p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k87p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 646; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 646; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+static PyObject *__pyx_f_6mtrand_11RandomState_laplace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_laplace[] = "Laplace distribution.\n        \n        laplace(loc=0.0, scale=1.0, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_laplace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_loc = 0;
+  PyObject *__pyx_v_scale = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oloc;
+  PyArrayObject *__pyx_v_oscale;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"loc","scale","size",0};
+  __pyx_v_loc = __pyx_k34;
+  __pyx_v_scale = __pyx_k35;
+  __pyx_v_size = __pyx_k36;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|OOO", __pyx_argnames, &__pyx_v_loc, &__pyx_v_scale, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_loc);
+  Py_INCREF(__pyx_v_scale);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oloc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_oscale = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":647 */
-    __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_gumbel,__pyx_v_size,__pyx_v_loc,__pyx_v_scale); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":877 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_loc,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; goto __pyx_L1;}
+  if (!__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mtrand_ndarray)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; goto __pyx_L1;}
+  Py_DECREF(((PyObject *)__pyx_v_oloc));
+  __pyx_v_oloc = ((PyArrayObject *)__pyx_1);
+  __pyx_1 = 0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.gumbel");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":878 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_scale,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; goto __pyx_L1;}
+  if (!__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mtrand_ndarray)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; goto __pyx_L1;}
+  Py_DECREF(((PyObject *)__pyx_v_oscale));
+  __pyx_v_oscale = ((PyArrayObject *)__pyx_1);
+  __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":879 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":880 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; goto __pyx_L1;}
+    Py_INCREF(__pyx_k92p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k92p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k88p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":881 */
+  __pyx_4 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_laplace,__pyx_v_size,__pyx_v_oloc,__pyx_v_oscale); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 881; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k88[]) = "scale <= 0.0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.laplace");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oloc);
+  Py_DECREF(__pyx_v_oscale);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_loc);
+  Py_DECREF(__pyx_v_scale);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_logistic(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_logistic[] = "Logistic distribution.\n        \n        logistic(loc=0.0, scale=1.0, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_logistic(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_loc;
-    double __pyx_v_scale;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"loc","scale","size",0};
-    __pyx_v_loc = __pyx_k40;
-    __pyx_v_scale = __pyx_k41;
-    __pyx_v_size = __pyx_k42;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|ddO", __pyx_argnames, &__pyx_v_loc, &__pyx_v_scale, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k93p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":654 */
-    __pyx_1 = (__pyx_v_scale <= 0.0);
-    if (__pyx_1) {
+static char (__pyx_k93[]) = "scale <= 0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":655 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 655; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 655; goto __pyx_L1;}
-      Py_INCREF(__pyx_k88p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k88p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 655; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 655; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+static PyObject *__pyx_f_6mtrand_11RandomState_gumbel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_gumbel[] = "Gumbel distribution.\n        \n        gumbel(loc=0.0, scale=1.0, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_gumbel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_loc = 0;
+  PyObject *__pyx_v_scale = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oloc;
+  PyArrayObject *__pyx_v_oscale;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"loc","scale","size",0};
+  __pyx_v_loc = __pyx_k37;
+  __pyx_v_scale = __pyx_k38;
+  __pyx_v_size = __pyx_k39;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|OOO", __pyx_argnames, &__pyx_v_loc, &__pyx_v_scale, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_loc);
+  Py_INCREF(__pyx_v_scale);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oloc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_oscale = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":656 */
-    __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_logistic,__pyx_v_size,__pyx_v_loc,__pyx_v_scale); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 656; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":890 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_loc,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; goto __pyx_L1;}
+  if (!__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mtrand_ndarray)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; goto __pyx_L1;}
+  Py_DECREF(((PyObject *)__pyx_v_oloc));
+  __pyx_v_oloc = ((PyArrayObject *)__pyx_1);
+  __pyx_1 = 0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.logistic");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":891 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_scale,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; goto __pyx_L1;}
+  if (!__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mtrand_ndarray)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; goto __pyx_L1;}
+  Py_DECREF(((PyObject *)__pyx_v_oscale));
+  __pyx_v_oscale = ((PyArrayObject *)__pyx_1);
+  __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":892 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":893 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; goto __pyx_L1;}
+    Py_INCREF(__pyx_k93p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k93p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k89p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":894 */
+  __pyx_4 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_gumbel,__pyx_v_size,__pyx_v_oloc,__pyx_v_oscale); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k89[]) = "sigma <= 0.0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.gumbel");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oloc);
+  Py_DECREF(__pyx_v_oscale);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_loc);
+  Py_DECREF(__pyx_v_scale);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_lognormal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_lognormal[] = "Log-normal distribution.\n        \n        Note that the mean parameter is not the mean of this distribution, but \n        the underlying normal distribution.\n        \n            lognormal(mean, sigma) <=> exp(normal(mean, sigma))\n        \n        lognormal(mean=0.0, sigma=1.0, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_lognormal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_mean;
-    double __pyx_v_sigma;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"mean","sigma","size",0};
-    __pyx_v_mean = __pyx_k43;
-    __pyx_v_sigma = __pyx_k44;
-    __pyx_v_size = __pyx_k45;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|ddO", __pyx_argnames, &__pyx_v_mean, &__pyx_v_sigma, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k94p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":668 */
-    __pyx_1 = (__pyx_v_sigma <= 0.0);
-    if (__pyx_1) {
+static char (__pyx_k94[]) = "scale <= 0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":669 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; goto __pyx_L1;}
-      Py_INCREF(__pyx_k89p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k89p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+static PyObject *__pyx_f_6mtrand_11RandomState_logistic(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_logistic[] = "Logistic distribution.\n        \n        logistic(loc=0.0, scale=1.0, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_logistic(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_loc = 0;
+  PyObject *__pyx_v_scale = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oloc;
+  PyArrayObject *__pyx_v_oscale;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"loc","scale","size",0};
+  __pyx_v_loc = __pyx_k40;
+  __pyx_v_scale = __pyx_k41;
+  __pyx_v_size = __pyx_k42;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|OOO", __pyx_argnames, &__pyx_v_loc, &__pyx_v_scale, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_loc);
+  Py_INCREF(__pyx_v_scale);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oloc = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_oscale = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":670 */
-    __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_lognormal,__pyx_v_size,__pyx_v_mean,__pyx_v_sigma); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":903 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_loc,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; goto __pyx_L1;}
+  if (!__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mtrand_ndarray)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; goto __pyx_L1;}
+  Py_DECREF(((PyObject *)__pyx_v_oloc));
+  __pyx_v_oloc = ((PyArrayObject *)__pyx_1);
+  __pyx_1 = 0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.lognormal");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":904 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_scale,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; goto __pyx_L1;}
+  if (!__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mtrand_ndarray)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; goto __pyx_L1;}
+  Py_DECREF(((PyObject *)__pyx_v_oscale));
+  __pyx_v_oscale = ((PyArrayObject *)__pyx_1);
+  __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":905 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":906 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; goto __pyx_L1;}
+    Py_INCREF(__pyx_k94p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k94p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k90p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":907 */
+  __pyx_4 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_logistic,__pyx_v_size,__pyx_v_oloc,__pyx_v_oscale); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k90[]) = "scale <= 0.0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.logistic");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oloc);
+  Py_DECREF(__pyx_v_oscale);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_loc);
+  Py_DECREF(__pyx_v_scale);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_rayleigh(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_rayleigh[] = "Rayleigh distribution.\n        \n        rayleigh(scale=1.0, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_rayleigh(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_scale;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"scale","size",0};
-    __pyx_v_scale = __pyx_k46;
-    __pyx_v_size = __pyx_k47;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|dO", __pyx_argnames, &__pyx_v_scale, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k95p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":677 */
-    __pyx_1 = (__pyx_v_scale <= 0.0);
-    if (__pyx_1) {
+static char (__pyx_k95[]) = "sigma <= 0.0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":678 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
-      Py_INCREF(__pyx_k90p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k90p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+static PyObject *__pyx_f_6mtrand_11RandomState_lognormal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_lognormal[] = "Log-normal distribution.\n        \n        Note that the mean parameter is not the mean of this distribution, but \n        the underlying normal distribution.\n        \n            lognormal(mean, sigma) <=> exp(normal(mean, sigma))\n        \n        lognormal(mean=0.0, sigma=1.0, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_lognormal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_mean = 0;
+  PyObject *__pyx_v_sigma = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_omean;
+  PyArrayObject *__pyx_v_osigma;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"mean","sigma","size",0};
+  __pyx_v_mean = __pyx_k43;
+  __pyx_v_sigma = __pyx_k44;
+  __pyx_v_size = __pyx_k45;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|OOO", __pyx_argnames, &__pyx_v_mean, &__pyx_v_sigma, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_mean);
+  Py_INCREF(__pyx_v_sigma);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_omean = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_osigma = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":679 */
-    __pyx_2 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_rayleigh,__pyx_v_size,__pyx_v_scale); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":921 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_mean,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; goto __pyx_L1;}
+  if (!__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mtrand_ndarray)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; goto __pyx_L1;}
+  Py_DECREF(((PyObject *)__pyx_v_omean));
+  __pyx_v_omean = ((PyArrayObject *)__pyx_1);
+  __pyx_1 = 0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.rayleigh");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":922 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_sigma,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; goto __pyx_L1;}
+  if (!__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mtrand_ndarray)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; goto __pyx_L1;}
+  Py_DECREF(((PyObject *)__pyx_v_osigma));
+  __pyx_v_osigma = ((PyArrayObject *)__pyx_1);
+  __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":923 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_osigma));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_osigma));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":924 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; goto __pyx_L1;}
+    Py_INCREF(__pyx_k95p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k95p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k91p;
-  static PyObject *__pyx_k92p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":925 */
+  if (!__Pyx_TypeTest(__pyx_v_mean, __pyx_ptype_6mtrand_ndarray)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; goto __pyx_L1;}
+  if (!__Pyx_TypeTest(__pyx_v_sigma, __pyx_ptype_6mtrand_ndarray)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; goto __pyx_L1;}
+  __pyx_4 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_lognormal,__pyx_v_size,((PyArrayObject *)__pyx_v_mean),((PyArrayObject *)__pyx_v_sigma)); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k91[]) = "mean <= 0.0";
-  static char (__pyx_k92[]) = "scale <= 0.0";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.lognormal");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_omean);
+  Py_DECREF(__pyx_v_osigma);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_mean);
+  Py_DECREF(__pyx_v_sigma);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_wald(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_wald[] = "Wald (inverse Gaussian) distribution.\n        \n        wald(mean, scale, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_wald(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_mean;
-    double __pyx_v_scale;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"mean","scale","size",0};
-    __pyx_v_size = __pyx_k48;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "dd|O", __pyx_argnames, &__pyx_v_mean, &__pyx_v_scale, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k96p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":686 */
-    __pyx_1 = (__pyx_v_mean <= 0.0);
-    if (__pyx_1) {
+static char (__pyx_k96[]) = "scale <= 0.0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":687 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 687; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 687; goto __pyx_L1;}
-      Py_INCREF(__pyx_k91p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k91p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 687; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 687; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_scale <= 0.0);
-    if (__pyx_1) {
+static PyObject *__pyx_f_6mtrand_11RandomState_rayleigh(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_rayleigh[] = "Rayleigh distribution.\n        \n        rayleigh(scale=1.0, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_rayleigh(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_scale = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oscale;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"scale","size",0};
+  __pyx_v_scale = __pyx_k46;
+  __pyx_v_size = __pyx_k47;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|OO", __pyx_argnames, &__pyx_v_scale, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_scale);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oscale = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":689 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; goto __pyx_L1;}
-      Py_INCREF(__pyx_k92p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k92p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":933 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_scale,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_oscale));
+  __pyx_v_oscale = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":690 */
-    __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_wald,__pyx_v_size,__pyx_v_mean,__pyx_v_scale); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 690; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":934 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.wald");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":935 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; goto __pyx_L1;}
+    Py_INCREF(__pyx_k96p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k96p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k93p;
-  static PyObject *__pyx_k94p;
-  static PyObject *__pyx_k95p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":936 */
+  __pyx_4 = __pyx_f_6mtrand_cont1_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_rayleigh,__pyx_v_size,__pyx_v_oscale); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k93[]) = "left > mode";
-  static char (__pyx_k94[]) = "mode > right";
-  static char (__pyx_k95[]) = "left == right";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.rayleigh");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oscale);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_scale);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_triangular(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_triangular[] = "Triangular distribution starting at left, peaking at mode, and \n        ending at right (left <= mode <= right).\n        \n        triangular(left, mode, right, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_triangular(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_left;
-    double __pyx_v_mode;
-    double __pyx_v_right;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"left","mode","right","size",0};
-    __pyx_v_size = __pyx_k49;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "ddd|O", __pyx_argnames, &__pyx_v_left, &__pyx_v_mode, &__pyx_v_right, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k97p;
+static PyObject *__pyx_k98p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":698 */
-    __pyx_1 = (__pyx_v_left > __pyx_v_mode);
-    if (__pyx_1) {
+static char (__pyx_k97[]) = "mean <= 0.0";
+static char (__pyx_k98[]) = "scale <= 0.0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":699 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; goto __pyx_L1;}
-      Py_INCREF(__pyx_k93p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k93p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_mode > __pyx_v_right);
-    if (__pyx_1) {
+static PyObject *__pyx_f_6mtrand_11RandomState_wald(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_wald[] = "Wald (inverse Gaussian) distribution.\n        \n        wald(mean, scale, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_wald(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_mean = 0;
+  PyObject *__pyx_v_scale = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_omean;
+  PyArrayObject *__pyx_v_oscale;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"mean","scale","size",0};
+  __pyx_v_size = __pyx_k48;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO|O", __pyx_argnames, &__pyx_v_mean, &__pyx_v_scale, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_mean);
+  Py_INCREF(__pyx_v_scale);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_omean = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_oscale = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":701 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; goto __pyx_L1;}
-      Py_INCREF(__pyx_k94p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k94p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_left == __pyx_v_right);
-    if (__pyx_1) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":945 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_mean,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; goto __pyx_L1;}
+  if (!__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mtrand_ndarray)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; goto __pyx_L1;}
+  Py_DECREF(((PyObject *)__pyx_v_omean));
+  __pyx_v_omean = ((PyArrayObject *)__pyx_1);
+  __pyx_1 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":703 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; goto __pyx_L1;}
-      Py_INCREF(__pyx_k95p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k95p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":946 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_scale,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; goto __pyx_L1;}
+  if (!__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mtrand_ndarray)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; goto __pyx_L1;}
+  Py_DECREF(((PyObject *)__pyx_v_oscale));
+  __pyx_v_oscale = ((PyArrayObject *)__pyx_1);
+  __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":704 */
-    __pyx_2 = __pyx_f_6mtrand_cont3_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_triangular,__pyx_v_size,__pyx_v_left,__pyx_v_mode,__pyx_v_right); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":947 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_omean));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_omean));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.triangular");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":948 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; goto __pyx_L1;}
+    Py_INCREF(__pyx_k97p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k97p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_4, __pyx_n_any); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_4 = PyFloat_FromDouble(0.0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_2, 0, ((PyObject *)__pyx_v_oscale));
+  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_2); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_5) {
 
-  static PyObject *__pyx_k96p;
-  static PyObject *__pyx_k97p;
-  static PyObject *__pyx_k98p;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":950 */
+    __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; goto __pyx_L1;}
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; goto __pyx_L1;}
+    Py_INCREF(__pyx_k98p);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_k98p);
+    __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; goto __pyx_L1;}
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
 
-  static char (__pyx_k96[]) = "n <= 0";
-  static char (__pyx_k97[]) = "p < 0";
-  static char (__pyx_k98[]) = "p > 1";
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":951 */
+  __pyx_2 = __pyx_f_6mtrand_cont2_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_wald,__pyx_v_size,__pyx_v_omean,__pyx_v_oscale); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; goto __pyx_L1;}
+  __pyx_r = __pyx_2;
+  __pyx_2 = 0;
+  goto __pyx_L0;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_binomial(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_binomial[] = "Binomial distribution of n trials and p probability of success.\n\n        binomial(n, p, size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_binomial(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    long __pyx_v_n;
-    double __pyx_v_p;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"n","p","size",0};
-    __pyx_v_size = __pyx_k50;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "ld|O", __pyx_argnames, &__pyx_v_n, &__pyx_v_p, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.wald");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_omean);
+  Py_DECREF(__pyx_v_oscale);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_mean);
+  Py_DECREF(__pyx_v_scale);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":713 */
-    __pyx_1 = (__pyx_v_n <= 0);
-    if (__pyx_1) {
+static PyObject *__pyx_n_greater;
+static PyObject *__pyx_n_equal;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":714 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; goto __pyx_L1;}
-      Py_INCREF(__pyx_k96p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k96p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_p < 0);
-    if (__pyx_1) {
+static PyObject *__pyx_k99p;
+static PyObject *__pyx_k100p;
+static PyObject *__pyx_k101p;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":716 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; goto __pyx_L1;}
-      Py_INCREF(__pyx_k97p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k97p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_p > 1);
-    if (__pyx_1) {
+static char (__pyx_k99[]) = "left > mode";
+static char (__pyx_k100[]) = "mode > right";
+static char (__pyx_k101[]) = "left == right";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":718 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 718; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 718; goto __pyx_L1;}
-      Py_INCREF(__pyx_k98p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k98p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 718; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 718; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+static PyObject *__pyx_f_6mtrand_11RandomState_triangular(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_triangular[] = "Triangular distribution starting at left, peaking at mode, and \n        ending at right (left <= mode <= right).\n        \n        triangular(left, mode, right, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_triangular(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_left = 0;
+  PyObject *__pyx_v_mode = 0;
+  PyObject *__pyx_v_right = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oleft;
+  PyArrayObject *__pyx_v_omode;
+  PyArrayObject *__pyx_v_oright;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"left","mode","right","size",0};
+  __pyx_v_size = __pyx_k49;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OOO|O", __pyx_argnames, &__pyx_v_left, &__pyx_v_mode, &__pyx_v_right, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_left);
+  Py_INCREF(__pyx_v_mode);
+  Py_INCREF(__pyx_v_right);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oleft = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_omode = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_oright = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":719 */
-    __pyx_2 = __pyx_f_6mtrand_discnp_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_binomial,__pyx_v_size,__pyx_v_n,__pyx_v_p); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":962 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_left,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_oleft));
+  __pyx_v_oleft = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.binomial");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
-  }
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":963 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_mode,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_omode));
+  __pyx_v_omode = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-  static PyObject *__pyx_k99p;
-  static PyObject *__pyx_k100p;
-  static PyObject *__pyx_k101p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":964 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_right,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_oright));
+  __pyx_v_oright = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-  static char (__pyx_k99[]) = "n <= 0";
-  static char (__pyx_k100[]) = "p < 0";
-  static char (__pyx_k101[]) = "p > 1";
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":966 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_greater); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oleft));
+  PyTuple_SET_ITEM(__pyx_1, 0, ((PyObject *)__pyx_v_oleft));
+  Py_INCREF(((PyObject *)__pyx_v_omode));
+  PyTuple_SET_ITEM(__pyx_1, 1, ((PyObject *)__pyx_v_omode));
+  __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_1); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  if (__pyx_5) {
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_negative_binomial(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_negative_binomial[] = "Negative Binomial distribution.\n\n        negative_binomial(n, p, size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_negative_binomial(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    long __pyx_v_n;
-    double __pyx_v_p;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"n","p","size",0};
-    __pyx_v_size = __pyx_k51;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "ld|O", __pyx_argnames, &__pyx_v_n, &__pyx_v_p, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":967 */
+    __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; goto __pyx_L1;}
+    Py_INCREF(__pyx_k99p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k99p);
+    __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; goto __pyx_L1;}
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":726 */
-    __pyx_1 = (__pyx_v_n <= 0);
-    if (__pyx_1) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":968 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; goto __pyx_L1;}
+  __pyx_4 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_greater); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_omode));
+  PyTuple_SET_ITEM(__pyx_1, 0, ((PyObject *)__pyx_v_omode));
+  Py_INCREF(((PyObject *)__pyx_v_oright));
+  PyTuple_SET_ITEM(__pyx_1, 1, ((PyObject *)__pyx_v_oright));
+  __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
+  __pyx_2 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_4, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_1); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  if (__pyx_5) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":727 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; goto __pyx_L1;}
-      Py_INCREF(__pyx_k99p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k99p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_p < 0);
-    if (__pyx_1) {
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":969 */
+    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; goto __pyx_L1;}
+    __pyx_4 = PyTuple_New(1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; goto __pyx_L1;}
+    Py_INCREF(__pyx_k100p);
+    PyTuple_SET_ITEM(__pyx_4, 0, __pyx_k100p);
+    __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_4); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; goto __pyx_L1;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":729 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; goto __pyx_L1;}
-      Py_INCREF(__pyx_k100p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k100p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_p > 1);
-    if (__pyx_1) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":970 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_4, __pyx_n_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oleft));
+  PyTuple_SET_ITEM(__pyx_1, 0, ((PyObject *)__pyx_v_oleft));
+  Py_INCREF(((PyObject *)__pyx_v_oright));
+  PyTuple_SET_ITEM(__pyx_1, 1, ((PyObject *)__pyx_v_oright));
+  __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_1); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  if (__pyx_5) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":731 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 731; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 731; goto __pyx_L1;}
-      Py_INCREF(__pyx_k101p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k101p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 731; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 731; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":971 */
+    __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; goto __pyx_L1;}
+    Py_INCREF(__pyx_k101p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k101p);
+    __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; goto __pyx_L1;}
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":732 */
-    __pyx_2 = __pyx_f_6mtrand_discnp_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_negative_binomial,__pyx_v_size,__pyx_v_n,__pyx_v_p); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":972 */
+  __pyx_1 = __pyx_f_6mtrand_cont3_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_triangular,__pyx_v_size,__pyx_v_oleft,__pyx_v_omode,__pyx_v_oright); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; goto __pyx_L1;}
+  __pyx_r = __pyx_1;
+  __pyx_1 = 0;
+  goto __pyx_L0;
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.negative_binomial");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
-  }
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.triangular");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oleft);
+  Py_DECREF(__pyx_v_omode);
+  Py_DECREF(__pyx_v_oright);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_left);
+  Py_DECREF(__pyx_v_mode);
+  Py_DECREF(__pyx_v_right);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_k102p;
+static PyObject *__pyx_k102p;
+static PyObject *__pyx_k103p;
+static PyObject *__pyx_k104p;
 
-  static char (__pyx_k102[]) = "lam <= 0";
+static char (__pyx_k102[]) = "n <= 0";
+static char (__pyx_k103[]) = "p < 0";
+static char (__pyx_k104[]) = "p > 1";
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_poisson(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_poisson[] = "Poisson distribution.\n\n        poisson(lam=1.0, size=None) -> random values\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_poisson(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_lam;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"lam","size",0};
-    __pyx_v_lam = __pyx_k52;
-    __pyx_v_size = __pyx_k53;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|dO", __pyx_argnames, &__pyx_v_lam, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_f_6mtrand_11RandomState_binomial(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_binomial[] = "Binomial distribution of n trials and p probability of success.\n\n        binomial(n, p, size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_binomial(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_n = 0;
+  PyObject *__pyx_v_p = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_on;
+  PyArrayObject *__pyx_v_op;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"n","p","size",0};
+  __pyx_v_size = __pyx_k50;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO|O", __pyx_argnames, &__pyx_v_n, &__pyx_v_p, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_n);
+  Py_INCREF(__pyx_v_p);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_on = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_op = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":740 */
-    __pyx_1 = (__pyx_v_lam <= 0);
-    if (__pyx_1) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":983 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_n,NPY_LONG,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_on));
+  __pyx_v_on = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":741 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 741; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 741; goto __pyx_L1;}
-      Py_INCREF(__pyx_k102p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k102p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 741; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 741; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":984 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_p,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_op));
+  __pyx_v_op = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":742 */
-    __pyx_2 = __pyx_f_6mtrand_discd_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_poisson,__pyx_v_size,__pyx_v_lam); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 742; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":985 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_n);
+  PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_n);
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.poisson");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":986 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; goto __pyx_L1;}
+    Py_INCREF(__pyx_k102p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k102p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k103p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":987 */
+  __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_4, __pyx_n_any); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_less); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_4 = PyInt_FromLong(0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_p);
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_p);
+  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_2); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_5) {
 
-  static char (__pyx_k103[]) = "a <= 1.0";
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":988 */
+    __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; goto __pyx_L1;}
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; goto __pyx_L1;}
+    Py_INCREF(__pyx_k103p);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_k103p);
+    __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; goto __pyx_L1;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_zipf(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_zipf[] = "Zipf distribution.\n        \n        zipf(a, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_zipf(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_a;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"a","size",0};
-    __pyx_v_size = __pyx_k54;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "d|O", __pyx_argnames, &__pyx_v_a, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":989 */
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; goto __pyx_L1;}
+  __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_any); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_greater); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_2 = PyInt_FromLong(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; goto __pyx_L1;}
+  __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_p);
+  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_p);
+  PyTuple_SET_ITEM(__pyx_1, 1, __pyx_2);
+  __pyx_2 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
+  __pyx_2 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_4, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_1); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  if (__pyx_5) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":749 */
-    __pyx_1 = (__pyx_v_a <= 1.0);
-    if (__pyx_1) {
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":990 */
+    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; goto __pyx_L1;}
+    __pyx_4 = PyTuple_New(1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; goto __pyx_L1;}
+    Py_INCREF(__pyx_k104p);
+    PyTuple_SET_ITEM(__pyx_4, 0, __pyx_k104p);
+    __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_4); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; goto __pyx_L1;}
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":750 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; goto __pyx_L1;}
-      Py_INCREF(__pyx_k103p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k103p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":991 */
+  __pyx_1 = __pyx_f_6mtrand_discnp_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_binomial,__pyx_v_size,__pyx_v_on,__pyx_v_op); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; goto __pyx_L1;}
+  __pyx_r = __pyx_1;
+  __pyx_1 = 0;
+  goto __pyx_L0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":751 */
-    __pyx_2 = __pyx_f_6mtrand_discd_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_zipf,__pyx_v_size,__pyx_v_a); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.binomial");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_on);
+  Py_DECREF(__pyx_v_op);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_n);
+  Py_DECREF(__pyx_v_p);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.zipf");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
-  }
+static PyObject *__pyx_k105p;
+static PyObject *__pyx_k106p;
+static PyObject *__pyx_k107p;
 
-  static PyObject *__pyx_k104p;
-  static PyObject *__pyx_k105p;
+static char (__pyx_k105[]) = "n <= 0";
+static char (__pyx_k106[]) = "p < 0";
+static char (__pyx_k107[]) = "p > 1";
 
-  static char (__pyx_k104[]) = "p < 0.0";
-  static char (__pyx_k105[]) = "p > 1.0";
+static PyObject *__pyx_f_6mtrand_11RandomState_negative_binomial(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_negative_binomial[] = "Negative Binomial distribution.\n\n        negative_binomial(n, p, size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_negative_binomial(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_n = 0;
+  PyObject *__pyx_v_p = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_on;
+  PyArrayObject *__pyx_v_op;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"n","p","size",0};
+  __pyx_v_size = __pyx_k51;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO|O", __pyx_argnames, &__pyx_v_n, &__pyx_v_p, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_n);
+  Py_INCREF(__pyx_v_p);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_on = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_op = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_geometric(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_geometric[] = "Geometric distribution with p being the probability of \"success\" on\n        an individual trial.\n        \n        geometric(p, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_geometric(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_p;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"p","size",0};
-    __pyx_v_size = __pyx_k55;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "d|O", __pyx_argnames, &__pyx_v_p, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1000 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_n,NPY_LONG,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1000; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_on));
+  __pyx_v_on = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":759 */
-    __pyx_1 = (__pyx_v_p < 0.0);
-    if (__pyx_1) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1001 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_p,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1001; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_op));
+  __pyx_v_op = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":760 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 760; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 760; goto __pyx_L1;}
-      Py_INCREF(__pyx_k104p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k104p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 760; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 760; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_p > 1.0);
-    if (__pyx_1) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1002 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_n);
+  PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_n);
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":762 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 762; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 762; goto __pyx_L1;}
-      Py_INCREF(__pyx_k105p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k105p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 762; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 762; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1003 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; goto __pyx_L1;}
+    Py_INCREF(__pyx_k105p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k105p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; goto __pyx_L1;}
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":763 */
-    __pyx_2 = __pyx_f_6mtrand_discd_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_geometric,__pyx_v_size,__pyx_v_p); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1004 */
+  __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_4, __pyx_n_any); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_less); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_4 = PyInt_FromLong(0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_p);
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_p);
+  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_2); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_5) {
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.geometric");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1005 */
+    __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1005; goto __pyx_L1;}
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1005; goto __pyx_L1;}
+    Py_INCREF(__pyx_k106p);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_k106p);
+    __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1005; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1005; goto __pyx_L1;}
+    goto __pyx_L3;
   }
+  __pyx_L3:;
 
-  static PyObject *__pyx_k106p;
-  static PyObject *__pyx_k107p;
-  static PyObject *__pyx_k108p;
-  static PyObject *__pyx_k109p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1006 */
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; goto __pyx_L1;}
+  __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_any); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_greater); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_2 = PyInt_FromLong(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; goto __pyx_L1;}
+  __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_p);
+  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_p);
+  PyTuple_SET_ITEM(__pyx_1, 1, __pyx_2);
+  __pyx_2 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
+  __pyx_2 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_4, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_1); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  if (__pyx_5) {
 
-  static char (__pyx_k106[]) = "ngood < 1";
-  static char (__pyx_k107[]) = "nbad < 1";
-  static char (__pyx_k108[]) = "ngood + nbad < nsample";
-  static char (__pyx_k109[]) = "nsample < 1";
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1007 */
+    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1007; goto __pyx_L1;}
+    __pyx_4 = PyTuple_New(1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1007; goto __pyx_L1;}
+    Py_INCREF(__pyx_k107p);
+    PyTuple_SET_ITEM(__pyx_4, 0, __pyx_k107p);
+    __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_4); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1007; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1007; goto __pyx_L1;}
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_hypergeometric(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_hypergeometric[] = "Hypergeometric distribution.\n        \n        Consider an urn with ngood \"good\" balls and nbad \"bad\" balls. If one \n        were to draw nsample balls from the urn without replacement, then \n        the hypergeometric distribution describes the distribution of \"good\" \n        balls in the sample.\n        \n        hypergeometric(ngood, nbad, nsample, size=None)        \n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_hypergeometric(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    long __pyx_v_ngood;
-    long __pyx_v_nbad;
-    long __pyx_v_nsample;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"ngood","nbad","nsample","size",0};
-    __pyx_v_size = __pyx_k56;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "lll|O", __pyx_argnames, &__pyx_v_ngood, &__pyx_v_nbad, &__pyx_v_nsample, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1008 */
+  __pyx_1 = __pyx_f_6mtrand_discnp_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_negative_binomial,__pyx_v_size,__pyx_v_on,__pyx_v_op); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; goto __pyx_L1;}
+  __pyx_r = __pyx_1;
+  __pyx_1 = 0;
+  goto __pyx_L0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":775 */
-    __pyx_1 = (__pyx_v_ngood < 1);
-    if (__pyx_1) {
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.negative_binomial");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_on);
+  Py_DECREF(__pyx_v_op);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_n);
+  Py_DECREF(__pyx_v_p);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":776 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; goto __pyx_L1;}
-      Py_INCREF(__pyx_k106p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k106p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_nbad < 1);
-    if (__pyx_1) {
+static PyObject *__pyx_k108p;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":778 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; goto __pyx_L1;}
-      Py_INCREF(__pyx_k107p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k107p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = ((__pyx_v_ngood + __pyx_v_nbad) < __pyx_v_nsample);
-    if (__pyx_1) {
+static char (__pyx_k108[]) = "lam <= 0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":780 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 780; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 780; goto __pyx_L1;}
-      Py_INCREF(__pyx_k108p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k108p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 780; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 780; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_nsample < 1);
-    if (__pyx_1) {
+static PyObject *__pyx_f_6mtrand_11RandomState_poisson(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_poisson[] = "Poisson distribution.\n\n        poisson(lam=1.0, size=None) -> random values\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_poisson(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_lam = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_olam;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"lam","size",0};
+  __pyx_v_lam = __pyx_k52;
+  __pyx_v_size = __pyx_k53;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|OO", __pyx_argnames, &__pyx_v_lam, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_lam);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_olam = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":782 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; goto __pyx_L1;}
-      Py_INCREF(__pyx_k109p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k109p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1017 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_lam,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_olam));
+  __pyx_v_olam = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":783 */
-    __pyx_2 = __pyx_f_6mtrand_discnmN_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_hypergeometric,__pyx_v_size,__pyx_v_ngood,__pyx_v_nbad,__pyx_v_nsample); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1018 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_olam));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_olam));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.hypergeometric");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1019 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; goto __pyx_L1;}
+    Py_INCREF(__pyx_k108p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k108p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_k110p;
-  static PyObject *__pyx_k111p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1020 */
+  __pyx_4 = __pyx_f_6mtrand_discd_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_poisson,__pyx_v_size,__pyx_v_olam); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static char (__pyx_k110[]) = "p < 0";
-  static char (__pyx_k111[]) = "p > 1";
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.poisson");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_olam);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_lam);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_logseries(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_logseries[] = "Logarithmic series distribution.\n        \n        logseries(p, size=None)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_logseries(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    double __pyx_v_p;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_r;
-    int __pyx_1;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    PyObject *__pyx_4 = 0;
-    static char *__pyx_argnames[] = {"p","size",0};
-    __pyx_v_size = __pyx_k57;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "d|O", __pyx_argnames, &__pyx_v_p, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_size);
+static PyObject *__pyx_k109p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":791 */
-    __pyx_1 = (__pyx_v_p < 0);
-    if (__pyx_1) {
+static char (__pyx_k109[]) = "a <= 1.0";
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":792 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; goto __pyx_L1;}
-      Py_INCREF(__pyx_k110p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k110p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_1 = (__pyx_v_p > 1);
-    if (__pyx_1) {
+static PyObject *__pyx_f_6mtrand_11RandomState_zipf(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_zipf[] = "Zipf distribution.\n        \n        zipf(a, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_zipf(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_a = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_oa;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"a","size",0};
+  __pyx_v_size = __pyx_k54;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|O", __pyx_argnames, &__pyx_v_a, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_a);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_oa = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":794 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; goto __pyx_L1;}
-      Py_INCREF(__pyx_k111p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k111p);
-      __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_4, 0, 0);
-      Py_DECREF(__pyx_4); __pyx_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1028 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_a,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_oa));
+  __pyx_v_oa = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":795 */
-    __pyx_2 = __pyx_f_6mtrand_discd_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_logseries,__pyx_v_size,__pyx_v_p); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; goto __pyx_L1;}
-    __pyx_r = __pyx_2;
-    __pyx_2 = 0;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1029 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less_equal); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(1.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_oa));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_oa));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_4);
-    __Pyx_AddTraceback("mtrand.RandomState.logseries");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1030 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; goto __pyx_L1;}
+    Py_INCREF(__pyx_k109p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k109p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; goto __pyx_L1;}
+    goto __pyx_L2;
   }
+  __pyx_L2:;
 
-  static PyObject *__pyx_n_array;
-  static PyObject *__pyx_n_shape;
-  static PyObject *__pyx_n_isinstance;
-  static PyObject *__pyx_n_list;
-  static PyObject *__pyx_n_append;
-  static PyObject *__pyx_n_multiply;
-  static PyObject *__pyx_n_reduce;
-  static PyObject *__pyx_n_svd;
-  static PyObject *__pyx_n_dot;
-  static PyObject *__pyx_n_sqrt;
-  static PyObject *__pyx_n_add;
-  static PyObject *__pyx_n_tuple;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1031 */
+  __pyx_4 = __pyx_f_6mtrand_discd_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_zipf,__pyx_v_size,__pyx_v_oa); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-  static PyObject *__pyx_k112p;
-  static PyObject *__pyx_k113p;
-  static PyObject *__pyx_k114p;
-  static PyObject *__pyx_k115p;
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.zipf");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_oa);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_a);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-  static char (__pyx_k112[]) = "mean must be 1 dimensional";
-  static char (__pyx_k113[]) = "cov must be 2 dimensional and square";
-  static char (__pyx_k114[]) = "mean and cov must have same length";
-  static char (__pyx_k115[]) = "numpy.dual";
+static PyObject *__pyx_k110p;
+static PyObject *__pyx_k111p;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_multivariate_normal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_multivariate_normal[] = "Return an array containing multivariate normally distributed random numbers\n        with specified mean and covariance.\n\n        multivariate_normal(mean, cov) -> random values\n        multivariate_normal(mean, cov, [m, n, ...]) -> random values\n\n        mean must be a 1 dimensional array. cov must be a square two dimensional\n        array with the same number of rows and columns as mean has elements.\n\n        The first form returns a single 1-D array containing a multivariate\n        normal.\n\n        The second form returns an array of shape (m, n, ..., cov.shape[0]).\n        In this case, output[i,j,...,:] is a 1-D array containing a multivariate\n        normal.\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_multivariate_normal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_mean = 0;
-    PyObject *__pyx_v_cov = 0;
-    PyObject *__pyx_v_size = 0;
-    PyObject *__pyx_v_shape;
-    PyObject *__pyx_v_final_shape;
-    PyObject *__pyx_v_x;
-    PyObject *__pyx_v_svd;
-    PyObject *__pyx_v_u;
-    PyObject *__pyx_v_s;
-    PyObject *__pyx_v_v;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    int __pyx_4;
-    PyObject *__pyx_5 = 0;
-    static char *__pyx_argnames[] = {"mean","cov","size",0};
-    __pyx_v_size = __pyx_k58;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO|O", __pyx_argnames, &__pyx_v_mean, &__pyx_v_cov, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_mean);
-    Py_INCREF(__pyx_v_cov);
-    Py_INCREF(__pyx_v_size);
-    __pyx_v_shape = Py_None; Py_INCREF(__pyx_v_shape);
-    __pyx_v_final_shape = Py_None; Py_INCREF(__pyx_v_final_shape);
-    __pyx_v_x = Py_None; Py_INCREF(__pyx_v_x);
-    __pyx_v_svd = Py_None; Py_INCREF(__pyx_v_svd);
-    __pyx_v_u = Py_None; Py_INCREF(__pyx_v_u);
-    __pyx_v_s = Py_None; Py_INCREF(__pyx_v_s);
-    __pyx_v_v = Py_None; Py_INCREF(__pyx_v_v);
+static char (__pyx_k110[]) = "p < 0.0";
+static char (__pyx_k111[]) = "p > 1.0";
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":816 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_array); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; goto __pyx_L1;}
+static PyObject *__pyx_f_6mtrand_11RandomState_geometric(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_geometric[] = "Geometric distribution with p being the probability of \"success\" on\n        an individual trial.\n        \n        geometric(p, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_geometric(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_p = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_op;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"p","size",0};
+  __pyx_v_size = __pyx_k55;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|O", __pyx_argnames, &__pyx_v_p, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_p);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_op = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1040 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_p,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_op));
+  __pyx_v_op = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1041 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_op));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_op));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1042 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; goto __pyx_L1;}
+    Py_INCREF(__pyx_k110p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k110p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; goto __pyx_L1;}
     Py_DECREF(__pyx_1); __pyx_1 = 0;
-    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_mean);
-    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_mean);
-    __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; goto __pyx_L1;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    Py_DECREF(__pyx_v_mean);
-    __pyx_v_mean = __pyx_3;
-    __pyx_3 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; goto __pyx_L1;}
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":817 */
-    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; goto __pyx_L1;}
-    __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_array); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_cov);
-    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_cov);
-    __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; goto __pyx_L1;}
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1043 */
+  __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_4, __pyx_n_any); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_greater); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_4 = PyFloat_FromDouble(1.0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_op));
+  PyTuple_SET_ITEM(__pyx_2, 0, ((PyObject *)__pyx_v_op));
+  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_2); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1044 */
+    __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; goto __pyx_L1;}
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; goto __pyx_L1;}
+    Py_INCREF(__pyx_k111p);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_k111p);
+    __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
     Py_DECREF(__pyx_1); __pyx_1 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
     Py_DECREF(__pyx_3); __pyx_3 = 0;
-    Py_DECREF(__pyx_v_cov);
-    __pyx_v_cov = __pyx_2;
-    __pyx_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; goto __pyx_L1;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":818 */
-    __pyx_4 = __pyx_v_size == Py_None;
-    if (__pyx_4) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1045 */
+  __pyx_2 = __pyx_f_6mtrand_discd_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_geometric,__pyx_v_size,__pyx_v_op); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; goto __pyx_L1;}
+  __pyx_r = __pyx_2;
+  __pyx_2 = 0;
+  goto __pyx_L0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":819 */
-      __pyx_1 = PyList_New(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; goto __pyx_L1;}
-      Py_DECREF(__pyx_v_shape);
-      __pyx_v_shape = __pyx_1;
-      __pyx_1 = 0;
-      goto __pyx_L2;
-    }
-    /*else*/ {
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.geometric");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_op);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_p);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":821 */
-      Py_INCREF(__pyx_v_size);
-      Py_DECREF(__pyx_v_shape);
-      __pyx_v_shape = __pyx_v_size;
-    }
-    __pyx_L2:;
+static PyObject *__pyx_n_add;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":822 */
-    __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_v_mean, __pyx_n_shape); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; goto __pyx_L1;}
-    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; goto __pyx_L1;}
-    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_2);
-    __pyx_2 = 0;
-    __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; goto __pyx_L1;}
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
+static PyObject *__pyx_k112p;
+static PyObject *__pyx_k113p;
+static PyObject *__pyx_k114p;
+static PyObject *__pyx_k115p;
+
+static char (__pyx_k112[]) = "ngood < 1";
+static char (__pyx_k113[]) = "nbad < 1";
+static char (__pyx_k114[]) = "ngood + nbad < nsample";
+static char (__pyx_k115[]) = "nsample < 1";
+
+static PyObject *__pyx_f_6mtrand_11RandomState_hypergeometric(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_hypergeometric[] = "Hypergeometric distribution.\n        \n        Consider an urn with ngood \"good\" balls and nbad \"bad\" balls. If one \n        were to draw nsample balls from the urn without replacement, then \n        the hypergeometric distribution describes the distribution of \"good\" \n        balls in the sample.\n        \n        hypergeometric(ngood, nbad, nsample, size=None)        \n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_hypergeometric(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_ngood = 0;
+  PyObject *__pyx_v_nbad = 0;
+  PyObject *__pyx_v_nsample = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_ongood;
+  PyArrayObject *__pyx_v_onbad;
+  PyArrayObject *__pyx_v_onsample;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  PyObject *__pyx_6 = 0;
+  static char *__pyx_argnames[] = {"ngood","nbad","nsample","size",0};
+  __pyx_v_size = __pyx_k56;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OOO|O", __pyx_argnames, &__pyx_v_ngood, &__pyx_v_nbad, &__pyx_v_nsample, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_ngood);
+  Py_INCREF(__pyx_v_nbad);
+  Py_INCREF(__pyx_v_nsample);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_ongood = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_onbad = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_onsample = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1061 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_ngood,NPY_LONG,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1061; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_ongood));
+  __pyx_v_ongood = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1062 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_nbad,NPY_LONG,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1062; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_onbad));
+  __pyx_v_onbad = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1063 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_nsample,NPY_LONG,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_onsample));
+  __pyx_v_onsample = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1064 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyInt_FromLong(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_ongood));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_ongood));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1065 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1065; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1065; goto __pyx_L1;}
+    Py_INCREF(__pyx_k112p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k112p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1065; goto __pyx_L1;}
     Py_DECREF(__pyx_1); __pyx_1 = 0;
-    __pyx_3 = PyInt_FromLong(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; goto __pyx_L1;}
-    if (PyObject_Cmp(__pyx_2, __pyx_3, &__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; goto __pyx_L1;}
-    __pyx_4 = __pyx_4 != 0;
     Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
     Py_DECREF(__pyx_3); __pyx_3 = 0;
-    if (__pyx_4) {
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1065; goto __pyx_L1;}
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":823 */
-      __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; goto __pyx_L1;}
-      __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; goto __pyx_L1;}
-      Py_INCREF(__pyx_k112p);
-      PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k112p);
-      __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; goto __pyx_L1;}
-      Py_DECREF(__pyx_1); __pyx_1 = 0;
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __Pyx_Raise(__pyx_3, 0, 0);
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; goto __pyx_L1;}
-      goto __pyx_L3;
-    }
-    __pyx_L3:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1066 */
+  __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_4, __pyx_n_any); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_less); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_4 = PyInt_FromLong(1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_onbad));
+  PyTuple_SET_ITEM(__pyx_2, 0, ((PyObject *)__pyx_v_onbad));
+  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_2); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_5) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":824 */
-    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_v_cov, __pyx_n_shape); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; goto __pyx_L1;}
-    __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; goto __pyx_L1;}
-    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
-    __pyx_2 = 0;
-    __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; goto __pyx_L1;}
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1067 */
+    __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1067; goto __pyx_L1;}
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1067; goto __pyx_L1;}
+    Py_INCREF(__pyx_k113p);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_k113p);
+    __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1067; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
     Py_DECREF(__pyx_1); __pyx_1 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
     Py_DECREF(__pyx_3); __pyx_3 = 0;
-    __pyx_1 = PyInt_FromLong(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; goto __pyx_L1;}
-    if (PyObject_Cmp(__pyx_2, __pyx_1, &__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; goto __pyx_L1;}
-    __pyx_4 = __pyx_4 != 0;
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (!__pyx_4) {
-      __pyx_3 = PyObject_GetAttr(__pyx_v_cov, __pyx_n_shape); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; goto __pyx_L1;}
-      __pyx_2 = PyInt_FromLong(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; goto __pyx_L1;}
-      __pyx_1 = PyObject_GetItem(__pyx_3, __pyx_2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_3 = PyObject_GetAttr(__pyx_v_cov, __pyx_n_shape); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; goto __pyx_L1;}
-      __pyx_2 = PyInt_FromLong(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; goto __pyx_L1;}
-      __pyx_5 = PyObject_GetItem(__pyx_3, __pyx_2); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      if (PyObject_Cmp(__pyx_1, __pyx_5, &__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; goto __pyx_L1;}
-      __pyx_4 = __pyx_4 != 0;
-      Py_DECREF(__pyx_1); __pyx_1 = 0;
-      Py_DECREF(__pyx_5); __pyx_5 = 0;
-    }
-    if (__pyx_4) {
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1067; goto __pyx_L1;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":825 */
-      __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; goto __pyx_L1;}
-      __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; goto __pyx_L1;}
-      Py_INCREF(__pyx_k113p);
-      PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k113p);
-      __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __Pyx_Raise(__pyx_1, 0, 0);
-      Py_DECREF(__pyx_1); __pyx_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; goto __pyx_L1;}
-      goto __pyx_L4;
-    }
-    __pyx_L4:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1068 */
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; goto __pyx_L1;}
+  __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_n_any); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_add); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_ongood));
+  PyTuple_SET_ITEM(__pyx_2, 0, ((PyObject *)__pyx_v_ongood));
+  Py_INCREF(((PyObject *)__pyx_v_onbad));
+  PyTuple_SET_ITEM(__pyx_2, 1, ((PyObject *)__pyx_v_onbad));
+  __pyx_6 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_6);
+  Py_INCREF(((PyObject *)__pyx_v_onsample));
+  PyTuple_SET_ITEM(__pyx_1, 1, ((PyObject *)__pyx_v_onsample));
+  __pyx_6 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_6 = PyTuple_New(1); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_6, 0, __pyx_2);
+  __pyx_2 = 0;
+  __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_6); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  Py_DECREF(__pyx_6); __pyx_6 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_3); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  if (__pyx_5) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":826 */
-    __pyx_5 = PyObject_GetAttr(__pyx_v_mean, __pyx_n_shape); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; goto __pyx_L1;}
-    __pyx_3 = PyInt_FromLong(0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetItem(__pyx_5, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; goto __pyx_L1;}
-    Py_DECREF(__pyx_5); __pyx_5 = 0;
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    __pyx_1 = PyObject_GetAttr(__pyx_v_cov, __pyx_n_shape); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; goto __pyx_L1;}
-    __pyx_5 = PyInt_FromLong(0); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; goto __pyx_L1;}
-    __pyx_3 = PyObject_GetItem(__pyx_1, __pyx_5); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; goto __pyx_L1;}
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1069 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1069; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1069; goto __pyx_L1;}
+    Py_INCREF(__pyx_k114p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k114p);
+    __pyx_4 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1069; goto __pyx_L1;}
     Py_DECREF(__pyx_1); __pyx_1 = 0;
-    Py_DECREF(__pyx_5); __pyx_5 = 0;
-    if (PyObject_Cmp(__pyx_2, __pyx_3, &__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; goto __pyx_L1;}
-    __pyx_4 = __pyx_4 != 0;
     Py_DECREF(__pyx_2); __pyx_2 = 0;
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    if (__pyx_4) {
+    __Pyx_Raise(__pyx_4, 0, 0);
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1069; goto __pyx_L1;}
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":827 */
-      __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; goto __pyx_L1;}
-      __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; goto __pyx_L1;}
-      Py_INCREF(__pyx_k114p);
-      PyTuple_SET_ITEM(__pyx_5, 0, __pyx_k114p);
-      __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_5); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; goto __pyx_L1;}
-      Py_DECREF(__pyx_1); __pyx_1 = 0;
-      Py_DECREF(__pyx_5); __pyx_5 = 0;
-      __Pyx_Raise(__pyx_2, 0, 0);
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; goto __pyx_L1;}
-      goto __pyx_L5;
-    }
-    __pyx_L5:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1070 */
+  __pyx_6 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_6, __pyx_n_any); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; goto __pyx_L1;}
+  Py_DECREF(__pyx_6); __pyx_6 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_less); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_4 = PyInt_FromLong(1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; goto __pyx_L1;}
+  __pyx_6 = PyTuple_New(2); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_onsample));
+  PyTuple_SET_ITEM(__pyx_6, 0, ((PyObject *)__pyx_v_onsample));
+  PyTuple_SET_ITEM(__pyx_6, 1, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_6); __pyx_6 = 0;
+  __pyx_4 = PyTuple_New(1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_4, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_2); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_5) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":829 */
-    __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_isinstance); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; goto __pyx_L1;}
-    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; goto __pyx_L1;}
-    __pyx_5 = PyTuple_New(2); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_shape);
-    PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_shape);
-    PyTuple_SET_ITEM(__pyx_5, 1, __pyx_1);
-    __pyx_1 = 0;
-    __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_5); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; goto __pyx_L1;}
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1071 */
+    __pyx_6 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; goto __pyx_L1;}
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; goto __pyx_L1;}
+    Py_INCREF(__pyx_k115p);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_k115p);
+    __pyx_3 = PyObject_CallObject(__pyx_6, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; goto __pyx_L1;}
+    Py_DECREF(__pyx_6); __pyx_6 = 0;
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
     Py_DECREF(__pyx_3); __pyx_3 = 0;
-    Py_DECREF(__pyx_5); __pyx_5 = 0;
-    __pyx_4 = PyObject_IsTrue(__pyx_2); if (__pyx_4 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    if (__pyx_4) {
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; goto __pyx_L1;}
+    goto __pyx_L5;
+  }
+  __pyx_L5:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":830 */
-      __pyx_1 = PyList_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_shape);
-      PyList_SET_ITEM(__pyx_1, 0, __pyx_v_shape);
-      Py_DECREF(__pyx_v_shape);
-      __pyx_v_shape = __pyx_1;
-      __pyx_1 = 0;
-      goto __pyx_L6;
-    }
-    __pyx_L6:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1072 */
+  __pyx_4 = __pyx_f_6mtrand_discnmN_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_hypergeometric,__pyx_v_size,__pyx_v_ongood,__pyx_v_onbad,__pyx_v_onsample); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; goto __pyx_L1;}
+  __pyx_r = __pyx_4;
+  __pyx_4 = 0;
+  goto __pyx_L0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":831 */
-    __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_list); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; goto __pyx_L1;}
-    __pyx_5 = PySequence_GetSlice(__pyx_v_shape, 0, 0x7fffffff); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; goto __pyx_L1;}
-    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; goto __pyx_L1;}
-    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_5);
-    __pyx_5 = 0;
-    __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; goto __pyx_L1;}
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    Py_DECREF(__pyx_v_final_shape);
-    __pyx_v_final_shape = __pyx_1;
-    __pyx_1 = 0;
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  Py_XDECREF(__pyx_6);
+  __Pyx_AddTraceback("mtrand.RandomState.hypergeometric");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_ongood);
+  Py_DECREF(__pyx_v_onbad);
+  Py_DECREF(__pyx_v_onsample);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_ngood);
+  Py_DECREF(__pyx_v_nbad);
+  Py_DECREF(__pyx_v_nsample);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":832 */
-    __pyx_5 = PyObject_GetAttr(__pyx_v_final_shape, __pyx_n_append); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; goto __pyx_L1;}
-    __pyx_3 = PyObject_GetAttr(__pyx_v_mean, __pyx_n_shape); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; goto __pyx_L1;}
-    __pyx_2 = PyInt_FromLong(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; goto __pyx_L1;}
-    __pyx_1 = PyObject_GetItem(__pyx_3, __pyx_2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; goto __pyx_L1;}
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; goto __pyx_L1;}
-    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
-    __pyx_1 = 0;
-    __pyx_2 = PyObject_CallObject(__pyx_5, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; goto __pyx_L1;}
-    Py_DECREF(__pyx_5); __pyx_5 = 0;
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+static PyObject *__pyx_k116p;
+static PyObject *__pyx_k117p;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":836 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_standard_normal); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; goto __pyx_L1;}
-    __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; goto __pyx_L1;}
-    __pyx_3 = PyObject_GetAttr(__pyx_5, __pyx_n_multiply); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; goto __pyx_L1;}
-    Py_DECREF(__pyx_5); __pyx_5 = 0;
-    __pyx_2 = PyObject_GetAttr(__pyx_3, __pyx_n_reduce); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; goto __pyx_L1;}
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_final_shape);
-    PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_final_shape);
-    __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_5); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    Py_DECREF(__pyx_5); __pyx_5 = 0;
-    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; goto __pyx_L1;}
-    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_3);
-    __pyx_3 = 0;
-    __pyx_5 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; goto __pyx_L1;}
+static char (__pyx_k116[]) = "p < 0.0";
+static char (__pyx_k117[]) = "p > 1.0";
+
+static PyObject *__pyx_f_6mtrand_11RandomState_logseries(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_logseries[] = "Logarithmic series distribution.\n        \n        logseries(p, size=None)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_logseries(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_p = 0;
+  PyObject *__pyx_v_size = 0;
+  PyArrayObject *__pyx_v_op;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"p","size",0};
+  __pyx_v_size = __pyx_k57;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|O", __pyx_argnames, &__pyx_v_p, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_p);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_op = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1081 */
+  __pyx_1 = PyArray_FROM_OTF(__pyx_v_p,NPY_DOUBLE,NPY_ALIGNED); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_1)));
+  Py_DECREF(((PyObject *)__pyx_v_op));
+  __pyx_v_op = ((PyArrayObject *)__pyx_1);
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1082 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_any); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_1, __pyx_n_less); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; goto __pyx_L1;}
+  __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_op));
+  PyTuple_SET_ITEM(__pyx_4, 0, ((PyObject *)__pyx_v_op));
+  PyTuple_SET_ITEM(__pyx_4, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_4); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1083 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; goto __pyx_L1;}
+    Py_INCREF(__pyx_k116p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k116p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; goto __pyx_L1;}
     Py_DECREF(__pyx_1); __pyx_1 = 0;
     Py_DECREF(__pyx_2); __pyx_2 = 0;
-    Py_DECREF(__pyx_v_x);
-    __pyx_v_x = __pyx_5;
-    __pyx_5 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; goto __pyx_L1;}
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":837 */
-    __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
-    __pyx_1 = PyObject_GetAttr(__pyx_3, __pyx_n_multiply); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_reduce); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1084 */
+  __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_4, __pyx_n_any); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; goto __pyx_L1;}
+  Py_DECREF(__pyx_4); __pyx_4 = 0;
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_greater); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_4 = PyFloat_FromDouble(1.0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; goto __pyx_L1;}
+  Py_INCREF(((PyObject *)__pyx_v_op));
+  PyTuple_SET_ITEM(__pyx_2, 0, ((PyObject *)__pyx_v_op));
+  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_4 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+  __pyx_4 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyObject_IsTrue(__pyx_2); if (__pyx_5 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_5) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1085 */
+    __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; goto __pyx_L1;}
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; goto __pyx_L1;}
+    Py_INCREF(__pyx_k117p);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_k117p);
+    __pyx_3 = PyObject_CallObject(__pyx_4, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; goto __pyx_L1;}
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
     Py_DECREF(__pyx_1); __pyx_1 = 0;
-    __pyx_5 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
-    __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_final_shape);
-    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_final_shape);
-    __pyx_1 = PyObject_CallObject(__pyx_5, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
-    Py_DECREF(__pyx_5); __pyx_5 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
     Py_DECREF(__pyx_3); __pyx_3 = 0;
-    __pyx_5 = PyInt_FromLong(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
-    __pyx_3 = PyNumber_Subtract(__pyx_1, __pyx_5); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    Py_DECREF(__pyx_5); __pyx_5 = 0;
-    __pyx_4 = PyInt_AsLong(__pyx_3); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    __pyx_1 = PySequence_GetSlice(__pyx_v_final_shape, 0, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
-    __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
-    PyTuple_SET_ITEM(__pyx_5, 0, __pyx_1);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; goto __pyx_L1;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1086 */
+  __pyx_2 = __pyx_f_6mtrand_discd_array(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,rk_logseries,__pyx_v_size,__pyx_v_op); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; goto __pyx_L1;}
+  __pyx_r = __pyx_2;
+  __pyx_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("mtrand.RandomState.logseries");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_op);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_p);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_n_array;
+static PyObject *__pyx_n_shape;
+static PyObject *__pyx_n_isinstance;
+static PyObject *__pyx_n_list;
+static PyObject *__pyx_n_append;
+static PyObject *__pyx_n_multiply;
+static PyObject *__pyx_n_reduce;
+static PyObject *__pyx_n_svd;
+static PyObject *__pyx_n_dot;
+static PyObject *__pyx_n_sqrt;
+static PyObject *__pyx_n_tuple;
+
+static PyObject *__pyx_k118p;
+static PyObject *__pyx_k119p;
+static PyObject *__pyx_k120p;
+static PyObject *__pyx_k121p;
+
+static char (__pyx_k118[]) = "mean must be 1 dimensional";
+static char (__pyx_k119[]) = "cov must be 2 dimensional and square";
+static char (__pyx_k120[]) = "mean and cov must have same length";
+static char (__pyx_k121[]) = "numpy.dual";
+
+static PyObject *__pyx_f_6mtrand_11RandomState_multivariate_normal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_multivariate_normal[] = "Return an array containing multivariate normally distributed random numbers\n        with specified mean and covariance.\n\n        multivariate_normal(mean, cov) -> random values\n        multivariate_normal(mean, cov, [m, n, ...]) -> random values\n\n        mean must be a 1 dimensional array. cov must be a square two dimensional\n        array with the same number of rows and columns as mean has elements.\n\n        The first form returns a single 1-D array containing a multivariate\n        normal.\n\n        The second form returns an array of shape (m, n, ..., cov.shape[0]).\n        In this case, output[i,j,...,:] is a 1-D array containing a multivariate\n        normal.\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_multivariate_normal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_mean = 0;
+  PyObject *__pyx_v_cov = 0;
+  PyObject *__pyx_v_size = 0;
+  PyObject *__pyx_v_shape;
+  PyObject *__pyx_v_final_shape;
+  PyObject *__pyx_v_x;
+  PyObject *__pyx_v_svd;
+  PyObject *__pyx_v_u;
+  PyObject *__pyx_v_s;
+  PyObject *__pyx_v_v;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  int __pyx_4;
+  PyObject *__pyx_5 = 0;
+  static char *__pyx_argnames[] = {"mean","cov","size",0};
+  __pyx_v_size = __pyx_k58;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO|O", __pyx_argnames, &__pyx_v_mean, &__pyx_v_cov, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_mean);
+  Py_INCREF(__pyx_v_cov);
+  Py_INCREF(__pyx_v_size);
+  __pyx_v_shape = Py_None; Py_INCREF(Py_None);
+  __pyx_v_final_shape = Py_None; Py_INCREF(Py_None);
+  __pyx_v_x = Py_None; Py_INCREF(Py_None);
+  __pyx_v_svd = Py_None; Py_INCREF(Py_None);
+  __pyx_v_u = Py_None; Py_INCREF(Py_None);
+  __pyx_v_s = Py_None; Py_INCREF(Py_None);
+  __pyx_v_v = Py_None; Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1107 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_array); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_mean);
+  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_mean);
+  __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_v_mean);
+  __pyx_v_mean = __pyx_3;
+  __pyx_3 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1108 */
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_array); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_cov);
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_cov);
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_v_cov);
+  __pyx_v_cov = __pyx_2;
+  __pyx_2 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1109 */
+  __pyx_4 = __pyx_v_size == Py_None;
+  if (__pyx_4) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1110 */
+    __pyx_1 = PyList_New(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; goto __pyx_L1;}
+    Py_DECREF(__pyx_v_shape);
+    __pyx_v_shape = __pyx_1;
     __pyx_1 = 0;
-    __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_5); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    Py_DECREF(__pyx_5); __pyx_5 = 0;
-    __pyx_1 = PyObject_GetAttr(__pyx_v_mean, __pyx_n_shape); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; goto __pyx_L1;}
-    __pyx_2 = PyInt_FromLong(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; goto __pyx_L1;}
-    __pyx_5 = PyObject_GetItem(__pyx_1, __pyx_2); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
-    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_3);
-    PyTuple_SET_ITEM(__pyx_1, 1, __pyx_5);
-    __pyx_3 = 0;
-    __pyx_5 = 0;
-    if (PyObject_SetAttr(__pyx_v_x, __pyx_n_shape, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    goto __pyx_L2;
+  }
+  /*else*/ {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":846 */
-    __pyx_2 = PyList_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; goto __pyx_L1;}
-    Py_INCREF(__pyx_n_svd);
-    PyList_SET_ITEM(__pyx_2, 0, __pyx_n_svd);
-    __pyx_3 = __Pyx_Import(__pyx_k115p, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_5 = PyObject_GetAttr(__pyx_3, __pyx_n_svd); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; goto __pyx_L1;}
-    Py_DECREF(__pyx_v_svd);
-    __pyx_v_svd = __pyx_5;
-    __pyx_5 = 0;
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1112 */
+    Py_INCREF(__pyx_v_size);
+    Py_DECREF(__pyx_v_shape);
+    __pyx_v_shape = __pyx_v_size;
+  }
+  __pyx_L2:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":848 */
-    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_cov);
-    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_cov);
-    __pyx_2 = PyObject_CallObject(__pyx_v_svd, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; goto __pyx_L1;}
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1113 */
+  __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_v_mean, __pyx_n_shape); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; goto __pyx_L1;}
+  __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_2);
+  __pyx_2 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_3 = PyInt_FromLong(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; goto __pyx_L1;}
+  if (PyObject_Cmp(__pyx_2, __pyx_3, &__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; goto __pyx_L1;}
+  __pyx_4 = __pyx_4 != 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  if (__pyx_4) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1114 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; goto __pyx_L1;}
+    Py_INCREF(__pyx_k118p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k118p);
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; goto __pyx_L1;}
     Py_DECREF(__pyx_1); __pyx_1 = 0;
-    __pyx_3 = __Pyx_UnpackItem(__pyx_2, 0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; goto __pyx_L1;}
-    Py_DECREF(__pyx_v_u);
-    __pyx_v_u = __pyx_3;
-    __pyx_3 = 0;
-    __pyx_5 = __Pyx_UnpackItem(__pyx_2, 1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; goto __pyx_L1;}
-    Py_DECREF(__pyx_v_s);
-    __pyx_v_s = __pyx_5;
-    __pyx_5 = 0;
-    __pyx_1 = __Pyx_UnpackItem(__pyx_2, 2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; goto __pyx_L1;}
-    Py_DECREF(__pyx_v_v);
-    __pyx_v_v = __pyx_1;
-    __pyx_1 = 0;
-    if (__Pyx_EndUnpack(__pyx_2, 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; goto __pyx_L1;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; goto __pyx_L1;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":849 */
-    __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; goto __pyx_L1;}
-    __pyx_5 = PyObject_GetAttr(__pyx_3, __pyx_n_dot); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; goto __pyx_L1;}
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1115 */
+  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_v_cov, __pyx_n_shape); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; goto __pyx_L1;}
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
+  __pyx_2 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_1 = PyInt_FromLong(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; goto __pyx_L1;}
+  if (PyObject_Cmp(__pyx_2, __pyx_1, &__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; goto __pyx_L1;}
+  __pyx_4 = __pyx_4 != 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  if (!__pyx_4) {
+    __pyx_3 = PyObject_GetAttr(__pyx_v_cov, __pyx_n_shape); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; goto __pyx_L1;}
+    __pyx_2 = PyInt_FromLong(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; goto __pyx_L1;}
+    __pyx_1 = PyObject_GetItem(__pyx_3, __pyx_2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; goto __pyx_L1;}
     Py_DECREF(__pyx_3); __pyx_3 = 0;
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_sqrt); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_s);
-    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_s);
-    __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; goto __pyx_L1;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_3 = PyObject_GetAttr(__pyx_v_cov, __pyx_n_shape); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; goto __pyx_L1;}
+    __pyx_2 = PyInt_FromLong(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; goto __pyx_L1;}
+    __pyx_5 = PyObject_GetItem(__pyx_3, __pyx_2); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; goto __pyx_L1;}
     Py_DECREF(__pyx_3); __pyx_3 = 0;
-    __pyx_2 = PyNumber_Multiply(__pyx_v_x, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    if (PyObject_Cmp(__pyx_1, __pyx_5, &__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; goto __pyx_L1;}
+    __pyx_4 = __pyx_4 != 0;
     Py_DECREF(__pyx_1); __pyx_1 = 0;
-    __pyx_3 = PyTuple_New(2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; goto __pyx_L1;}
-    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
-    Py_INCREF(__pyx_v_v);
-    PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_v);
-    __pyx_2 = 0;
-    __pyx_1 = PyObject_CallObject(__pyx_5, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; goto __pyx_L1;}
     Py_DECREF(__pyx_5); __pyx_5 = 0;
+  }
+  if (__pyx_4) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1116 */
+    __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; goto __pyx_L1;}
+    Py_INCREF(__pyx_k119p);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k119p);
+    __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; goto __pyx_L1;}
     Py_DECREF(__pyx_3); __pyx_3 = 0;
-    Py_DECREF(__pyx_v_x);
-    __pyx_v_x = __pyx_1;
-    __pyx_1 = 0;
-
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":852 */
-    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; goto __pyx_L1;}
-    __pyx_5 = PyObject_GetAttr(__pyx_2, __pyx_n_add); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; goto __pyx_L1;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_3 = PyTuple_New(3); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_mean);
-    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_mean);
-    Py_INCREF(__pyx_v_x);
-    PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_x);
-    Py_INCREF(__pyx_v_x);
-    PyTuple_SET_ITEM(__pyx_3, 2, __pyx_v_x);
-    __pyx_1 = PyObject_CallObject(__pyx_5, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; goto __pyx_L1;}
-    Py_DECREF(__pyx_5); __pyx_5 = 0;
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    __Pyx_Raise(__pyx_1, 0, 0);
     Py_DECREF(__pyx_1); __pyx_1 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; goto __pyx_L1;}
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":853 */
-    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_tuple); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; goto __pyx_L1;}
-    __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_final_shape);
-    PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_final_shape);
-    __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_5); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; goto __pyx_L1;}
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1117 */
+  __pyx_5 = PyObject_GetAttr(__pyx_v_mean, __pyx_n_shape); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; goto __pyx_L1;}
+  __pyx_3 = PyInt_FromLong(0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetItem(__pyx_5, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; goto __pyx_L1;}
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_1 = PyObject_GetAttr(__pyx_v_cov, __pyx_n_shape); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; goto __pyx_L1;}
+  __pyx_5 = PyInt_FromLong(0); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetItem(__pyx_1, __pyx_5); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  if (PyObject_Cmp(__pyx_2, __pyx_3, &__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; goto __pyx_L1;}
+  __pyx_4 = __pyx_4 != 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  if (__pyx_4) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1118 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; goto __pyx_L1;}
+    __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; goto __pyx_L1;}
+    Py_INCREF(__pyx_k120p);
+    PyTuple_SET_ITEM(__pyx_5, 0, __pyx_k120p);
+    __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_5); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_5); __pyx_5 = 0;
+    __Pyx_Raise(__pyx_2, 0, 0);
     Py_DECREF(__pyx_2); __pyx_2 = 0;
-    Py_DECREF(__pyx_5); __pyx_5 = 0;
-    if (PyObject_SetAttr(__pyx_v_x, __pyx_n_shape, __pyx_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; goto __pyx_L1;}
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; goto __pyx_L1;}
+    goto __pyx_L5;
+  }
+  __pyx_L5:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":854 */
-    Py_INCREF(__pyx_v_x);
-    __pyx_r = __pyx_v_x;
-    goto __pyx_L0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1120 */
+  __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_isinstance); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; goto __pyx_L1;}
+  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; goto __pyx_L1;}
+  __pyx_5 = PyTuple_New(2); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_shape);
+  PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_shape);
+  PyTuple_SET_ITEM(__pyx_5, 1, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_5); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  __pyx_4 = PyObject_IsTrue(__pyx_2); if (__pyx_4 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (__pyx_4) {
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    Py_XDECREF(__pyx_5);
-    __Pyx_AddTraceback("mtrand.RandomState.multivariate_normal");
-    __pyx_r = 0;
-    __pyx_L0:;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1121 */
+    __pyx_1 = PyList_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1121; goto __pyx_L1;}
+    Py_INCREF(__pyx_v_shape);
+    PyList_SET_ITEM(__pyx_1, 0, __pyx_v_shape);
     Py_DECREF(__pyx_v_shape);
-    Py_DECREF(__pyx_v_final_shape);
-    Py_DECREF(__pyx_v_x);
-    Py_DECREF(__pyx_v_svd);
-    Py_DECREF(__pyx_v_u);
-    Py_DECREF(__pyx_v_s);
-    Py_DECREF(__pyx_v_v);
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_mean);
-    Py_DECREF(__pyx_v_cov);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    __pyx_v_shape = __pyx_1;
+    __pyx_1 = 0;
+    goto __pyx_L6;
   }
+  __pyx_L6:;
 
-  static PyObject *__pyx_n_zeros;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1122 */
+  __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_list); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; goto __pyx_L1;}
+  __pyx_5 = PySequence_GetSlice(__pyx_v_shape, 0, 0x7fffffff); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_5);
+  __pyx_5 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_v_final_shape);
+  __pyx_v_final_shape = __pyx_1;
+  __pyx_1 = 0;
 
-  static PyObject *__pyx_k117p;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1123 */
+  __pyx_5 = PyObject_GetAttr(__pyx_v_final_shape, __pyx_n_append); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_v_mean, __pyx_n_shape); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; goto __pyx_L1;}
+  __pyx_2 = PyInt_FromLong(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetItem(__pyx_3, __pyx_2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_5, __pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; goto __pyx_L1;}
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
 
-  static char (__pyx_k117[]) = "sum(pvals) > 1.0";
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1127 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_standard_normal); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; goto __pyx_L1;}
+  __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_5, __pyx_n_multiply); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; goto __pyx_L1;}
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  __pyx_2 = PyObject_GetAttr(__pyx_3, __pyx_n_reduce); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_final_shape);
+  PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_final_shape);
+  __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_5); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_3);
+  __pyx_3 = 0;
+  __pyx_5 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_v_x);
+  __pyx_v_x = __pyx_5;
+  __pyx_5 = 0;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_multinomial(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_multinomial[] = "Multinomial distribution.\n        \n        multinomial(n, pvals, size=None) -> random values\n\n        pvals is a sequence of probabilities that should sum to 1 (however, the\n        last element is always assumed to account for the remaining probability\n        as long as sum(pvals[:-1]) <= 1).\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_multinomial(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    long __pyx_v_n;
-    PyObject *__pyx_v_pvals = 0;
-    PyObject *__pyx_v_size = 0;
-    long __pyx_v_d;
-    PyArrayObject *arrayObject_parr;
-    PyArrayObject *arrayObject_mnarr;
-    double (*__pyx_v_pix);
-    long (*__pyx_v_mnix);
-    long __pyx_v_i;
-    long __pyx_v_j;
-    long __pyx_v_dn;
-    double __pyx_v_Sum;
-    PyObject *__pyx_v_shape;
-    PyObject *__pyx_v_multin;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    long __pyx_4;
-    int __pyx_5;
-    static char *__pyx_argnames[] = {"n","pvals","size",0};
-    __pyx_v_size = __pyx_k59;
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "lO|O", __pyx_argnames, &__pyx_v_n, &__pyx_v_pvals, &__pyx_v_size)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_pvals);
-    Py_INCREF(__pyx_v_size);
-    arrayObject_parr = (PyArrayObject *)Py_None; Py_INCREF(arrayObject_parr);
-    arrayObject_mnarr = (PyArrayObject *)Py_None; Py_INCREF(arrayObject_mnarr);
-    __pyx_v_shape = Py_None; Py_INCREF(__pyx_v_shape);
-    __pyx_v_multin = Py_None; Py_INCREF(__pyx_v_multin);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1128 */
+  __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  __pyx_1 = PyObject_GetAttr(__pyx_3, __pyx_n_multiply); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_reduce); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_5 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_final_shape);
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_final_shape);
+  __pyx_1 = PyObject_CallObject(__pyx_5, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_5 = PyInt_FromLong(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  __pyx_3 = PyNumber_Subtract(__pyx_1, __pyx_5); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  __pyx_4 = PyInt_AsLong(__pyx_3); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_1 = PySequence_GetSlice(__pyx_v_final_shape, 0, __pyx_4); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_5, 0, __pyx_1);
+  __pyx_1 = 0;
+  __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_5); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  __pyx_1 = PyObject_GetAttr(__pyx_v_mean, __pyx_n_shape); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; goto __pyx_L1;}
+  __pyx_2 = PyInt_FromLong(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; goto __pyx_L1;}
+  __pyx_5 = PyObject_GetItem(__pyx_1, __pyx_2); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_3);
+  PyTuple_SET_ITEM(__pyx_1, 1, __pyx_5);
+  __pyx_3 = 0;
+  __pyx_5 = 0;
+  if (PyObject_SetAttr(__pyx_v_x, __pyx_n_shape, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":872 */
-    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; goto __pyx_L1;}
-    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_pvals);
-    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_pvals);
-    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_4 = PyInt_AsLong(__pyx_3); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; goto __pyx_L1;}
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    __pyx_v_d = __pyx_4;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1137 */
+  __pyx_2 = PyList_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; goto __pyx_L1;}
+  Py_INCREF(__pyx_n_svd);
+  PyList_SET_ITEM(__pyx_2, 0, __pyx_n_svd);
+  __pyx_3 = __Pyx_Import(__pyx_k121p, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_5 = PyObject_GetAttr(__pyx_3, __pyx_n_svd); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; goto __pyx_L1;}
+  Py_DECREF(__pyx_v_svd);
+  __pyx_v_svd = __pyx_5;
+  __pyx_5 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":873 */
-    __pyx_1 = ((PyObject *)PyArray_ContiguousFromObject(__pyx_v_pvals,PyArray_DOUBLE,1,1)); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; goto __pyx_L1;}
-    Py_INCREF(((PyObject *)__pyx_1));
-    Py_DECREF(((PyObject *)arrayObject_parr));
-    arrayObject_parr = (PyArrayObject *)((PyObject *)__pyx_1);
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1139 */
+  __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_cov);
+  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_cov);
+  __pyx_2 = PyObject_CallObject(__pyx_v_svd, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_3 = __Pyx_UnpackItem(__pyx_2, 0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; goto __pyx_L1;}
+  Py_DECREF(__pyx_v_u);
+  __pyx_v_u = __pyx_3;
+  __pyx_3 = 0;
+  __pyx_5 = __Pyx_UnpackItem(__pyx_2, 1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; goto __pyx_L1;}
+  Py_DECREF(__pyx_v_s);
+  __pyx_v_s = __pyx_5;
+  __pyx_5 = 0;
+  __pyx_1 = __Pyx_UnpackItem(__pyx_2, 2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; goto __pyx_L1;}
+  Py_DECREF(__pyx_v_v);
+  __pyx_v_v = __pyx_1;
+  __pyx_1 = 0;
+  if (__Pyx_EndUnpack(__pyx_2, 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":874 */
-    __pyx_v_pix = ((double (*))arrayObject_parr->data);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1140 */
+  __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; goto __pyx_L1;}
+  __pyx_5 = PyObject_GetAttr(__pyx_3, __pyx_n_dot); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; goto __pyx_L1;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_sqrt); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_s);
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_s);
+  __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_2 = PyNumber_Multiply(__pyx_v_x, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_3 = PyTuple_New(2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; goto __pyx_L1;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
+  Py_INCREF(__pyx_v_v);
+  PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_v);
+  __pyx_2 = 0;
+  __pyx_1 = PyObject_CallObject(__pyx_5, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; goto __pyx_L1;}
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_v_x);
+  __pyx_v_x = __pyx_1;
+  __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":876 */
-    __pyx_5 = (__pyx_f_6mtrand_kahan_sum(__pyx_v_pix,(__pyx_v_d - 1)) > 1.0);
-    if (__pyx_5) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1143 */
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; goto __pyx_L1;}
+  __pyx_5 = PyObject_GetAttr(__pyx_2, __pyx_n_add); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(3); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_mean);
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_mean);
+  Py_INCREF(__pyx_v_x);
+  PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_x);
+  Py_INCREF(__pyx_v_x);
+  PyTuple_SET_ITEM(__pyx_3, 2, __pyx_v_x);
+  __pyx_1 = PyObject_CallObject(__pyx_5, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; goto __pyx_L1;}
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":877 */
-      __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; goto __pyx_L1;}
-      Py_INCREF(__pyx_k117p);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k117p);
-      __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_1, 0, 0);
-      Py_DECREF(__pyx_1); __pyx_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; goto __pyx_L1;}
-      goto __pyx_L2;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1144 */
+  __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_tuple); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; goto __pyx_L1;}
+  __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_final_shape);
+  PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_final_shape);
+  __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_5); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  if (PyObject_SetAttr(__pyx_v_x, __pyx_n_shape, __pyx_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":879 */
-    __pyx_5 = __pyx_v_size == Py_None;
-    if (__pyx_5) {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1145 */
+  Py_INCREF(__pyx_v_x);
+  __pyx_r = __pyx_v_x;
+  goto __pyx_L0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":880 */
-      __pyx_2 = PyInt_FromLong(__pyx_v_d); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; goto __pyx_L1;}
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
-      __pyx_2 = 0;
-      Py_DECREF(__pyx_v_shape);
-      __pyx_v_shape = __pyx_3;
-      __pyx_3 = 0;
-      goto __pyx_L3;
-    }
-    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_type); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 881; goto __pyx_L1;}
-    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 881; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_size);
-    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_size);
-    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 881; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 881; goto __pyx_L1;}
-    __pyx_5 = __pyx_3 == __pyx_1;
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_5);
+  __Pyx_AddTraceback("mtrand.RandomState.multivariate_normal");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_shape);
+  Py_DECREF(__pyx_v_final_shape);
+  Py_DECREF(__pyx_v_x);
+  Py_DECREF(__pyx_v_svd);
+  Py_DECREF(__pyx_v_u);
+  Py_DECREF(__pyx_v_s);
+  Py_DECREF(__pyx_v_v);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_mean);
+  Py_DECREF(__pyx_v_cov);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_n_zeros;
+
+static PyObject *__pyx_k123p;
+
+static char (__pyx_k123[]) = "sum(pvals) > 1.0";
+
+static PyObject *__pyx_f_6mtrand_11RandomState_multinomial(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_multinomial[] = "Multinomial distribution.\n        \n        multinomial(n, pvals, size=None) -> random values\n\n        pvals is a sequence of probabilities that should sum to 1 (however, the\n        last element is always assumed to account for the remaining probability\n        as long as sum(pvals[:-1]) <= 1).\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_multinomial(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  long __pyx_v_n;
+  PyObject *__pyx_v_pvals = 0;
+  PyObject *__pyx_v_size = 0;
+  long __pyx_v_d;
+  PyArrayObject *arrayObject_parr;
+  PyArrayObject *arrayObject_mnarr;
+  double (*__pyx_v_pix);
+  long (*__pyx_v_mnix);
+  long __pyx_v_i;
+  long __pyx_v_j;
+  long __pyx_v_dn;
+  double __pyx_v_Sum;
+  PyObject *__pyx_v_shape;
+  PyObject *__pyx_v_multin;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  long __pyx_4;
+  PyObject *__pyx_5 = 0;
+  PyObject *__pyx_6 = 0;
+  int __pyx_7;
+  static char *__pyx_argnames[] = {"n","pvals","size",0};
+  __pyx_v_size = __pyx_k59;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "lO|O", __pyx_argnames, &__pyx_v_n, &__pyx_v_pvals, &__pyx_v_size)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_pvals);
+  Py_INCREF(__pyx_v_size);
+  arrayObject_parr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  arrayObject_mnarr = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_shape = Py_None; Py_INCREF(Py_None);
+  __pyx_v_multin = Py_None; Py_INCREF(Py_None);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1163 */
+  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_pvals);
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_pvals);
+  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_4 = PyInt_AsLong(__pyx_3); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_v_d = __pyx_4;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1164 */
+  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_PyArray_ContiguousFromObject); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; goto __pyx_L1;}
+  __pyx_2 = PyInt_FromLong(NPY_DOUBLE); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; goto __pyx_L1;}
+  __pyx_3 = PyInt_FromLong(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; goto __pyx_L1;}
+  __pyx_5 = PyInt_FromLong(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; goto __pyx_L1;}
+  __pyx_6 = PyTuple_New(4); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_pvals);
+  PyTuple_SET_ITEM(__pyx_6, 0, __pyx_v_pvals);
+  PyTuple_SET_ITEM(__pyx_6, 1, __pyx_2);
+  PyTuple_SET_ITEM(__pyx_6, 2, __pyx_3);
+  PyTuple_SET_ITEM(__pyx_6, 3, __pyx_5);
+  __pyx_2 = 0;
+  __pyx_3 = 0;
+  __pyx_5 = 0;
+  __pyx_2 = PyObject_CallObject(__pyx_1, __pyx_6); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_6); __pyx_6 = 0;
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_2)));
+  Py_DECREF(((PyObject *)arrayObject_parr));
+  arrayObject_parr = ((PyArrayObject *)__pyx_2);
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1165 */
+  __pyx_v_pix = ((double (*))arrayObject_parr->data);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1167 */
+  __pyx_7 = (__pyx_f_6mtrand_kahan_sum(__pyx_v_pix,(__pyx_v_d - 1)) > 1.0);
+  if (__pyx_7) {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1168 */
+    __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; goto __pyx_L1;}
+    __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; goto __pyx_L1;}
+    Py_INCREF(__pyx_k123p);
+    PyTuple_SET_ITEM(__pyx_5, 0, __pyx_k123p);
+    __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_5); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; goto __pyx_L1;}
     Py_DECREF(__pyx_3); __pyx_3 = 0;
+    Py_DECREF(__pyx_5); __pyx_5 = 0;
+    __Pyx_Raise(__pyx_1, 0, 0);
     Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (__pyx_5) {
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; goto __pyx_L1;}
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":882 */
-      __pyx_2 = PyInt_FromLong(__pyx_v_d); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; goto __pyx_L1;}
-      __pyx_3 = PyTuple_New(2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_size);
-      PyTuple_SET_ITEM(__pyx_3, 1, __pyx_2);
-      __pyx_2 = 0;
-      Py_DECREF(__pyx_v_shape);
-      __pyx_v_shape = __pyx_3;
-      __pyx_3 = 0;
-      goto __pyx_L3;
-    }
-    /*else*/ {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1170 */
+  __pyx_7 = __pyx_v_size == Py_None;
+  if (__pyx_7) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":884 */
-      __pyx_1 = PyInt_FromLong(__pyx_v_d); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; goto __pyx_L1;}
-      __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; goto __pyx_L1;}
-      PyTuple_SET_ITEM(__pyx_2, 0, __pyx_1);
-      __pyx_1 = 0;
-      __pyx_3 = PyNumber_Add(__pyx_v_size, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_v_shape);
-      __pyx_v_shape = __pyx_3;
-      __pyx_3 = 0;
-    }
-    __pyx_L3:;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1171 */
+    __pyx_6 = PyInt_FromLong(__pyx_v_d); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1171; goto __pyx_L1;}
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1171; goto __pyx_L1;}
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_6);
+    __pyx_6 = 0;
+    Py_DECREF(__pyx_v_shape);
+    __pyx_v_shape = __pyx_2;
+    __pyx_2 = 0;
+    goto __pyx_L3;
+  }
+  __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_type); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; goto __pyx_L1;}
+  __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_size);
+  PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_size);
+  __pyx_1 = PyObject_CallObject(__pyx_3, __pyx_5); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  __pyx_6 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; goto __pyx_L1;}
+  __pyx_7 = __pyx_1 == __pyx_6;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_6); __pyx_6 = 0;
+  if (__pyx_7) {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":886 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_zeros); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; goto __pyx_L1;}
-    __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_shape);
-    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_shape);
-    PyTuple_SET_ITEM(__pyx_1, 1, __pyx_3);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1173 */
+    __pyx_2 = PyInt_FromLong(__pyx_v_d); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; goto __pyx_L1;}
+    __pyx_3 = PyTuple_New(2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; goto __pyx_L1;}
+    Py_INCREF(__pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_size);
+    PyTuple_SET_ITEM(__pyx_3, 1, __pyx_2);
+    __pyx_2 = 0;
+    Py_DECREF(__pyx_v_shape);
+    __pyx_v_shape = __pyx_3;
     __pyx_3 = 0;
-    __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1175 */
+    __pyx_5 = PyInt_FromLong(__pyx_v_d); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1175; goto __pyx_L1;}
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1175; goto __pyx_L1;}
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_5);
+    __pyx_5 = 0;
+    __pyx_6 = PyNumber_Add(__pyx_v_size, __pyx_1); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1175; goto __pyx_L1;}
     Py_DECREF(__pyx_1); __pyx_1 = 0;
-    Py_DECREF(__pyx_v_multin);
-    __pyx_v_multin = __pyx_3;
-    __pyx_3 = 0;
+    Py_DECREF(__pyx_v_shape);
+    __pyx_v_shape = __pyx_6;
+    __pyx_6 = 0;
+  }
+  __pyx_L3:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":887 */
-    Py_INCREF(((PyObject *)__pyx_v_multin));
-    Py_DECREF(((PyObject *)arrayObject_mnarr));
-    arrayObject_mnarr = (PyArrayObject *)((PyObject *)__pyx_v_multin);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1177 */
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; goto __pyx_L1;}
+  __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_zeros); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_5 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; goto __pyx_L1;}
+  __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_shape);
+  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_shape);
+  PyTuple_SET_ITEM(__pyx_1, 1, __pyx_5);
+  __pyx_5 = 0;
+  __pyx_6 = PyObject_CallObject(__pyx_3, __pyx_1); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_v_multin);
+  __pyx_v_multin = __pyx_6;
+  __pyx_6 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":888 */
-    __pyx_v_mnix = ((long (*))arrayObject_mnarr->data);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1178 */
+  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_v_multin)));
+  Py_DECREF(((PyObject *)arrayObject_mnarr));
+  arrayObject_mnarr = ((PyArrayObject *)__pyx_v_multin);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":889 */
-    __pyx_v_i = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1179 */
+  __pyx_v_mnix = ((long (*))arrayObject_mnarr->data);
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":890 */
-    while (1) {
-      __pyx_L4:;
-      __pyx_5 = (__pyx_v_i < PyArray_SIZE(arrayObject_mnarr));
-      if (!__pyx_5) break;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1180 */
+  __pyx_v_i = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":891 */
-      __pyx_v_Sum = 1.0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1181 */
+  while (1) {
+    __pyx_L4:;
+    __pyx_7 = (__pyx_v_i < PyArray_SIZE(arrayObject_mnarr));
+    if (!__pyx_7) break;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":892 */
-      __pyx_v_dn = __pyx_v_n;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1182 */
+    __pyx_v_Sum = 1.0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":893 */
-      __pyx_4 = (__pyx_v_d - 1);
-      for (__pyx_v_j = 0; __pyx_v_j < __pyx_4; ++__pyx_v_j) {
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1183 */
+    __pyx_v_dn = __pyx_v_n;
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":894 */
-        (__pyx_v_mnix[(__pyx_v_i + __pyx_v_j)]) = rk_binomial(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,__pyx_v_dn,((__pyx_v_pix[__pyx_v_j]) / __pyx_v_Sum));
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1184 */
+    __pyx_4 = (__pyx_v_d - 1);
+    for (__pyx_v_j = 0; __pyx_v_j < __pyx_4; ++__pyx_v_j) {
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":895 */
-        __pyx_v_dn = (__pyx_v_dn - (__pyx_v_mnix[(__pyx_v_i + __pyx_v_j)]));
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1185 */
+      (__pyx_v_mnix[(__pyx_v_i + __pyx_v_j)]) = rk_binomial(((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state,__pyx_v_dn,((__pyx_v_pix[__pyx_v_j]) / __pyx_v_Sum));
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":896 */
-        __pyx_5 = (__pyx_v_dn <= 0);
-        if (__pyx_5) {
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1186 */
+      __pyx_v_dn = (__pyx_v_dn - (__pyx_v_mnix[(__pyx_v_i + __pyx_v_j)]));
 
-          /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":897 */
-          goto __pyx_L7;
-          goto __pyx_L8;
-        }
-        __pyx_L8:;
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1187 */
+      __pyx_7 = (__pyx_v_dn <= 0);
+      if (__pyx_7) {
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":898 */
-        __pyx_v_Sum = (__pyx_v_Sum - (__pyx_v_pix[__pyx_v_j]));
-        __pyx_L6:;
+        /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1188 */
+        goto __pyx_L7;
+        goto __pyx_L8;
       }
-      __pyx_L7:;
+      __pyx_L8:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":899 */
-      __pyx_5 = (__pyx_v_dn > 0);
-      if (__pyx_5) {
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1189 */
+      __pyx_v_Sum = (__pyx_v_Sum - (__pyx_v_pix[__pyx_v_j]));
+      __pyx_L6:;
+    }
+    __pyx_L7:;
 
-        /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":900 */
-        (__pyx_v_mnix[((__pyx_v_i + __pyx_v_d) - 1)]) = __pyx_v_dn;
-        goto __pyx_L9;
-      }
-      __pyx_L9:;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1190 */
+    __pyx_7 = (__pyx_v_dn > 0);
+    if (__pyx_7) {
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":902 */
-      __pyx_v_i = (__pyx_v_i + __pyx_v_d);
+      /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1191 */
+      (__pyx_v_mnix[((__pyx_v_i + __pyx_v_d) - 1)]) = __pyx_v_dn;
+      goto __pyx_L9;
     }
-    __pyx_L5:;
+    __pyx_L9:;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":904 */
-    Py_INCREF(__pyx_v_multin);
-    __pyx_r = __pyx_v_multin;
-    goto __pyx_L0;
-
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    __Pyx_AddTraceback("mtrand.RandomState.multinomial");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(arrayObject_parr);
-    Py_DECREF(arrayObject_mnarr);
-    Py_DECREF(__pyx_v_shape);
-    Py_DECREF(__pyx_v_multin);
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_pvals);
-    Py_DECREF(__pyx_v_size);
-    return __pyx_r;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1193 */
+    __pyx_v_i = (__pyx_v_i + __pyx_v_d);
   }
+  __pyx_L5:;
 
-  static PyObject *__pyx_f_6mtrand_11RandomState_shuffle(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_shuffle[] = "Modify a sequence in-place by shuffling its contents.\n        \n        shuffle(x)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_shuffle(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_x = 0;
-    long __pyx_v_i;
-    long __pyx_v_j;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    long __pyx_4;
-    int __pyx_5;
-    static char *__pyx_argnames[] = {"x",0};
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_x)) return 0;
-    Py_INCREF(__pyx_v_self);
-    Py_INCREF(__pyx_v_x);
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1195 */
+  Py_INCREF(__pyx_v_multin);
+  __pyx_r = __pyx_v_multin;
+  goto __pyx_L0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":915 */
-    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; goto __pyx_L1;}
-    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_x);
-    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_x);
-    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; goto __pyx_L1;}
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_5);
+  Py_XDECREF(__pyx_6);
+  __Pyx_AddTraceback("mtrand.RandomState.multinomial");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(arrayObject_parr);
+  Py_DECREF(arrayObject_mnarr);
+  Py_DECREF(__pyx_v_shape);
+  Py_DECREF(__pyx_v_multin);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_pvals);
+  Py_DECREF(__pyx_v_size);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_f_6mtrand_11RandomState_shuffle(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_shuffle[] = "Modify a sequence in-place by shuffling its contents.\n        \n        shuffle(x)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_shuffle(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_x = 0;
+  long __pyx_v_i;
+  long __pyx_v_j;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  long __pyx_4;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"x",0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_x)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_x);
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1206 */
+  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_len); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_x);
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_x);
+  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_1 = PyInt_FromLong(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; goto __pyx_L1;}
+  __pyx_2 = PyNumber_Subtract(__pyx_3, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; goto __pyx_L1;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_4 = PyInt_AsLong(__pyx_2); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_v_i = __pyx_4;
+
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1207 */
+  while (1) {
+    __pyx_L2:;
+    __pyx_5 = (__pyx_v_i > 0);
+    if (!__pyx_5) break;
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1208 */
+    __pyx_v_j = rk_interval(__pyx_v_i,((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state);
+
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1209 */
+    __pyx_3 = PyInt_FromLong(__pyx_v_j); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; goto __pyx_L1;}
+    __pyx_1 = PyObject_GetItem(__pyx_v_x, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; goto __pyx_L1;}
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    __pyx_2 = PyInt_FromLong(__pyx_v_i); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; goto __pyx_L1;}
+    __pyx_3 = PyObject_GetItem(__pyx_v_x, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = PyInt_FromLong(__pyx_v_i); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; goto __pyx_L1;}
+    if (PyObject_SetItem(__pyx_v_x, __pyx_2, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
     Py_DECREF(__pyx_1); __pyx_1 = 0;
+    __pyx_2 = PyInt_FromLong(__pyx_v_j); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; goto __pyx_L1;}
+    if (PyObject_SetItem(__pyx_v_x, __pyx_2, __pyx_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; goto __pyx_L1;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_1 = PyInt_FromLong(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; goto __pyx_L1;}
-    __pyx_2 = PyNumber_Subtract(__pyx_3, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; goto __pyx_L1;}
     Py_DECREF(__pyx_3); __pyx_3 = 0;
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    __pyx_4 = PyInt_AsLong(__pyx_2); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_v_i = __pyx_4;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":916 */
-    while (1) {
-      __pyx_L2:;
-      __pyx_5 = (__pyx_v_i > 0);
-      if (!__pyx_5) break;
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1210 */
+    __pyx_v_i = (__pyx_v_i - 1);
+  }
+  __pyx_L3:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":917 */
-      __pyx_v_j = rk_interval(__pyx_v_i,((struct __pyx_obj_6mtrand_RandomState *)__pyx_v_self)->internal_state);
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  __Pyx_AddTraceback("mtrand.RandomState.shuffle");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_x);
+  return __pyx_r;
+}
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":918 */
-      __pyx_3 = PyInt_FromLong(__pyx_v_j); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; goto __pyx_L1;}
-      __pyx_1 = PyObject_GetItem(__pyx_v_x, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __pyx_2 = PyInt_FromLong(__pyx_v_i); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; goto __pyx_L1;}
-      __pyx_3 = PyObject_GetItem(__pyx_v_x, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_2 = PyInt_FromLong(__pyx_v_i); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; goto __pyx_L1;}
-      if (PyObject_SetItem(__pyx_v_x, __pyx_2, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_1); __pyx_1 = 0;
-      __pyx_2 = PyInt_FromLong(__pyx_v_j); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; goto __pyx_L1;}
-      if (PyObject_SetItem(__pyx_v_x, __pyx_2, __pyx_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
+static PyObject *__pyx_n_arange;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":919 */
-      __pyx_v_i = (__pyx_v_i - 1);
-    }
-    __pyx_L3:;
+static PyObject *__pyx_f_6mtrand_11RandomState_permutation(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_6mtrand_11RandomState_permutation[] = "Given an integer, return a shuffled sequence of integers >= 0 and \n        < x; given a sequence, return a shuffled array copy.\n\n        permutation(x)\n        ";
+static PyObject *__pyx_f_6mtrand_11RandomState_permutation(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_x = 0;
+  PyObject *__pyx_v_arr;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  int __pyx_4;
+  static char *__pyx_argnames[] = {"x",0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_x)) return 0;
+  Py_INCREF(__pyx_v_self);
+  Py_INCREF(__pyx_v_x);
+  __pyx_v_arr = Py_None; Py_INCREF(Py_None);
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    __Pyx_AddTraceback("mtrand.RandomState.shuffle");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_x);
-    return __pyx_r;
-  }
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1218 */
+  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_type); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_x);
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_x);
+  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; goto __pyx_L1;}
+  __pyx_4 = __pyx_3 == __pyx_1;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  if (__pyx_4) {
 
-  static PyObject *__pyx_n_arange;
-
-  static PyObject *__pyx_f_6mtrand_11RandomState_permutation(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-  static char __pyx_doc_6mtrand_11RandomState_permutation[] = "Given an integer, return a shuffled sequence of integers >= 0 and \n        < x; given a sequence, return a shuffled array copy.\n\n        permutation(x)\n        ";
-  static PyObject *__pyx_f_6mtrand_11RandomState_permutation(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-    PyObject *__pyx_v_x = 0;
-    PyObject *__pyx_v_arr;
-    PyObject *__pyx_r;
-    PyObject *__pyx_1 = 0;
-    PyObject *__pyx_2 = 0;
-    PyObject *__pyx_3 = 0;
-    int __pyx_4;
-    static char *__pyx_argnames[] = {"x",0};
-    if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_x)) return 0;
-    Py_INCREF(__pyx_v_self);
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1219 */
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; goto __pyx_L1;}
+    __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_arange); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; goto __pyx_L1;}
     Py_INCREF(__pyx_v_x);
-    __pyx_v_arr = Py_None; Py_INCREF(__pyx_v_arr);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_x);
+    __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; goto __pyx_L1;}
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_v_arr);
+    __pyx_v_arr = __pyx_2;
+    __pyx_2 = 0;
+    goto __pyx_L2;
+  }
+  /*else*/ {
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":927 */
-    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_type); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; goto __pyx_L1;}
-    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; goto __pyx_L1;}
+    /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1221 */
+    __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; goto __pyx_L1;}
+    __pyx_1 = PyObject_GetAttr(__pyx_3, __pyx_n_array); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; goto __pyx_L1;}
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; goto __pyx_L1;}
     Py_INCREF(__pyx_v_x);
     PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_x);
-    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; goto __pyx_L1;}
+    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; goto __pyx_L1;}
     Py_DECREF(__pyx_1); __pyx_1 = 0;
     Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; goto __pyx_L1;}
-    __pyx_4 = __pyx_3 == __pyx_1;
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (__pyx_4) {
+    Py_DECREF(__pyx_v_arr);
+    __pyx_v_arr = __pyx_3;
+    __pyx_3 = 0;
+  }
+  __pyx_L2:;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":928 */
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 928; goto __pyx_L1;}
-      __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_arange); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 928; goto __pyx_L1;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 928; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_x);
-      PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_x);
-      __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 928; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(__pyx_1); __pyx_1 = 0;
-      Py_DECREF(__pyx_v_arr);
-      __pyx_v_arr = __pyx_2;
-      __pyx_2 = 0;
-      goto __pyx_L2;
-    }
-    /*else*/ {
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1222 */
+  __pyx_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_shuffle); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; goto __pyx_L1;}
+  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; goto __pyx_L1;}
+  Py_INCREF(__pyx_v_arr);
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_arr);
+  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
 
-      /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":930 */
-      __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__sp); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; goto __pyx_L1;}
-      __pyx_1 = PyObject_GetAttr(__pyx_3, __pyx_n_array); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; goto __pyx_L1;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; goto __pyx_L1;}
-      Py_INCREF(__pyx_v_x);
-      PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_x);
-      __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; goto __pyx_L1;}
-      Py_DECREF(__pyx_1); __pyx_1 = 0;
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(__pyx_v_arr);
-      __pyx_v_arr = __pyx_3;
-      __pyx_3 = 0;
-    }
-    __pyx_L2:;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1223 */
+  Py_INCREF(__pyx_v_arr);
+  __pyx_r = __pyx_v_arr;
+  goto __pyx_L0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":931 */
-    __pyx_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_shuffle); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; goto __pyx_L1;}
-    __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; goto __pyx_L1;}
-    Py_INCREF(__pyx_v_arr);
-    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_arr);
-    __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  __Pyx_AddTraceback("mtrand.RandomState.permutation");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_arr);
+  Py_DECREF(__pyx_v_self);
+  Py_DECREF(__pyx_v_x);
+  return __pyx_r;
+}
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":932 */
-    Py_INCREF(__pyx_v_arr);
-    __pyx_r = __pyx_v_arr;
-    goto __pyx_L0;
+static __Pyx_InternTabEntry __pyx_intern_tab[] = {
+  {&__pyx_n_MT19937, "MT19937"},
+  {&__pyx_n_PyArray_ContiguousFromObject, "PyArray_ContiguousFromObject"},
+  {&__pyx_n_ValueError, "ValueError"},
+  {&__pyx_n___RandomState_ctor, "__RandomState_ctor"},
+  {&__pyx_n__rand, "_rand"},
+  {&__pyx_n__sp, "_sp"},
+  {&__pyx_n_add, "add"},
+  {&__pyx_n_any, "any"},
+  {&__pyx_n_append, "append"},
+  {&__pyx_n_arange, "arange"},
+  {&__pyx_n_array, "array"},
+  {&__pyx_n_beta, "beta"},
+  {&__pyx_n_binomial, "binomial"},
+  {&__pyx_n_bytes, "bytes"},
+  {&__pyx_n_chisquare, "chisquare"},
+  {&__pyx_n_dot, "dot"},
+  {&__pyx_n_empty, "empty"},
+  {&__pyx_n_equal, "equal"},
+  {&__pyx_n_exponential, "exponential"},
+  {&__pyx_n_f, "f"},
+  {&__pyx_n_float64, "float64"},
+  {&__pyx_n_gamma, "gamma"},
+  {&__pyx_n_geometric, "geometric"},
+  {&__pyx_n_get_state, "get_state"},
+  {&__pyx_n_greater, "greater"},
+  {&__pyx_n_gumbel, "gumbel"},
+  {&__pyx_n_hypergeometric, "hypergeometric"},
+  {&__pyx_n_int, "int"},
+  {&__pyx_n_isinstance, "isinstance"},
+  {&__pyx_n_laplace, "laplace"},
+  {&__pyx_n_len, "len"},
+  {&__pyx_n_less, "less"},
+  {&__pyx_n_less_equal, "less_equal"},
+  {&__pyx_n_list, "list"},
+  {&__pyx_n_logistic, "logistic"},
+  {&__pyx_n_lognormal, "lognormal"},
+  {&__pyx_n_logseries, "logseries"},
+  {&__pyx_n_multinomial, "multinomial"},
+  {&__pyx_n_multiply, "multiply"},
+  {&__pyx_n_multivariate_normal, "multivariate_normal"},
+  {&__pyx_n_negative_binomial, "negative_binomial"},
+  {&__pyx_n_noncentral_chisquare, "noncentral_chisquare"},
+  {&__pyx_n_noncentral_f, "noncentral_f"},
+  {&__pyx_n_normal, "normal"},
+  {&__pyx_n_numpy, "numpy"},
+  {&__pyx_n_pareto, "pareto"},
+  {&__pyx_n_permutation, "permutation"},
+  {&__pyx_n_poisson, "poisson"},
+  {&__pyx_n_power, "power"},
+  {&__pyx_n_rand, "rand"},
+  {&__pyx_n_randint, "randint"},
+  {&__pyx_n_randn, "randn"},
+  {&__pyx_n_random, "random"},
+  {&__pyx_n_random_integers, "random_integers"},
+  {&__pyx_n_random_sample, "random_sample"},
+  {&__pyx_n_rayleigh, "rayleigh"},
+  {&__pyx_n_reduce, "reduce"},
+  {&__pyx_n_seed, "seed"},
+  {&__pyx_n_set_state, "set_state"},
+  {&__pyx_n_shape, "shape"},
+  {&__pyx_n_shuffle, "shuffle"},
+  {&__pyx_n_size, "size"},
+  {&__pyx_n_sqrt, "sqrt"},
+  {&__pyx_n_standard_cauchy, "standard_cauchy"},
+  {&__pyx_n_standard_exponential, "standard_exponential"},
+  {&__pyx_n_standard_gamma, "standard_gamma"},
+  {&__pyx_n_standard_normal, "standard_normal"},
+  {&__pyx_n_standard_t, "standard_t"},
+  {&__pyx_n_subtract, "subtract"},
+  {&__pyx_n_svd, "svd"},
+  {&__pyx_n_triangular, "triangular"},
+  {&__pyx_n_tuple, "tuple"},
+  {&__pyx_n_type, "type"},
+  {&__pyx_n_uniform, "uniform"},
+  {&__pyx_n_vonmises, "vonmises"},
+  {&__pyx_n_wald, "wald"},
+  {&__pyx_n_weibull, "weibull"},
+  {&__pyx_n_zeros, "zeros"},
+  {&__pyx_n_zipf, "zipf"},
+  {0, 0}
+};
 
-    __pyx_r = Py_None; Py_INCREF(__pyx_r);
-    goto __pyx_L0;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    Py_XDECREF(__pyx_2);
-    Py_XDECREF(__pyx_3);
-    __Pyx_AddTraceback("mtrand.RandomState.permutation");
-    __pyx_r = 0;
-    __pyx_L0:;
-    Py_DECREF(__pyx_v_arr);
-    Py_DECREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_x);
-    return __pyx_r;
-  }
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_k60p, __pyx_k60, sizeof(__pyx_k60)},
+  {&__pyx_k61p, __pyx_k61, sizeof(__pyx_k61)},
+  {&__pyx_k62p, __pyx_k62, sizeof(__pyx_k62)},
+  {&__pyx_k63p, __pyx_k63, sizeof(__pyx_k63)},
+  {&__pyx_k64p, __pyx_k64, sizeof(__pyx_k64)},
+  {&__pyx_k65p, __pyx_k65, sizeof(__pyx_k65)},
+  {&__pyx_k68p, __pyx_k68, sizeof(__pyx_k68)},
+  {&__pyx_k69p, __pyx_k69, sizeof(__pyx_k69)},
+  {&__pyx_k70p, __pyx_k70, sizeof(__pyx_k70)},
+  {&__pyx_k72p, __pyx_k72, sizeof(__pyx_k72)},
+  {&__pyx_k73p, __pyx_k73, sizeof(__pyx_k73)},
+  {&__pyx_k74p, __pyx_k74, sizeof(__pyx_k74)},
+  {&__pyx_k75p, __pyx_k75, sizeof(__pyx_k75)},
+  {&__pyx_k76p, __pyx_k76, sizeof(__pyx_k76)},
+  {&__pyx_k77p, __pyx_k77, sizeof(__pyx_k77)},
+  {&__pyx_k78p, __pyx_k78, sizeof(__pyx_k78)},
+  {&__pyx_k79p, __pyx_k79, sizeof(__pyx_k79)},
+  {&__pyx_k80p, __pyx_k80, sizeof(__pyx_k80)},
+  {&__pyx_k81p, __pyx_k81, sizeof(__pyx_k81)},
+  {&__pyx_k82p, __pyx_k82, sizeof(__pyx_k82)},
+  {&__pyx_k83p, __pyx_k83, sizeof(__pyx_k83)},
+  {&__pyx_k84p, __pyx_k84, sizeof(__pyx_k84)},
+  {&__pyx_k85p, __pyx_k85, sizeof(__pyx_k85)},
+  {&__pyx_k86p, __pyx_k86, sizeof(__pyx_k86)},
+  {&__pyx_k87p, __pyx_k87, sizeof(__pyx_k87)},
+  {&__pyx_k88p, __pyx_k88, sizeof(__pyx_k88)},
+  {&__pyx_k89p, __pyx_k89, sizeof(__pyx_k89)},
+  {&__pyx_k90p, __pyx_k90, sizeof(__pyx_k90)},
+  {&__pyx_k91p, __pyx_k91, sizeof(__pyx_k91)},
+  {&__pyx_k92p, __pyx_k92, sizeof(__pyx_k92)},
+  {&__pyx_k93p, __pyx_k93, sizeof(__pyx_k93)},
+  {&__pyx_k94p, __pyx_k94, sizeof(__pyx_k94)},
+  {&__pyx_k95p, __pyx_k95, sizeof(__pyx_k95)},
+  {&__pyx_k96p, __pyx_k96, sizeof(__pyx_k96)},
+  {&__pyx_k97p, __pyx_k97, sizeof(__pyx_k97)},
+  {&__pyx_k98p, __pyx_k98, sizeof(__pyx_k98)},
+  {&__pyx_k99p, __pyx_k99, sizeof(__pyx_k99)},
+  {&__pyx_k100p, __pyx_k100, sizeof(__pyx_k100)},
+  {&__pyx_k101p, __pyx_k101, sizeof(__pyx_k101)},
+  {&__pyx_k102p, __pyx_k102, sizeof(__pyx_k102)},
+  {&__pyx_k103p, __pyx_k103, sizeof(__pyx_k103)},
+  {&__pyx_k104p, __pyx_k104, sizeof(__pyx_k104)},
+  {&__pyx_k105p, __pyx_k105, sizeof(__pyx_k105)},
+  {&__pyx_k106p, __pyx_k106, sizeof(__pyx_k106)},
+  {&__pyx_k107p, __pyx_k107, sizeof(__pyx_k107)},
+  {&__pyx_k108p, __pyx_k108, sizeof(__pyx_k108)},
+  {&__pyx_k109p, __pyx_k109, sizeof(__pyx_k109)},
+  {&__pyx_k110p, __pyx_k110, sizeof(__pyx_k110)},
+  {&__pyx_k111p, __pyx_k111, sizeof(__pyx_k111)},
+  {&__pyx_k112p, __pyx_k112, sizeof(__pyx_k112)},
+  {&__pyx_k113p, __pyx_k113, sizeof(__pyx_k113)},
+  {&__pyx_k114p, __pyx_k114, sizeof(__pyx_k114)},
+  {&__pyx_k115p, __pyx_k115, sizeof(__pyx_k115)},
+  {&__pyx_k116p, __pyx_k116, sizeof(__pyx_k116)},
+  {&__pyx_k117p, __pyx_k117, sizeof(__pyx_k117)},
+  {&__pyx_k118p, __pyx_k118, sizeof(__pyx_k118)},
+  {&__pyx_k119p, __pyx_k119, sizeof(__pyx_k119)},
+  {&__pyx_k120p, __pyx_k120, sizeof(__pyx_k120)},
+  {&__pyx_k121p, __pyx_k121, sizeof(__pyx_k121)},
+  {&__pyx_k123p, __pyx_k123, sizeof(__pyx_k123)},
+  {0, 0, 0}
+};
 
-  static __Pyx_InternTabEntry __pyx_intern_tab[] = {
-    {&__pyx_n_MT19937, "MT19937"},
-    {&__pyx_n_ValueError, "ValueError"},
-    {&__pyx_n___RandomState_ctor, "__RandomState_ctor"},
-    {&__pyx_n__rand, "_rand"},
-    {&__pyx_n__sp, "_sp"},
-    {&__pyx_n_add, "add"},
-    {&__pyx_n_append, "append"},
-    {&__pyx_n_arange, "arange"},
-    {&__pyx_n_array, "array"},
-    {&__pyx_n_beta, "beta"},
-    {&__pyx_n_binomial, "binomial"},
-    {&__pyx_n_bytes, "bytes"},
-    {&__pyx_n_chisquare, "chisquare"},
-    {&__pyx_n_dot, "dot"},
-    {&__pyx_n_empty, "empty"},
-    {&__pyx_n_exponential, "exponential"},
-    {&__pyx_n_f, "f"},
-    {&__pyx_n_float64, "float64"},
-    {&__pyx_n_gamma, "gamma"},
-    {&__pyx_n_geometric, "geometric"},
-    {&__pyx_n_get_state, "get_state"},
-    {&__pyx_n_gumbel, "gumbel"},
-    {&__pyx_n_hypergeometric, "hypergeometric"},
-    {&__pyx_n_int, "int"},
-    {&__pyx_n_isinstance, "isinstance"},
-    {&__pyx_n_laplace, "laplace"},
-    {&__pyx_n_len, "len"},
-    {&__pyx_n_list, "list"},
-    {&__pyx_n_logistic, "logistic"},
-    {&__pyx_n_lognormal, "lognormal"},
-    {&__pyx_n_logseries, "logseries"},
-    {&__pyx_n_multinomial, "multinomial"},
-    {&__pyx_n_multiply, "multiply"},
-    {&__pyx_n_multivariate_normal, "multivariate_normal"},
-    {&__pyx_n_negative_binomial, "negative_binomial"},
-    {&__pyx_n_noncentral_chisquare, "noncentral_chisquare"},
-    {&__pyx_n_noncentral_f, "noncentral_f"},
-    {&__pyx_n_normal, "normal"},
-    {&__pyx_n_numpy, "numpy"},
-    {&__pyx_n_pareto, "pareto"},
-    {&__pyx_n_permutation, "permutation"},
-    {&__pyx_n_poisson, "poisson"},
-    {&__pyx_n_power, "power"},
-    {&__pyx_n_rand, "rand"},
-    {&__pyx_n_randint, "randint"},
-    {&__pyx_n_randn, "randn"},
-    {&__pyx_n_random, "random"},
-    {&__pyx_n_random_integers, "random_integers"},
-    {&__pyx_n_random_sample, "random_sample"},
-    {&__pyx_n_rayleigh, "rayleigh"},
-    {&__pyx_n_reduce, "reduce"},
-    {&__pyx_n_seed, "seed"},
-    {&__pyx_n_set_state, "set_state"},
-    {&__pyx_n_shape, "shape"},
-    {&__pyx_n_shuffle, "shuffle"},
-    {&__pyx_n_size, "size"},
-    {&__pyx_n_sqrt, "sqrt"},
-    {&__pyx_n_standard_cauchy, "standard_cauchy"},
-    {&__pyx_n_standard_exponential, "standard_exponential"},
-    {&__pyx_n_standard_gamma, "standard_gamma"},
-    {&__pyx_n_standard_normal, "standard_normal"},
-    {&__pyx_n_standard_t, "standard_t"},
-    {&__pyx_n_svd, "svd"},
-    {&__pyx_n_triangular, "triangular"},
-    {&__pyx_n_tuple, "tuple"},
-    {&__pyx_n_type, "type"},
-    {&__pyx_n_uniform, "uniform"},
-    {&__pyx_n_vonmises, "vonmises"},
-    {&__pyx_n_wald, "wald"},
-    {&__pyx_n_weibull, "weibull"},
-    {&__pyx_n_zeros, "zeros"},
-    {&__pyx_n_zipf, "zipf"},
-    {0, 0}
-  };
+static PyObject *__pyx_tp_new_6mtrand_RandomState(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  struct __pyx_obj_6mtrand_RandomState *p = (struct __pyx_obj_6mtrand_RandomState *)o;
+  return o;
+}
 
-  static __Pyx_StringTabEntry __pyx_string_tab[] = {
-    {&__pyx_k62p, __pyx_k62, sizeof(__pyx_k62)},
-    {&__pyx_k63p, __pyx_k63, sizeof(__pyx_k63)},
-    {&__pyx_k64p, __pyx_k64, sizeof(__pyx_k64)},
-    {&__pyx_k66p, __pyx_k66, sizeof(__pyx_k66)},
-    {&__pyx_k67p, __pyx_k67, sizeof(__pyx_k67)},
-    {&__pyx_k68p, __pyx_k68, sizeof(__pyx_k68)},
-    {&__pyx_k69p, __pyx_k69, sizeof(__pyx_k69)},
-    {&__pyx_k70p, __pyx_k70, sizeof(__pyx_k70)},
-    {&__pyx_k71p, __pyx_k71, sizeof(__pyx_k71)},
-    {&__pyx_k72p, __pyx_k72, sizeof(__pyx_k72)},
-    {&__pyx_k73p, __pyx_k73, sizeof(__pyx_k73)},
-    {&__pyx_k74p, __pyx_k74, sizeof(__pyx_k74)},
-    {&__pyx_k75p, __pyx_k75, sizeof(__pyx_k75)},
-    {&__pyx_k76p, __pyx_k76, sizeof(__pyx_k76)},
-    {&__pyx_k77p, __pyx_k77, sizeof(__pyx_k77)},
-    {&__pyx_k78p, __pyx_k78, sizeof(__pyx_k78)},
-    {&__pyx_k79p, __pyx_k79, sizeof(__pyx_k79)},
-    {&__pyx_k80p, __pyx_k80, sizeof(__pyx_k80)},
-    {&__pyx_k81p, __pyx_k81, sizeof(__pyx_k81)},
-    {&__pyx_k82p, __pyx_k82, sizeof(__pyx_k82)},
-    {&__pyx_k83p, __pyx_k83, sizeof(__pyx_k83)},
-    {&__pyx_k84p, __pyx_k84, sizeof(__pyx_k84)},
-    {&__pyx_k85p, __pyx_k85, sizeof(__pyx_k85)},
-    {&__pyx_k86p, __pyx_k86, sizeof(__pyx_k86)},
-    {&__pyx_k87p, __pyx_k87, sizeof(__pyx_k87)},
-    {&__pyx_k88p, __pyx_k88, sizeof(__pyx_k88)},
-    {&__pyx_k89p, __pyx_k89, sizeof(__pyx_k89)},
-    {&__pyx_k90p, __pyx_k90, sizeof(__pyx_k90)},
-    {&__pyx_k91p, __pyx_k91, sizeof(__pyx_k91)},
-    {&__pyx_k92p, __pyx_k92, sizeof(__pyx_k92)},
-    {&__pyx_k93p, __pyx_k93, sizeof(__pyx_k93)},
-    {&__pyx_k94p, __pyx_k94, sizeof(__pyx_k94)},
-    {&__pyx_k95p, __pyx_k95, sizeof(__pyx_k95)},
-    {&__pyx_k96p, __pyx_k96, sizeof(__pyx_k96)},
-    {&__pyx_k97p, __pyx_k97, sizeof(__pyx_k97)},
-    {&__pyx_k98p, __pyx_k98, sizeof(__pyx_k98)},
-    {&__pyx_k99p, __pyx_k99, sizeof(__pyx_k99)},
-    {&__pyx_k100p, __pyx_k100, sizeof(__pyx_k100)},
-    {&__pyx_k101p, __pyx_k101, sizeof(__pyx_k101)},
-    {&__pyx_k102p, __pyx_k102, sizeof(__pyx_k102)},
-    {&__pyx_k103p, __pyx_k103, sizeof(__pyx_k103)},
-    {&__pyx_k104p, __pyx_k104, sizeof(__pyx_k104)},
-    {&__pyx_k105p, __pyx_k105, sizeof(__pyx_k105)},
-    {&__pyx_k106p, __pyx_k106, sizeof(__pyx_k106)},
-    {&__pyx_k107p, __pyx_k107, sizeof(__pyx_k107)},
-    {&__pyx_k108p, __pyx_k108, sizeof(__pyx_k108)},
-    {&__pyx_k109p, __pyx_k109, sizeof(__pyx_k109)},
-    {&__pyx_k110p, __pyx_k110, sizeof(__pyx_k110)},
-    {&__pyx_k111p, __pyx_k111, sizeof(__pyx_k111)},
-    {&__pyx_k112p, __pyx_k112, sizeof(__pyx_k112)},
-    {&__pyx_k113p, __pyx_k113, sizeof(__pyx_k113)},
-    {&__pyx_k114p, __pyx_k114, sizeof(__pyx_k114)},
-    {&__pyx_k115p, __pyx_k115, sizeof(__pyx_k115)},
-    {&__pyx_k117p, __pyx_k117, sizeof(__pyx_k117)},
-    {0, 0, 0}
-  };
-
-  static PyObject *__pyx_tp_new_6mtrand_RandomState(PyTypeObject *t, PyObject *a, PyObject *k) {
-    PyObject *o = (*t->tp_alloc)(t, 0);
-    struct __pyx_obj_6mtrand_RandomState *p = (struct __pyx_obj_6mtrand_RandomState *)o;
-    return o;
+static void __pyx_tp_dealloc_6mtrand_RandomState(PyObject *o) {
+  struct __pyx_obj_6mtrand_RandomState *p = (struct __pyx_obj_6mtrand_RandomState *)o;
+  {
+    PyObject *etype, *eval, *etb;
+    PyErr_Fetch(&etype, &eval, &etb);
+    ++o->ob_refcnt;
+    __pyx_f_6mtrand_11RandomState___dealloc__(o);
+    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
+    --o->ob_refcnt;
+    PyErr_Restore(etype, eval, etb);
   }
+  (*o->ob_type->tp_free)(o);
+}
 
-  static void __pyx_tp_dealloc_6mtrand_RandomState(PyObject *o) {
-    struct __pyx_obj_6mtrand_RandomState *p = (struct __pyx_obj_6mtrand_RandomState *)o;
-    {
-      PyObject *etype, *eval, *etb;
-      PyErr_Fetch(&etype, &eval, &etb);
-      ++o->ob_refcnt;
-      __pyx_f_6mtrand_11RandomState___dealloc__(o);
-      if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
-      --o->ob_refcnt;
-      PyErr_Restore(etype, eval, etb);
-    }
-    (*o->ob_type->tp_free)(o);
-  }
+static int __pyx_tp_traverse_6mtrand_RandomState(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_6mtrand_RandomState *p = (struct __pyx_obj_6mtrand_RandomState *)o;
+  return 0;
+}
 
-  static int __pyx_tp_traverse_6mtrand_RandomState(PyObject *o, visitproc v, void *a) {
-    int e;
-    struct __pyx_obj_6mtrand_RandomState *p = (struct __pyx_obj_6mtrand_RandomState *)o;
-    return 0;
-  }
+static int __pyx_tp_clear_6mtrand_RandomState(PyObject *o) {
+  struct __pyx_obj_6mtrand_RandomState *p = (struct __pyx_obj_6mtrand_RandomState *)o;
+  return 0;
+}
 
-  static int __pyx_tp_clear_6mtrand_RandomState(PyObject *o) {
-    struct __pyx_obj_6mtrand_RandomState *p = (struct __pyx_obj_6mtrand_RandomState *)o;
-    return 0;
-  }
+static struct PyMethodDef __pyx_methods_6mtrand_RandomState[] = {
+  {"seed", (PyCFunction)__pyx_f_6mtrand_11RandomState_seed, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_seed},
+  {"get_state", (PyCFunction)__pyx_f_6mtrand_11RandomState_get_state, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_get_state},
+  {"set_state", (PyCFunction)__pyx_f_6mtrand_11RandomState_set_state, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_set_state},
+  {"__getstate__", (PyCFunction)__pyx_f_6mtrand_11RandomState___getstate__, METH_VARARGS|METH_KEYWORDS, 0},
+  {"__setstate__", (PyCFunction)__pyx_f_6mtrand_11RandomState___setstate__, METH_VARARGS|METH_KEYWORDS, 0},
+  {"__reduce__", (PyCFunction)__pyx_f_6mtrand_11RandomState___reduce__, METH_VARARGS|METH_KEYWORDS, 0},
+  {"random_sample", (PyCFunction)__pyx_f_6mtrand_11RandomState_random_sample, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_random_sample},
+  {"tomaxint", (PyCFunction)__pyx_f_6mtrand_11RandomState_tomaxint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_tomaxint},
+  {"randint", (PyCFunction)__pyx_f_6mtrand_11RandomState_randint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_randint},
+  {"bytes", (PyCFunction)__pyx_f_6mtrand_11RandomState_bytes, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_bytes},
+  {"uniform", (PyCFunction)__pyx_f_6mtrand_11RandomState_uniform, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_uniform},
+  {"rand", (PyCFunction)__pyx_f_6mtrand_11RandomState_rand, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_rand},
+  {"randn", (PyCFunction)__pyx_f_6mtrand_11RandomState_randn, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_randn},
+  {"random_integers", (PyCFunction)__pyx_f_6mtrand_11RandomState_random_integers, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_random_integers},
+  {"standard_normal", (PyCFunction)__pyx_f_6mtrand_11RandomState_standard_normal, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_standard_normal},
+  {"normal", (PyCFunction)__pyx_f_6mtrand_11RandomState_normal, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_normal},
+  {"beta", (PyCFunction)__pyx_f_6mtrand_11RandomState_beta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_beta},
+  {"exponential", (PyCFunction)__pyx_f_6mtrand_11RandomState_exponential, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_exponential},
+  {"standard_exponential", (PyCFunction)__pyx_f_6mtrand_11RandomState_standard_exponential, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_standard_exponential},
+  {"standard_gamma", (PyCFunction)__pyx_f_6mtrand_11RandomState_standard_gamma, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_standard_gamma},
+  {"gamma", (PyCFunction)__pyx_f_6mtrand_11RandomState_gamma, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_gamma},
+  {"f", (PyCFunction)__pyx_f_6mtrand_11RandomState_f, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_f},
+  {"noncentral_f", (PyCFunction)__pyx_f_6mtrand_11RandomState_noncentral_f, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_noncentral_f},
+  {"chisquare", (PyCFunction)__pyx_f_6mtrand_11RandomState_chisquare, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_chisquare},
+  {"noncentral_chisquare", (PyCFunction)__pyx_f_6mtrand_11RandomState_noncentral_chisquare, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_noncentral_chisquare},
+  {"standard_cauchy", (PyCFunction)__pyx_f_6mtrand_11RandomState_standard_cauchy, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_standard_cauchy},
+  {"standard_t", (PyCFunction)__pyx_f_6mtrand_11RandomState_standard_t, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_standard_t},
+  {"vonmises", (PyCFunction)__pyx_f_6mtrand_11RandomState_vonmises, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_vonmises},
+  {"pareto", (PyCFunction)__pyx_f_6mtrand_11RandomState_pareto, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_pareto},
+  {"weibull", (PyCFunction)__pyx_f_6mtrand_11RandomState_weibull, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_weibull},
+  {"power", (PyCFunction)__pyx_f_6mtrand_11RandomState_power, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_power},
+  {"laplace", (PyCFunction)__pyx_f_6mtrand_11RandomState_laplace, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_laplace},
+  {"gumbel", (PyCFunction)__pyx_f_6mtrand_11RandomState_gumbel, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_gumbel},
+  {"logistic", (PyCFunction)__pyx_f_6mtrand_11RandomState_logistic, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_logistic},
+  {"lognormal", (PyCFunction)__pyx_f_6mtrand_11RandomState_lognormal, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_lognormal},
+  {"rayleigh", (PyCFunction)__pyx_f_6mtrand_11RandomState_rayleigh, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_rayleigh},
+  {"wald", (PyCFunction)__pyx_f_6mtrand_11RandomState_wald, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_wald},
+  {"triangular", (PyCFunction)__pyx_f_6mtrand_11RandomState_triangular, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_triangular},
+  {"binomial", (PyCFunction)__pyx_f_6mtrand_11RandomState_binomial, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_binomial},
+  {"negative_binomial", (PyCFunction)__pyx_f_6mtrand_11RandomState_negative_binomial, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_negative_binomial},
+  {"poisson", (PyCFunction)__pyx_f_6mtrand_11RandomState_poisson, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_poisson},
+  {"zipf", (PyCFunction)__pyx_f_6mtrand_11RandomState_zipf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_zipf},
+  {"geometric", (PyCFunction)__pyx_f_6mtrand_11RandomState_geometric, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_geometric},
+  {"hypergeometric", (PyCFunction)__pyx_f_6mtrand_11RandomState_hypergeometric, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_hypergeometric},
+  {"logseries", (PyCFunction)__pyx_f_6mtrand_11RandomState_logseries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_logseries},
+  {"multivariate_normal", (PyCFunction)__pyx_f_6mtrand_11RandomState_multivariate_normal, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_multivariate_normal},
+  {"multinomial", (PyCFunction)__pyx_f_6mtrand_11RandomState_multinomial, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_multinomial},
+  {"shuffle", (PyCFunction)__pyx_f_6mtrand_11RandomState_shuffle, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_shuffle},
+  {"permutation", (PyCFunction)__pyx_f_6mtrand_11RandomState_permutation, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_permutation},
+  {0, 0, 0, 0}
+};
 
-  static struct PyMethodDef __pyx_methods_6mtrand_RandomState[] = {
-    {"seed", (PyCFunction)__pyx_f_6mtrand_11RandomState_seed, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_seed},
-    {"get_state", (PyCFunction)__pyx_f_6mtrand_11RandomState_get_state, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_get_state},
-    {"set_state", (PyCFunction)__pyx_f_6mtrand_11RandomState_set_state, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_set_state},
-    {"__getstate__", (PyCFunction)__pyx_f_6mtrand_11RandomState___getstate__, METH_VARARGS|METH_KEYWORDS, 0},
-    {"__setstate__", (PyCFunction)__pyx_f_6mtrand_11RandomState___setstate__, METH_VARARGS|METH_KEYWORDS, 0},
-    {"__reduce__", (PyCFunction)__pyx_f_6mtrand_11RandomState___reduce__, METH_VARARGS|METH_KEYWORDS, 0},
-    {"random_sample", (PyCFunction)__pyx_f_6mtrand_11RandomState_random_sample, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_random_sample},
-    {"tomaxint", (PyCFunction)__pyx_f_6mtrand_11RandomState_tomaxint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_tomaxint},
-    {"randint", (PyCFunction)__pyx_f_6mtrand_11RandomState_randint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_randint},
-    {"bytes", (PyCFunction)__pyx_f_6mtrand_11RandomState_bytes, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_bytes},
-    {"uniform", (PyCFunction)__pyx_f_6mtrand_11RandomState_uniform, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_uniform},
-    {"rand", (PyCFunction)__pyx_f_6mtrand_11RandomState_rand, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_rand},
-    {"randn", (PyCFunction)__pyx_f_6mtrand_11RandomState_randn, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_randn},
-    {"random_integers", (PyCFunction)__pyx_f_6mtrand_11RandomState_random_integers, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_random_integers},
-    {"standard_normal", (PyCFunction)__pyx_f_6mtrand_11RandomState_standard_normal, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_standard_normal},
-    {"normal", (PyCFunction)__pyx_f_6mtrand_11RandomState_normal, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_normal},
-    {"beta", (PyCFunction)__pyx_f_6mtrand_11RandomState_beta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_beta},
-    {"exponential", (PyCFunction)__pyx_f_6mtrand_11RandomState_exponential, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_exponential},
-    {"standard_exponential", (PyCFunction)__pyx_f_6mtrand_11RandomState_standard_exponential, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_standard_exponential},
-    {"standard_gamma", (PyCFunction)__pyx_f_6mtrand_11RandomState_standard_gamma, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_standard_gamma},
-    {"gamma", (PyCFunction)__pyx_f_6mtrand_11RandomState_gamma, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_gamma},
-    {"f", (PyCFunction)__pyx_f_6mtrand_11RandomState_f, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_f},
-    {"noncentral_f", (PyCFunction)__pyx_f_6mtrand_11RandomState_noncentral_f, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_noncentral_f},
-    {"chisquare", (PyCFunction)__pyx_f_6mtrand_11RandomState_chisquare, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_chisquare},
-    {"noncentral_chisquare", (PyCFunction)__pyx_f_6mtrand_11RandomState_noncentral_chisquare, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_noncentral_chisquare},
-    {"standard_cauchy", (PyCFunction)__pyx_f_6mtrand_11RandomState_standard_cauchy, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_standard_cauchy},
-    {"standard_t", (PyCFunction)__pyx_f_6mtrand_11RandomState_standard_t, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_standard_t},
-    {"vonmises", (PyCFunction)__pyx_f_6mtrand_11RandomState_vonmises, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_vonmises},
-    {"pareto", (PyCFunction)__pyx_f_6mtrand_11RandomState_pareto, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_pareto},
-    {"weibull", (PyCFunction)__pyx_f_6mtrand_11RandomState_weibull, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_weibull},
-    {"power", (PyCFunction)__pyx_f_6mtrand_11RandomState_power, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_power},
-    {"laplace", (PyCFunction)__pyx_f_6mtrand_11RandomState_laplace, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_laplace},
-    {"gumbel", (PyCFunction)__pyx_f_6mtrand_11RandomState_gumbel, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_gumbel},
-    {"logistic", (PyCFunction)__pyx_f_6mtrand_11RandomState_logistic, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_logistic},
-    {"lognormal", (PyCFunction)__pyx_f_6mtrand_11RandomState_lognormal, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_lognormal},
-    {"rayleigh", (PyCFunction)__pyx_f_6mtrand_11RandomState_rayleigh, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_rayleigh},
-    {"wald", (PyCFunction)__pyx_f_6mtrand_11RandomState_wald, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_wald},
-    {"triangular", (PyCFunction)__pyx_f_6mtrand_11RandomState_triangular, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_triangular},
-    {"binomial", (PyCFunction)__pyx_f_6mtrand_11RandomState_binomial, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_binomial},
-    {"negative_binomial", (PyCFunction)__pyx_f_6mtrand_11RandomState_negative_binomial, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_negative_binomial},
-    {"poisson", (PyCFunction)__pyx_f_6mtrand_11RandomState_poisson, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_poisson},
-    {"zipf", (PyCFunction)__pyx_f_6mtrand_11RandomState_zipf, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_zipf},
-    {"geometric", (PyCFunction)__pyx_f_6mtrand_11RandomState_geometric, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_geometric},
-    {"hypergeometric", (PyCFunction)__pyx_f_6mtrand_11RandomState_hypergeometric, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_hypergeometric},
-    {"logseries", (PyCFunction)__pyx_f_6mtrand_11RandomState_logseries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_logseries},
-    {"multivariate_normal", (PyCFunction)__pyx_f_6mtrand_11RandomState_multivariate_normal, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_multivariate_normal},
-    {"multinomial", (PyCFunction)__pyx_f_6mtrand_11RandomState_multinomial, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_multinomial},
-    {"shuffle", (PyCFunction)__pyx_f_6mtrand_11RandomState_shuffle, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_shuffle},
-    {"permutation", (PyCFunction)__pyx_f_6mtrand_11RandomState_permutation, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6mtrand_11RandomState_permutation},
-    {0, 0, 0, 0}
-  };
+static PyNumberMethods __pyx_tp_as_number_RandomState = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  0, /*nb_divide*/
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  0, /*nb_coerce*/
+  0, /*nb_int*/
+  0, /*nb_long*/
+  0, /*nb_float*/
+  0, /*nb_oct*/
+  0, /*nb_hex*/
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  0, /*nb_inplace_divide*/
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+};
 
-  static PyNumberMethods __pyx_tp_as_number_RandomState = {
-    0, /*nb_add*/
-    0, /*nb_subtract*/
-    0, /*nb_multiply*/
-    0, /*nb_divide*/
-    0, /*nb_remainder*/
-    0, /*nb_divmod*/
-    0, /*nb_power*/
-    0, /*nb_negative*/
-    0, /*nb_positive*/
-    0, /*nb_absolute*/
-    0, /*nb_nonzero*/
-    0, /*nb_invert*/
-    0, /*nb_lshift*/
-    0, /*nb_rshift*/
-    0, /*nb_and*/
-    0, /*nb_xor*/
-    0, /*nb_or*/
-    0, /*nb_coerce*/
-    0, /*nb_int*/
-    0, /*nb_long*/
-    0, /*nb_float*/
-    0, /*nb_oct*/
-    0, /*nb_hex*/
-    0, /*nb_inplace_add*/
-    0, /*nb_inplace_subtract*/
-    0, /*nb_inplace_multiply*/
-    0, /*nb_inplace_divide*/
-    0, /*nb_inplace_remainder*/
-    0, /*nb_inplace_power*/
-    0, /*nb_inplace_lshift*/
-    0, /*nb_inplace_rshift*/
-    0, /*nb_inplace_and*/
-    0, /*nb_inplace_xor*/
-    0, /*nb_inplace_or*/
-    0, /*nb_floor_divide*/
-    0, /*nb_true_divide*/
-    0, /*nb_inplace_floor_divide*/
-    0, /*nb_inplace_true_divide*/
-  };
+static PySequenceMethods __pyx_tp_as_sequence_RandomState = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
 
-  static PySequenceMethods __pyx_tp_as_sequence_RandomState = {
-    0, /*sq_length*/
-    0, /*sq_concat*/
-    0, /*sq_repeat*/
-    0, /*sq_item*/
-    0, /*sq_slice*/
-    0, /*sq_ass_item*/
-    0, /*sq_ass_slice*/
-    0, /*sq_contains*/
-    0, /*sq_inplace_concat*/
-    0, /*sq_inplace_repeat*/
-  };
+static PyMappingMethods __pyx_tp_as_mapping_RandomState = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
 
-  static PyMappingMethods __pyx_tp_as_mapping_RandomState = {
-    0, /*mp_length*/
-    0, /*mp_subscript*/
-    0, /*mp_ass_subscript*/
-  };
+static PyBufferProcs __pyx_tp_as_buffer_RandomState = {
+  0, /*bf_getreadbuffer*/
+  0, /*bf_getwritebuffer*/
+  0, /*bf_getsegcount*/
+  0, /*bf_getcharbuffer*/
+};
 
-  static PyBufferProcs __pyx_tp_as_buffer_RandomState = {
-    0, /*bf_getreadbuffer*/
-    0, /*bf_getwritebuffer*/
-    0, /*bf_getsegcount*/
-    0, /*bf_getcharbuffer*/
-  };
+PyTypeObject __pyx_type_6mtrand_RandomState = {
+  PyObject_HEAD_INIT(0)
+  0, /*ob_size*/
+  "mtrand.RandomState", /*tp_name*/
+  sizeof(struct __pyx_obj_6mtrand_RandomState), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_6mtrand_RandomState, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  0, /*tp_compare*/
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_RandomState, /*tp_as_number*/
+  &__pyx_tp_as_sequence_RandomState, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_RandomState, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_RandomState, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  "Container for the Mersenne Twister PRNG.\n\n    Constructor\n    -----------\n    RandomState(seed=None): initializes the PRNG with the given seed. See the\n        seed() method for details.\n\n    Distribution Methods\n    -----------------\n    RandomState exposes a number of methods for generating random numbers drawn\n    from a variety of probability distributions. In addition to the\n    distribution-specific arguments, each method takes a keyword argument\n    size=None. If size is None, then a single value is generated and returned.\n    If size is an integer, then a 1-D numpy array filled with generated values\n    is returned. If size is a tuple, then a numpy array with that shape is\n    filled and returned.\n    ", /*tp_doc*/
+  __pyx_tp_traverse_6mtrand_RandomState, /*tp_traverse*/
+  __pyx_tp_clear_6mtrand_RandomState, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_6mtrand_RandomState, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_f_6mtrand_11RandomState___init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_6mtrand_RandomState, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+};
 
-  static PyTypeObject __pyx_type_6mtrand_RandomState = {
-    PyObject_HEAD_INIT(0)
-    0, /*ob_size*/
-    "mtrand.RandomState", /*tp_name*/
-    sizeof(struct __pyx_obj_6mtrand_RandomState), /*tp_basicsize*/
-    0, /*tp_itemsize*/
-    __pyx_tp_dealloc_6mtrand_RandomState, /*tp_dealloc*/
-    0, /*tp_print*/
-    0, /*tp_getattr*/
-    0, /*tp_setattr*/
-    0, /*tp_compare*/
-    0, /*tp_repr*/
-    &__pyx_tp_as_number_RandomState, /*tp_as_number*/
-    &__pyx_tp_as_sequence_RandomState, /*tp_as_sequence*/
-    &__pyx_tp_as_mapping_RandomState, /*tp_as_mapping*/
-    0, /*tp_hash*/
-    0, /*tp_call*/
-    0, /*tp_str*/
-    0, /*tp_getattro*/
-    0, /*tp_setattro*/
-    &__pyx_tp_as_buffer_RandomState, /*tp_as_buffer*/
-    Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE, /*tp_flags*/
-    "Container for the Mersenne Twister PRNG.\n\n    Constructor\n    -----------\n    RandomState(seed=None): initializes the PRNG with the given seed. See the\n        seed() method for details.\n\n    Distribution Methods\n    -----------------\n    RandomState exposes a number of methods for generating random numbers drawn\n    from a variety of probability distributions. In addition to the\n    distribution-specific arguments, each method takes a keyword argument\n    size=None. If size is None, then a single value is generated and returned.\n    If size is an integer, then a 1-D numpy array filled with generated values\n    is returned. If size is a tuple, then a numpy array with that shape is\n    filled and returned.\n    ", /*tp_doc*/
-    __pyx_tp_traverse_6mtrand_RandomState, /*tp_traverse*/
-    __pyx_tp_clear_6mtrand_RandomState, /*tp_clear*/
-    0, /*tp_richcompare*/
-    0, /*tp_weaklistoffset*/
-    0, /*tp_iter*/
-    0, /*tp_iternext*/
-    __pyx_methods_6mtrand_RandomState, /*tp_methods*/
-    0, /*tp_members*/
-    0, /*tp_getset*/
-    0, /*tp_base*/
-    0, /*tp_dict*/
-    0, /*tp_descr_get*/
-    0, /*tp_descr_set*/
-    0, /*tp_dictoffset*/
-    __pyx_f_6mtrand_11RandomState___init__, /*tp_init*/
-    0, /*tp_alloc*/
-    __pyx_tp_new_6mtrand_RandomState, /*tp_new*/
-    0, /*tp_free*/
-    0, /*tp_is_gc*/
-    0, /*tp_bases*/
-    0, /*tp_mro*/
-    0, /*tp_cache*/
-    0, /*tp_subclasses*/
-    0, /*tp_weaklist*/
-  };
+static struct PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
 
-  static struct PyMethodDef __pyx_methods[] = {
-    {0, 0, 0, 0}
-  };
+static void __pyx_init_filenames(void); /*proto*/
 
-  DL_EXPORT(void) initmtrand(void); /*proto*/
-  DL_EXPORT(void) initmtrand(void) {
-    PyObject *__pyx_1 = 0;
-    PyObject *__pyx_2 = 0;
-    __pyx_f = __Pyx_FileNames();
-    __pyx_m = Py_InitModule4("mtrand", __pyx_methods, 0, 0, PYTHON_API_VERSION);
-    if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;};
-    __pyx_b = PyImport_AddModule("__builtin__");
-    if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;};
-    if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;};
-    if (__Pyx_InternStrings(__pyx_intern_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;};
-    if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;};
-    __pyx_ptype_6mtrand_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr)); if (!__pyx_ptype_6mtrand_dtype) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; goto __pyx_L1;}
-    __pyx_ptype_6mtrand_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject)); if (!__pyx_ptype_6mtrand_ndarray) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; goto __pyx_L1;}
-    if (PyType_Ready(&__pyx_type_6mtrand_RandomState) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; goto __pyx_L1;}
-    if (PyObject_SetAttrString(__pyx_m, "RandomState", (PyObject *)&__pyx_type_6mtrand_RandomState) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; goto __pyx_L1;}
-    __pyx_ptype_6mtrand_RandomState = &__pyx_type_6mtrand_RandomState;
+PyMODINIT_FUNC initmtrand(void); /*proto*/
+PyMODINIT_FUNC initmtrand(void) {
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  PyObject *__pyx_5 = 0;
+  PyObject *__pyx_6 = 0;
+  PyObject *__pyx_7 = 0;
+  PyObject *__pyx_8 = 0;
+  PyObject *__pyx_9 = 0;
+  PyObject *__pyx_10 = 0;
+  PyObject *__pyx_11 = 0;
+  PyObject *__pyx_12 = 0;
+  PyObject *__pyx_13 = 0;
+  PyObject *__pyx_14 = 0;
+  PyObject *__pyx_15 = 0;
+  PyObject *__pyx_16 = 0;
+  PyObject *__pyx_17 = 0;
+  PyObject *__pyx_18 = 0;
+  __pyx_init_filenames();
+  __pyx_m = Py_InitModule4("mtrand", __pyx_methods, 0, 0, PYTHON_API_VERSION);
+  if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;};
+  __pyx_b = PyImport_AddModule("__builtin__");
+  if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;};
+  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;};
+  if (__Pyx_InternStrings(__pyx_intern_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;};
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;};
+  __pyx_ptype_6mtrand_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr)); if (!__pyx_ptype_6mtrand_dtype) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 74; goto __pyx_L1;}
+  __pyx_ptype_6mtrand_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject)); if (!__pyx_ptype_6mtrand_ndarray) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 79; goto __pyx_L1;}
+  __pyx_ptype_6mtrand_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject)); if (!__pyx_ptype_6mtrand_flatiter) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 88; goto __pyx_L1;}
+  __pyx_ptype_6mtrand_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject)); if (!__pyx_ptype_6mtrand_broadcast) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 94; goto __pyx_L1;}
+  if (PyType_Ready(&__pyx_type_6mtrand_RandomState) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; goto __pyx_L1;}
+  if (PyObject_SetAttrString(__pyx_m, "RandomState", (PyObject *)&__pyx_type_6mtrand_RandomState) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; goto __pyx_L1;}
+  __pyx_ptype_6mtrand_RandomState = &__pyx_type_6mtrand_RandomState;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":118 */
-    import_array();
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":118 */
+  import_array();
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":120 */
-    __pyx_1 = __Pyx_Import(__pyx_n_numpy, 0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; goto __pyx_L1;}
-    if (PyObject_SetAttr(__pyx_m, __pyx_n__sp, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":120 */
+  __pyx_1 = __Pyx_Import(__pyx_n_numpy, 0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; goto __pyx_L1;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n__sp, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":286 */
-    Py_INCREF(Py_None);
-    __pyx_k2 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":474 */
+  Py_INCREF(Py_None);
+  __pyx_k2 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":296 */
-    Py_INCREF(Py_None);
-    __pyx_k3 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":484 */
+  Py_INCREF(Py_None);
+  __pyx_k3 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":357 */
-    Py_INCREF(Py_None);
-    __pyx_k4 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":545 */
+  Py_INCREF(Py_None);
+  __pyx_k4 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":364 */
-    Py_INCREF(Py_None);
-    __pyx_k5 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":552 */
+  Py_INCREF(Py_None);
+  __pyx_k5 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":371 */
-    Py_INCREF(Py_None);
-    __pyx_k6 = Py_None;
-    Py_INCREF(Py_None);
-    __pyx_k7 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":559 */
+  Py_INCREF(Py_None);
+  __pyx_k6 = Py_None;
+  Py_INCREF(Py_None);
+  __pyx_k7 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":417 */
-    __pyx_k8 = 0.0;
-    __pyx_k9 = 1.0;
-    Py_INCREF(Py_None);
-    __pyx_k10 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":605 */
+  __pyx_1 = PyFloat_FromDouble(0.0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; goto __pyx_L1;}
+  __pyx_k8 = __pyx_1;
+  __pyx_1 = 0;
+  __pyx_2 = PyFloat_FromDouble(1.0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; goto __pyx_L1;}
+  __pyx_k9 = __pyx_2;
+  __pyx_2 = 0;
+  Py_INCREF(Py_None);
+  __pyx_k10 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":456 */
-    Py_INCREF(Py_None);
-    __pyx_k11 = Py_None;
-    Py_INCREF(Py_None);
-    __pyx_k12 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":649 */
+  Py_INCREF(Py_None);
+  __pyx_k11 = Py_None;
+  Py_INCREF(Py_None);
+  __pyx_k12 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":469 */
-    Py_INCREF(Py_None);
-    __pyx_k13 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":662 */
+  Py_INCREF(Py_None);
+  __pyx_k13 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":476 */
-    __pyx_k14 = 0.0;
-    __pyx_k15 = 1.0;
-    Py_INCREF(Py_None);
-    __pyx_k16 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":669 */
+  __pyx_3 = PyFloat_FromDouble(0.0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; goto __pyx_L1;}
+  __pyx_k14 = __pyx_3;
+  __pyx_3 = 0;
+  __pyx_4 = PyFloat_FromDouble(1.0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; goto __pyx_L1;}
+  __pyx_k15 = __pyx_4;
+  __pyx_4 = 0;
+  Py_INCREF(Py_None);
+  __pyx_k16 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":485 */
-    Py_INCREF(Py_None);
-    __pyx_k17 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":682 */
+  Py_INCREF(Py_None);
+  __pyx_k17 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":496 */
-    __pyx_k18 = 1.0;
-    Py_INCREF(Py_None);
-    __pyx_k19 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":698 */
+  __pyx_5 = PyFloat_FromDouble(1.0); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; goto __pyx_L1;}
+  __pyx_k18 = __pyx_5;
+  __pyx_5 = 0;
+  Py_INCREF(Py_None);
+  __pyx_k19 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":505 */
-    Py_INCREF(Py_None);
-    __pyx_k20 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":709 */
+  Py_INCREF(Py_None);
+  __pyx_k20 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":512 */
-    Py_INCREF(Py_None);
-    __pyx_k21 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":716 */
+  Py_INCREF(Py_None);
+  __pyx_k21 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":521 */
-    __pyx_k22 = 1.0;
-    Py_INCREF(Py_None);
-    __pyx_k23 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":727 */
+  __pyx_6 = PyFloat_FromDouble(1.0); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; goto __pyx_L1;}
+  __pyx_k22 = __pyx_6;
+  __pyx_6 = 0;
+  Py_INCREF(Py_None);
+  __pyx_k23 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":532 */
-    Py_INCREF(Py_None);
-    __pyx_k24 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":742 */
+  Py_INCREF(Py_None);
+  __pyx_k24 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":543 */
-    Py_INCREF(Py_None);
-    __pyx_k25 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":757 */
+  Py_INCREF(Py_None);
+  __pyx_k25 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":557 */
-    Py_INCREF(Py_None);
-    __pyx_k26 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":778 */
+  Py_INCREF(Py_None);
+  __pyx_k26 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":566 */
-    Py_INCREF(Py_None);
-    __pyx_k27 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":789 */
+  Py_INCREF(Py_None);
+  __pyx_k27 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":578 */
-    Py_INCREF(Py_None);
-    __pyx_k28 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":805 */
+  Py_INCREF(Py_None);
+  __pyx_k28 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":585 */
-    Py_INCREF(Py_None);
-    __pyx_k29 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":812 */
+  Py_INCREF(Py_None);
+  __pyx_k29 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":594 */
-    Py_INCREF(Py_None);
-    __pyx_k30 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":823 */
+  Py_INCREF(Py_None);
+  __pyx_k30 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":604 */
-    Py_INCREF(Py_None);
-    __pyx_k31 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":837 */
+  Py_INCREF(Py_None);
+  __pyx_k31 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":613 */
-    Py_INCREF(Py_None);
-    __pyx_k32 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":848 */
+  Py_INCREF(Py_None);
+  __pyx_k32 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":622 */
-    Py_INCREF(Py_None);
-    __pyx_k33 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":859 */
+  Py_INCREF(Py_None);
+  __pyx_k33 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":631 */
-    __pyx_k34 = 0.0;
-    __pyx_k35 = 1.0;
-    Py_INCREF(Py_None);
-    __pyx_k36 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":870 */
+  __pyx_7 = PyFloat_FromDouble(0.0); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; goto __pyx_L1;}
+  __pyx_k34 = __pyx_7;
+  __pyx_7 = 0;
+  __pyx_8 = PyFloat_FromDouble(1.0); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; goto __pyx_L1;}
+  __pyx_k35 = __pyx_8;
+  __pyx_8 = 0;
+  Py_INCREF(Py_None);
+  __pyx_k36 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":640 */
-    __pyx_k37 = 0.0;
-    __pyx_k38 = 1.0;
-    Py_INCREF(Py_None);
-    __pyx_k39 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":883 */
+  __pyx_9 = PyFloat_FromDouble(0.0); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; goto __pyx_L1;}
+  __pyx_k37 = __pyx_9;
+  __pyx_9 = 0;
+  __pyx_10 = PyFloat_FromDouble(1.0); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; goto __pyx_L1;}
+  __pyx_k38 = __pyx_10;
+  __pyx_10 = 0;
+  Py_INCREF(Py_None);
+  __pyx_k39 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":649 */
-    __pyx_k40 = 0.0;
-    __pyx_k41 = 1.0;
-    Py_INCREF(Py_None);
-    __pyx_k42 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":896 */
+  __pyx_11 = PyFloat_FromDouble(0.0); if (!__pyx_11) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; goto __pyx_L1;}
+  __pyx_k40 = __pyx_11;
+  __pyx_11 = 0;
+  __pyx_12 = PyFloat_FromDouble(1.0); if (!__pyx_12) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; goto __pyx_L1;}
+  __pyx_k41 = __pyx_12;
+  __pyx_12 = 0;
+  Py_INCREF(Py_None);
+  __pyx_k42 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":658 */
-    __pyx_k43 = 0.0;
-    __pyx_k44 = 1.0;
-    Py_INCREF(Py_None);
-    __pyx_k45 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":909 */
+  __pyx_13 = PyFloat_FromDouble(0.0); if (!__pyx_13) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 909; goto __pyx_L1;}
+  __pyx_k43 = __pyx_13;
+  __pyx_13 = 0;
+  __pyx_14 = PyFloat_FromDouble(1.0); if (!__pyx_14) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 909; goto __pyx_L1;}
+  __pyx_k44 = __pyx_14;
+  __pyx_14 = 0;
+  Py_INCREF(Py_None);
+  __pyx_k45 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":672 */
-    __pyx_k46 = 1.0;
-    Py_INCREF(Py_None);
-    __pyx_k47 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":927 */
+  __pyx_15 = PyFloat_FromDouble(1.0); if (!__pyx_15) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; goto __pyx_L1;}
+  __pyx_k46 = __pyx_15;
+  __pyx_15 = 0;
+  Py_INCREF(Py_None);
+  __pyx_k47 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":681 */
-    Py_INCREF(Py_None);
-    __pyx_k48 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":938 */
+  Py_INCREF(Py_None);
+  __pyx_k48 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":692 */
-    Py_INCREF(Py_None);
-    __pyx_k49 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":953 */
+  Py_INCREF(Py_None);
+  __pyx_k49 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":708 */
-    Py_INCREF(Py_None);
-    __pyx_k50 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":976 */
+  Py_INCREF(Py_None);
+  __pyx_k50 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":721 */
-    Py_INCREF(Py_None);
-    __pyx_k51 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":993 */
+  Py_INCREF(Py_None);
+  __pyx_k51 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":735 */
-    __pyx_k52 = 1.0;
-    Py_INCREF(Py_None);
-    __pyx_k53 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1011 */
+  __pyx_16 = PyFloat_FromDouble(1.0); if (!__pyx_16) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; goto __pyx_L1;}
+  __pyx_k52 = __pyx_16;
+  __pyx_16 = 0;
+  Py_INCREF(Py_None);
+  __pyx_k53 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":744 */
-    Py_INCREF(Py_None);
-    __pyx_k54 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1022 */
+  Py_INCREF(Py_None);
+  __pyx_k54 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":753 */
-    Py_INCREF(Py_None);
-    __pyx_k55 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1033 */
+  Py_INCREF(Py_None);
+  __pyx_k55 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":765 */
-    Py_INCREF(Py_None);
-    __pyx_k56 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1047 */
+  Py_INCREF(Py_None);
+  __pyx_k56 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":786 */
-    Py_INCREF(Py_None);
-    __pyx_k57 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1075 */
+  Py_INCREF(Py_None);
+  __pyx_k57 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":798 */
-    Py_INCREF(Py_None);
-    __pyx_k58 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1089 */
+  Py_INCREF(Py_None);
+  __pyx_k58 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":856 */
-    Py_INCREF(Py_None);
-    __pyx_k59 = Py_None;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1147 */
+  Py_INCREF(Py_None);
+  __pyx_k59 = Py_None;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":934 */
-    __pyx_1 = PyTuple_New(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; goto __pyx_L1;}
-    __pyx_2 = PyObject_CallObject(((PyObject*)__pyx_ptype_6mtrand_RandomState), __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n__rand, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1225 */
+  __pyx_17 = PyTuple_New(0); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1225; goto __pyx_L1;}
+  __pyx_18 = PyObject_CallObject(((PyObject*)__pyx_ptype_6mtrand_RandomState), __pyx_17); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1225; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n__rand, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1225; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":935 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_seed); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_seed, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1226 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1226; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_seed); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1226; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_seed, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1226; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":936 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_get_state); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_get_state, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1227 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1227; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_get_state); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1227; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_get_state, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1227; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":937 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_set_state); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_set_state, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1228 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1228; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_set_state); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1228; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_set_state, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1228; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":938 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_random_sample); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_random_sample, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1229 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_random_sample); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_random_sample, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":939 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_randint); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_randint, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1230 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_randint); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_randint, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":940 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_bytes); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_bytes, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1231 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1231; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_bytes); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1231; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_bytes, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1231; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":941 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_uniform); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_uniform, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1232 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_uniform); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_uniform, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":942 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_rand); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_rand, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1233 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1233; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_rand); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1233; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_rand, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1233; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":943 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_randn); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_randn, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1234 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1234; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_randn); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1234; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_randn, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1234; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":944 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_random_integers); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_random_integers, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1235 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_random_integers); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_random_integers, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":945 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_standard_normal); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_standard_normal, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1236 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_standard_normal); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_standard_normal, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":946 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_normal); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_normal, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1237 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1237; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_normal); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1237; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_normal, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1237; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":947 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_beta); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_beta, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1238 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_beta); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_beta, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":948 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_exponential); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_exponential, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1239 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1239; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_exponential); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1239; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_exponential, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1239; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":949 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_standard_exponential); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_standard_exponential, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1240 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1240; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_standard_exponential); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1240; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_standard_exponential, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1240; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":950 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_standard_gamma); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_standard_gamma, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1241 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_standard_gamma); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_standard_gamma, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":951 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_gamma); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_gamma, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1242 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1242; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_gamma); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1242; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_gamma, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1242; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":952 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_f); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_f, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1243 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_f); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_f, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":953 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_noncentral_f); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_noncentral_f, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1244 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_noncentral_f); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_noncentral_f, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":954 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 954; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_chisquare); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 954; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_chisquare, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 954; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1245 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1245; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_chisquare); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1245; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_chisquare, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1245; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":955 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_noncentral_chisquare); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_noncentral_chisquare, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1246 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_noncentral_chisquare); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_noncentral_chisquare, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":956 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_standard_cauchy); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_standard_cauchy, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1247 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1247; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_standard_cauchy); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1247; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_standard_cauchy, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1247; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":957 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_standard_t); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_standard_t, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1248 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_standard_t); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_standard_t, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":958 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_vonmises); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_vonmises, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1249 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_vonmises); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_vonmises, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":959 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 959; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_pareto); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 959; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_pareto, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 959; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1250 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1250; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_pareto); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1250; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_pareto, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1250; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":960 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_weibull); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_weibull, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1251 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_weibull); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_weibull, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":961 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_power); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_power, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1252 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_power); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_power, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":962 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_laplace); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_laplace, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1253 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_laplace); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_laplace, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":963 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_gumbel); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_gumbel, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1254 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_gumbel); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_gumbel, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":964 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_logistic); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_logistic, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1255 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_logistic); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_logistic, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":965 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_lognormal); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_lognormal, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1256 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1256; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_lognormal); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1256; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_lognormal, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1256; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":966 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_rayleigh); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_rayleigh, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1257 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_rayleigh); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_rayleigh, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":967 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_wald); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_wald, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1258 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1258; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_wald); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1258; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_wald, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1258; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":968 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_triangular); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_triangular, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1259 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_triangular); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_triangular, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":970 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_binomial); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_binomial, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1261 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_binomial); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_binomial, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":971 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_negative_binomial); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_negative_binomial, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1262 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_negative_binomial); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_negative_binomial, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":972 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_poisson); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_poisson, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1263 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_poisson); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_poisson, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":973 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_zipf); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_zipf, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1264 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_zipf); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_zipf, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":974 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_geometric); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_geometric, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1265 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_geometric); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_geometric, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":975 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_hypergeometric); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_hypergeometric, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1266 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1266; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_hypergeometric); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1266; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_hypergeometric, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1266; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":976 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_logseries); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_logseries, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1267 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_logseries); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_logseries, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":978 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_multivariate_normal); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_multivariate_normal, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1269 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_multivariate_normal); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_multivariate_normal, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":979 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_multinomial); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_multinomial, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1270 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_multinomial); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_multinomial, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":981 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_shuffle); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_shuffle, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1272 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_shuffle); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_shuffle, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
 
-    /* "/Users/kern/svn/numpy/numpy/random/mtrand/mtrand.pyx":982 */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; goto __pyx_L1;}
-    __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_permutation); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; goto __pyx_L1;}
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
-    if (PyObject_SetAttr(__pyx_m, __pyx_n_permutation, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; goto __pyx_L1;}
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
-    return;
-    __pyx_L1:;
-    Py_XDECREF(__pyx_1);
-    Py_XDECREF(__pyx_2);
-    __Pyx_AddTraceback("mtrand");
-  }
+  /* "/home/oliphant/numpy/numpy/random/mtrand/mtrand.pyx":1273 */
+  __pyx_17 = __Pyx_GetName(__pyx_m, __pyx_n__rand); if (!__pyx_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; goto __pyx_L1;}
+  __pyx_18 = PyObject_GetAttr(__pyx_17, __pyx_n_permutation); if (!__pyx_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; goto __pyx_L1;}
+  Py_DECREF(__pyx_17); __pyx_17 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_permutation, __pyx_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; goto __pyx_L1;}
+  Py_DECREF(__pyx_18); __pyx_18 = 0;
+  return;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  Py_XDECREF(__pyx_5);
+  Py_XDECREF(__pyx_6);
+  Py_XDECREF(__pyx_7);
+  Py_XDECREF(__pyx_8);
+  Py_XDECREF(__pyx_9);
+  Py_XDECREF(__pyx_10);
+  Py_XDECREF(__pyx_11);
+  Py_XDECREF(__pyx_12);
+  Py_XDECREF(__pyx_13);
+  Py_XDECREF(__pyx_14);
+  Py_XDECREF(__pyx_15);
+  Py_XDECREF(__pyx_16);
+  Py_XDECREF(__pyx_17);
+  Py_XDECREF(__pyx_18);
+  __Pyx_AddTraceback("mtrand");
+}
 
-  #ifdef __cplusplus
-} // extern "C"
-#endif
+static char *__pyx_filenames[] = {
+  "mtrand.pyx",
+  "numpy.pxi",
+};
 
 /* Runtime support code */
 
-static char **__Pyx_FileNames(void) {
-  static char *filenames[] = {
-    "mtrand.pyx",
-    "numpy.pxi",
-  };
-  return filenames;
+static void __pyx_init_filenames(void) {
+  __pyx_f = __pyx_filenames;
 }
 
 static int __Pyx_GetStarArgs(
@@ -5793,17 +8512,6 @@
     return result;
 }
 
-static void __Pyx_WriteUnraisable(char *name) {
-    PyObject *old_exc, *old_val, *old_tb;
-    PyObject *ctx;
-    PyErr_Fetch(&old_exc, &old_val, &old_tb);
-    ctx = PyString_FromString(name);
-    PyErr_Restore(old_exc, old_val, old_tb);
-    if (!ctx)
-        ctx = Py_None;
-    PyErr_WriteUnraisable(ctx);
-}
-
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb) {
     Py_XINCREF(type);
     Py_XINCREF(value);
@@ -5866,6 +8574,17 @@
     return;
 }
 
+static void __Pyx_WriteUnraisable(char *name) {
+    PyObject *old_exc, *old_val, *old_tb;
+    PyObject *ctx;
+    PyErr_Fetch(&old_exc, &old_val, &old_tb);
+    ctx = PyString_FromString(name);
+    PyErr_Restore(old_exc, old_val, old_tb);
+    if (!ctx)
+        ctx = Py_None;
+    PyErr_WriteUnraisable(ctx);
+}
+
 static void __Pyx_UnpackError(void) {
     PyErr_SetString(PyExc_ValueError, "unpack sequence of wrong size");
 }
@@ -5890,6 +8609,18 @@
     return 0;
 }
 
+static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (obj == Py_None || PyObject_TypeCheck(obj, type))
+        return 1;
+    PyErr_Format(PyExc_TypeError, "Cannot convert %s to %s",
+        obj->ob_type->tp_name, type->tp_name);
+    return 0;
+}
+
 static int __Pyx_InternStrings(__Pyx_InternTabEntry *t) {
     while (t->p) {
         *t->p = PyString_InternFromString(t->s);

Modified: branches/ver1.0/numpy/random/mtrand/mtrand.pyx
===================================================================
--- branches/ver1.0/numpy/random/mtrand/mtrand.pyx	2006-07-25 17:17:08 UTC (rev 2891)
+++ branches/ver1.0/numpy/random/mtrand/mtrand.pyx	2006-07-25 22:06:02 UTC (rev 2892)
@@ -135,56 +135,149 @@
             array_data[i] = func(state)
         return array
 
-cdef object cont1_array(rk_state *state, rk_cont1 func, object size, double a):
+cdef object cont1_array(rk_state *state, rk_cont1 func, object size, ndarray oa):
     cdef double *array_data
+    cdef double *oa_data
     cdef ndarray array "arrayObject"
-    cdef long length
-    cdef long i
+    cdef npy_intp length
+    cdef npy_intp i
+    cdef flatiter itera
+    cdef broadcast multi
+    cdef int scalar
 
+    scalar = 0
+    if oa.nd == 0:
+        oa_data = <double *>oa.data
+        scalar = 1
+
     if size is None:
-        return func(state, a)
+        if scalar:
+            return func(state, oa_data[0])
+        else:
+            array = <ndarray>PyArray_SimpleNew(oa.nd, oa.dimensions, NPY_DOUBLE)
+            length = PyArray_SIZE(array)
+            array_data = <double *>array.data
+            itera = <flatiter>PyArray_IterNew(<object>oa)
+            for i from 0 <= i < length:
+                array_data[i] = func(state, (<double *>(itera.dataptr))[0])
+                PyArray_ITER_NEXT(itera)
     else:
         array = <ndarray>_sp.empty(size, _sp.float64)
-        length = PyArray_SIZE(array)
         array_data = <double *>array.data
-        for i from 0 <= i < length:
-            array_data[i] = func(state, a)
-        return array
+        if scalar:
+            length = PyArray_SIZE(array)
+            for i from 0 <= i < length:
+                array_data[i] = func(state, oa_data[0])
+        else:
+            multi = <broadcast>PyArray_MultiIterNew(2, <void *>array, <void *>oa)
+            if (multi.size != PyArray_SIZE(array)): 
+                raise ValueError("size is not compatible with inputs")                
+            for i from 0 <= i < multi.size:
+                oa_data = <double *>PyArray_MultiIter_DATA(multi, 1)
+                array_data[i] = func(state, oa_data[0])
+                PyArray_MultiIter_NEXTi(multi, 1)
+    return array
 
-cdef object cont2_array(rk_state *state, rk_cont2 func, object size, double a, 
-    double b):
+cdef object cont2_array(rk_state *state, rk_cont2 func, object size, ndarray oa, 
+    ndarray ob):
     cdef double *array_data
+    cdef double *oa_data
+    cdef double *ob_data
     cdef ndarray array "arrayObject"
-    cdef long length
-    cdef long i
+    cdef npy_intp length
+    cdef npy_intp i
+    cdef broadcast multi
+    cdef int scalar
 
+    scalar = 0
+    if oa.nd == 0 and ob.nd == 0:
+        oa_data = <double *>oa.data
+        ob_data = <double *>ob.data
+        scalar = 1
+        
     if size is None:
-        return func(state, a, b)
+        if scalar:
+            return func(state, oa_data[0], ob_data[0])
+        else:
+            multi = <broadcast> PyArray_MultiIterNew(2, <void *>oa, <void *>ob)
+            array = <ndarray> PyArray_SimpleNew(multi.nd, multi.dimensions, NPY_DOUBLE)
+            array_data = <double *>array.data
+            for i from 0 <= i < multi.size:
+                oa_data = <double *>PyArray_MultiIter_DATA(multi, 0)
+                ob_data = <double *>PyArray_MultiIter_DATA(multi, 1)
+                array_data[i] = func(state, oa_data[0], ob_data[0])
+                PyArray_MultiIter_NEXT(multi)
     else:
         array = <ndarray>_sp.empty(size, _sp.float64)
-        length = PyArray_SIZE(array)
         array_data = <double *>array.data
-        for i from 0 <= i < length:
-            array_data[i] = func(state, a, b)
-        return array
+        if scalar:
+            length = PyArray_SIZE(array)
+            for i from 0 <= i < length:
+                array_data[i] = func(state, oa_data[0], ob_data[0])
+        else:
+            multi = <broadcast>PyArray_MultiIterNew(3, <void*>array, <void *>oa, <void *>ob)
+            if (multi.size != PyArray_SIZE(array)):
+                raise ValueError("size is not compatible with inputs")                 
+            for i from 0 <= i < multi.size:
+                oa_data = <double *>PyArray_MultiIter_DATA(multi, 1)
+                ob_data = <double *>PyArray_MultiIter_DATA(multi, 2)
+                array_data[i] = func(state, oa_data[0], ob_data[0])
+                PyArray_MultiIter_NEXTi(multi, 1)
+                PyArray_MultiIter_NEXTi(multi, 2)
+    return array
 
-cdef object cont3_array(rk_state *state, rk_cont3 func, object size, double a, 
-    double b, double c):
+cdef object cont3_array(rk_state *state, rk_cont3 func, object size, ndarray oa, 
+    ndarray ob, ndarray oc):
 
     cdef double *array_data
+    cdef double *oa_data
+    cdef double *ob_data
+    cdef double *oc_data
     cdef ndarray array "arrayObject"
-    cdef long length
-    cdef long i
-    
+    cdef npy_intp length
+    cdef npy_intp i
+    cdef broadcast multi
+    cdef int scalar
+
+    scalar = 0
+    if (oa.nd ==0 and ob.nd==0 and oc.nd == 0):
+        oa_data = <double *>oa.data
+        ob_data = <double *>ob.data
+        oc_data = <double *>oc.data
+        scalar = 1
+        
     if size is None:
-        return func(state, a, b, c)
+        if scalar:
+            return func(state, oa_data[0], ob_data[0], oc_data[0])
+        else:
+            multi = <broadcast> PyArray_MultiIterNew(3, <void *>oa, <void *>ob, <void *>oc)
+            array = <ndarray> PyArray_SimpleNew(multi.nd, multi.dimensions, NPY_DOUBLE)
+            array_data = <double *>array.data
+            for i from 0 <= i < multi.size:
+                oa_data = <double *>PyArray_MultiIter_DATA(multi, 0)
+                ob_data = <double *>PyArray_MultiIter_DATA(multi, 1)
+                oc_data = <double *>PyArray_MultiIter_DATA(multi, 2)
+                array_data[i] = func(state, oa_data[0], ob_data[0], oc_data[0])
+                PyArray_MultiIter_NEXT(multi)
     else:
         array = <ndarray>_sp.empty(size, _sp.float64)
-        length = PyArray_SIZE(array)
-        array_data = <double *>array.data
-        for i from 0 <= i < length:
-            array_data[i] = func(state, a, b, c)
-        return array
+        array_data = <double *>array.data        
+        if scalar:
+            length = PyArray_SIZE(array)
+            for i from 0 <= i < length:
+                array_data[i] = func(state, oa_data[0], ob_data[0], oc_data[0])
+        else:
+            multi = <broadcast>PyArray_MultiIterNew(4, <void*>array, <void *>oa,
+                                                    <void *>ob, <void *>oc)
+            if (multi.size != PyArray_SIZE(array)):
+                raise ValueError("size is not compatible with inputs")                 
+            for i from 0 <= i < multi.size:
+                oa_data = <double *>PyArray_MultiIter_DATA(multi, 1)
+                ob_data = <double *>PyArray_MultiIter_DATA(multi, 2)
+                oc_data = <double *>PyArray_MultiIter_DATA(multi, 3)
+                array_data[i] = func(state, oa_data[0], ob_data[0], oc_data[0])
+                PyArray_MultiIter_NEXT(multi)                
+    return array
 
 cdef object disc0_array(rk_state *state, rk_disc0 func, object size):
     cdef long *array_data
@@ -202,54 +295,149 @@
             array_data[i] = func(state)
         return array
 
-cdef object discnp_array(rk_state *state, rk_discnp func, object size, long n, double p):
+cdef object discnp_array(rk_state *state, rk_discnp func, object size, ndarray on, ndarray op):
     cdef long *array_data
     cdef ndarray array "arrayObject"
-    cdef long length
-    cdef long i
+    cdef npy_intp length
+    cdef npy_intp i
+    cdef double *op_data
+    cdef long *on_data
+    cdef int scalar
+    cdef broadcast multi
 
+    scalar = 0
+    if (on.nd == 0 and op.nd == 0):
+        on_data = <long *>on.data
+        op_data = <double *>op.data
+        scalar = 1
+        
     if size is None:
-        return func(state, n, p)
+        if (scalar):
+            return func(state, on_data[0], op_data[0])
+        else:
+            multi = <broadcast> PyArray_MultiIterNew(2, <void *>on, <void *>op)
+            array = <ndarray> PyArray_SimpleNew(multi.nd, multi.dimensions, NPY_LONG)
+            array_data = <long *>array.data
+            for i from 0 <= i < multi.size:
+                on_data = <long *>PyArray_MultiIter_DATA(multi, 0)
+                op_data = <double *>PyArray_MultiIter_DATA(multi, 1)
+                array_data[i] = func(state, on_data[0], op_data[0])
+                PyArray_MultiIter_NEXT(multi)
     else:
-        array = <ndarray>_sp.empty(size, int)
-        length = PyArray_SIZE(array)
-        array_data = <long *>array.data
-        for i from 0 <= i < length:
-            array_data[i] = func(state, n, p)
-        return array
+        array = <ndarray>_sp.empty(size, int)        
+        if (scalar):
+            length = PyArray_SIZE(array)
+            array_data = <long *>array.data
+            for i from 0 <= i < length:
+                array_data[i] = func(state, on_data[0], op_data[0])
+        else:
+            multi = <broadcast>PyArray_MultiIterNew(3, <void*>array, <void *>on, <void *>op)
+            if (multi.size != PyArray_SIZE(array)):
+                raise ValueError("size is not compatible with inputs")                 
+            for i from 0 <= i < multi.size:
+                on_data = <long *>PyArray_MultiIter_DATA(multi, 1)
+                op_data = <double *>PyArray_MultiIter_DATA(multi, 2)
+                array_data[i] = func(state, on_data[0], op_data[0])
+                PyArray_MultiIter_NEXTi(multi, 1)
+                PyArray_MultiIter_NEXTi(multi, 2)
+            
+    return array
 
 cdef object discnmN_array(rk_state *state, rk_discnmN func, object size, 
-    long n, long m, long N):
+    ndarray on, ndarray om, ndarray oN):
     cdef long *array_data
+    cdef long *on_data
+    cdef long *om_data
+    cdef long *oN_data
     cdef ndarray array "arrayObject"
-    cdef long length
-    cdef long i
+    cdef npy_intp length
+    cdef npy_intp i
+    cdef broadcast multi
+    cdef int scalar
 
+    scalar = 0
+    if (on.nd == 0 and om.nd == 0 and oN.nd==0):
+        scalar = 1
+        on_data = <long *>on.data
+        om_data = <long *>om.data
+        oN_data = <long *>oN.data        
+
     if size is None:
-        return func(state, n, m, N)
+        if (scalar):
+            return func(state, on_data[0], om_data[0], oN_data[0])
+        else:
+            multi = <broadcast> PyArray_MultiIterNew(3, <void *>on, <void *>om, <void *>oN)
+            array = <ndarray> PyArray_SimpleNew(multi.nd, multi.dimensions, NPY_LONG)
+            array_data = <long *>array.data
+            for i from 0 <= i < multi.size:
+                on_data = <long *>PyArray_MultiIter_DATA(multi, 0)
+                om_data = <long *>PyArray_MultiIter_DATA(multi, 1)
+                oN_data = <long *>PyArray_MultiIter_DATA(multi, 2)                
+                array_data[i] = func(state, on_data[0], om_data[0], oN_data[0])
+                PyArray_MultiIter_NEXT(multi)
     else:
         array = <ndarray>_sp.empty(size, int)
-        length = PyArray_SIZE(array)
         array_data = <long *>array.data
-        for i from 0 <= i < length:
-            array_data[i] = func(state, n, m, N)
-        return array
+        if (scalar):
+            length = PyArray_SIZE(array)
+            for i from 0 <= i < length:
+                array_data[i] = func(state, on_data[0], om_data[0], oN_data[0])
+        else:
+            multi = <broadcast>PyArray_MultiIterNew(4, <void*>array, <void *>on, <void *>om,
+                                                    <void *>oN)
+            if (multi.size != PyArray_SIZE(array)):
+                raise ValueError("size is not compatible with inputs") 
+            for i from 0 <= i < multi.size:
+                on_data = <long *>PyArray_MultiIter_DATA(multi, 1)
+                om_data = <long *>PyArray_MultiIter_DATA(multi, 2)
+                oN_data = <long *>PyArray_MultiIter_DATA(multi, 3)
+                array_data[i] = func(state, on_data[0], om_data[0], oN_data[0])
+                PyArray_MultiIter_NEXT(multi)
 
-cdef object discd_array(rk_state *state, rk_discd func, object size, double a):
+    return array
+
+cdef object discd_array(rk_state *state, rk_discd func, object size, ndarray oa):
     cdef long *array_data
+    cdef double *oa_data
     cdef ndarray array "arrayObject"
-    cdef long length
-    cdef long i
+    cdef npy_intp length
+    cdef npy_intp i
+    cdef broadcast multi
+    cdef flatiter itera
+    cdef int scalar 
 
+    scalar = 0
+    if (oa.nd == 0):
+        oa_data = <double *>oa.data
+        scalar =1
+
     if size is None:
-        return func(state, a)
+        if (scalar):
+            return func(state, oa_data[0])
+        else:
+            array = <ndarray>PyArray_SimpleNew(oa.nd, oa.dimensions, NPY_LONG)
+            length = PyArray_SIZE(array)
+            array_data = <long *>array.data
+            itera = <flatiter>PyArray_IterNew(<object>oa)
+            for i from 0 <= i < length:
+                array_data[i] = func(state, (<double *>(itera.dataptr))[0])
+                PyArray_ITER_NEXT(itera)
     else:
         array = <ndarray>_sp.empty(size, int)
-        length = PyArray_SIZE(array)
         array_data = <long *>array.data
-        for i from 0 <= i < length:
-            array_data[i] = func(state, a)
-        return array
+        if (scalar):
+            length = PyArray_SIZE(array)
+            for i from 0 <= i < length:
+                array_data[i] = func(state, oa_data[0])
+        else:
+            multi = <broadcast>PyArray_MultiIterNew(2, <void *>array, <void *>oa)
+            if (multi.size != PyArray_SIZE(array)): 
+                raise ValueError("size is not compatible with inputs")                
+            for i from 0 <= i < multi.size:
+                oa_data = <double *>PyArray_MultiIter_DATA(multi, 1)
+                array_data[i] = func(state, oa_data[0])
+                PyArray_MultiIter_NEXTi(multi, 1)
+    return array
 
 cdef double kahan_sum(double *darr, long n):
     cdef double c, y, t, sum
@@ -310,7 +498,7 @@
         elif type(seed) is int:
             rk_seed(seed, self.internal_state)
         else:
-            obj = <ndarray>PyArray_ContiguousFromObject(seed, PyArray_LONG, 1, 1)
+            obj = <ndarray>PyArray_ContiguousFromObject(seed, NPY_LONG, 1, 1)
             init_by_array(self.internal_state, <unsigned long *>(obj.data),
                 obj.dimensions[0])
 
@@ -337,7 +525,7 @@
         if algorithm_name != 'MT19937':
             raise ValueError("algorithm must be 'MT19937'")
         key, pos = state[1:]
-        obj = <ndarray>PyArray_ContiguousFromObject(key, PyArray_LONG, 1, 1)
+        obj = <ndarray>PyArray_ContiguousFromObject(key, NPY_LONG, 1, 1)
         if obj.dimensions[0] != 624:
             raise ValueError("state must be 624 longs")
         memcpy(self.internal_state.key, <void*>(obj.data), 624*sizeof(long))
@@ -414,13 +602,18 @@
         PyMem_Free(bytes)
         return bytestring
 
-    def uniform(self, double low=0.0, double high=1.0, size=None):
+    def uniform(self, low=0.0, high=1.0, size=None):
         """Uniform distribution over [low, high).
 
         uniform(low=0.0, high=1.0, size=None) -> random values
         """
-        return cont2_array(self.internal_state, rk_uniform, size, low, 
-            high-low)
+        cdef ndarray olow
+        cdef ndarray ohigh
+        cdef ndarray odiff
+        olow = <ndarray>PyArray_FROM_OTF(low, NPY_DOUBLE, NPY_ALIGNED)
+        ohigh = <ndarray>PyArray_FROM_OTF(high, NPY_DOUBLE, NPY_ALIGNED)
+        odiff = <ndarray>_sp.subtract(ohigh,olow)
+        return cont2_array(self.internal_state, rk_uniform, size, olow, odiff)
 
     def rand(self, *args):
         """Return an array of the given dimensions which is initialized to 
@@ -473,34 +666,45 @@
         """
         return cont0_array(self.internal_state, rk_gauss, size)
 
-    def normal(self, double loc=0.0, double scale=1.0, size=None):
+    def normal(self, loc=0.0, scale=1.0, size=None):
         """Normal distribution (mean=loc, stdev=scale).
 
         normal(loc=0.0, scale=1.0, size=None) -> random values
         """
-        if scale <= 0:
+        cdef ndarray oloc
+        cdef ndarray oscale
+        oloc = <ndarray>PyArray_FROM_OTF(loc, NPY_DOUBLE, NPY_ALIGNED)
+        oscale = <ndarray>PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(oscale, 0)):
             raise ValueError("scale <= 0")
-        return cont2_array(self.internal_state, rk_normal, size, loc, scale)
+        return cont2_array(self.internal_state, rk_normal, size, oloc, oscale)
 
-    def beta(self, double a, double b, size=None):
+    def beta(self, a, b, size=None):
         """Beta distribution over [0, 1].
 
         beta(a, b, size=None) -> random values
         """
-        if a <= 0:
+        cdef ndarray oa
+        cdef ndarray ob
+        oa = <ndarray>PyArray_FROM_OTF(a, NPY_DOUBLE, NPY_ALIGNED)
+        ob = <ndarray>PyArray_FROM_OTF(b, NPY_DOUBLE, NPY_ALIGNED)
+
+        if _sp.any(_sp.less_equal(oa, 0)):
             raise ValueError("a <= 0")
-        elif b <= 0:
+        if _sp.any(_sp.less_equal(ob, 0)):        
             raise ValueError("b <= 0")
-        return cont2_array(self.internal_state, rk_beta, size, a, b)
+        return cont2_array(self.internal_state, rk_beta, size, oa, ob)
 
-    def exponential(self, double scale=1.0, size=None):
+    def exponential(self, scale=1.0, size=None):
         """Exponential distribution.
 
         exponential(scale=1.0, size=None) -> random values
         """
-        if scale <= 0:
+        cdef ndarray oscale
+        oscale = <ndarray> PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(oscale, 0.0)):
             raise ValueError("scale <= 0")
-        return cont1_array(self.internal_state, rk_exponential, size, scale)
+        return cont1_array(self.internal_state, rk_exponential, size, oscale)
 
     def standard_exponential(self, size=None):
         """Standard exponential distribution (scale=1).
@@ -509,71 +713,94 @@
         """
         return cont0_array(self.internal_state, rk_standard_exponential, size)
 
-    def standard_gamma(self, double shape, size=None):
+    def standard_gamma(self, shape, size=None):
         """Standard Gamma distribution.
 
         standard_gamma(shape, size=None) -> random values
         """
-        if shape <= 0:
+        cdef ndarray oshape
+        oshape = <ndarray> PyArray_FROM_OTF(shape, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(oshape, 0.0)):
             raise ValueError("shape <= 0")
-        return cont1_array(self.internal_state, rk_standard_gamma, size, shape)
+        return cont1_array(self.internal_state, rk_standard_gamma, size, oshape)
 
-    def gamma(self, double shape, double scale=1.0, size=None):
+    def gamma(self, shape, scale=1.0, size=None):
         """Gamma distribution.
 
         gamma(shape, scale=1.0, size=None) -> random values
         """
-        if shape <= 0:
+        cdef ndarray oshape
+        cdef ndarray oscale
+        oshape = <ndarray>PyArray_FROM_OTF(shape, NPY_DOUBLE, NPY_ALIGNED)
+        oscale = <ndarray>PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(oshape, 0.0)):
             raise ValueError("shape <= 0")
-        elif scale <= 0:
+        if _sp.any(_sp.less_equal(oscale, 0.0)):        
             raise ValueError("scale <= 0")
-        return cont2_array(self.internal_state, rk_gamma, size, shape, scale)
+        return cont2_array(self.internal_state, rk_gamma, size, oshape, oscale)
 
-    def f(self, double dfnum, double dfden, size=None):
+    def f(self, dfnum, dfden, size=None):
         """F distribution.
 
         f(dfnum, dfden, size=None) -> random values
         """
-        if dfnum <= 0:
-            raise ValueError("dfnum <= 0")
-        elif dfden <= 0:
+        cdef ndarray odfnum
+        cdef ndarray odfden
+        odfnum = <ndarray>PyArray_FROM_OTF(dfnum, NPY_DOUBLE, NPY_ALIGNED)
+        odfden = <ndarray>PyArray_FROM_OTF(dfden, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(odfnum, 0.0)):
+            raise ValueError("dfnum <= 0")            
+        if _sp.any(_sp.less_equal(odfden, 0.0)):        
             raise ValueError("dfden <= 0")
-        return cont2_array(self.internal_state, rk_f, size, dfnum, dfden)
+        return cont2_array(self.internal_state, rk_f, size, odfnum, odfden)
 
-    def noncentral_f(self, double dfnum, double dfden, double nonc, size=None):
+    def noncentral_f(self, dfnum, dfden, nonc, size=None):
         """Noncentral F distribution.
 
         noncentral_f(dfnum, dfden, nonc, size=None) -> random values
         """
-        if dfnum <= 1:
-            raise ValueError("dfnum <= 1")
-        elif dfden <= 0:
+        cdef ndarray odfnum
+        cdef ndarray odfden
+        cdef ndarray ononc
+        odfnum = <ndarray>PyArray_FROM_OTF(dfnum, NPY_DOUBLE, NPY_ALIGNED)
+        odfden = <ndarray>PyArray_FROM_OTF(dfden, NPY_DOUBLE, NPY_ALIGNED)
+        ononc = <ndarray>PyArray_FROM_OTF(nonc, NPY_DOUBLE, NPY_ALIGNED)        
+        
+        if _sp.any(_sp.less_equal(odfnum, 1.0)):
+            raise ValueError("dfnum <= 1")            
+        if _sp.any(_sp.less_equal(odfden, 0.0)):        
             raise ValueError("dfden <= 0")
-        elif nonc < 0:
+        if _sp.any(_sp.less(ononc, 0.0)):
             raise ValueError("nonc < 0")
-        return cont3_array(self.internal_state, rk_noncentral_f, size, dfnum,
-            dfden, nonc)
+        return cont3_array(self.internal_state, rk_noncentral_f, size, odfnum,
+            odfden, ononc)
 
-    def chisquare(self, double df, size=None):
+    def chisquare(self, df, size=None):
         """Chi^2 distribution.
 
         chisquare(df, size=None) -> random values
         """
-        if df <= 0:
+        cdef ndarray odf
+        odf = <ndarray>PyArray_FROM_OTF(df, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(odf, 0.0)):        
             raise ValueError("df <= 0")
-        return cont1_array(self.internal_state, rk_chisquare, size, df)
+        return cont1_array(self.internal_state, rk_chisquare, size, odf)
 
-    def noncentral_chisquare(self, double df, double nonc, size=None):
+    def noncentral_chisquare(self, df, nonc, size=None):
         """Noncentral Chi^2 distribution.
 
         noncentral_chisquare(df, nonc, size=None) -> random values
         """
-        if df <= 1:
+        cdef ndarray odf
+        cdef ndarray ononc
+        odf = <ndarray>PyArray_FROM_OTF(df, NPY_DOUBLE, NPY_ALIGNED)
+        ononc = <ndarray>PyArray_FROM_OTF(nonc, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(odf, 0.0)):
             raise ValueError("df <= 1")
-        elif nonc < 0:
+        if _sp.any(_sp.less_equal(ononc, 0.0)):        
             raise ValueError("nonc < 0")
         return cont2_array(self.internal_state, rk_noncentral_chisquare, size,
-            df, nonc)
+            odf, ononc)
     
     def standard_cauchy(self, size=None):
         """Standard Cauchy with mode=0.
@@ -582,80 +809,104 @@
         """
         return cont0_array(self.internal_state, rk_standard_cauchy, size)
 
-    def standard_t(self, double df, size=None):
+    def standard_t(self, df, size=None):
         """Standard Student's t distribution with df degrees of freedom.
 
         standard_t(df, size=None)
         """
-        if df <= 0:
+        cdef ndarray odf
+        odf = <ndarray> PyArray_FROM_OTF(df, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(odf, 0.0)):        
             raise ValueError("df <= 0")
-        return cont1_array(self.internal_state, rk_standard_t, size, df)
+        return cont1_array(self.internal_state, rk_standard_t, size, odf)
 
-    def vonmises(self, double mu, double kappa, size=None):
+    def vonmises(self, mu, kappa, size=None):
         """von Mises circular distribution with mode mu and dispersion parameter
         kappa on [-pi, pi].
 
         vonmises(mu, kappa, size=None)
         """
-        if kappa < 0:
+        cdef ndarray omu
+        cdef ndarray okappa
+        omu = <ndarray> PyArray_FROM_OTF(mu, NPY_DOUBLE, NPY_ALIGNED)
+        okappa = <ndarray> PyArray_FROM_OTF(kappa, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(okappa, 0.0)):        
             raise ValueError("kappa < 0")
-        return cont2_array(self.internal_state, rk_vonmises, size, mu, kappa)
+        return cont2_array(self.internal_state, rk_vonmises, size, omu, okappa)
 
-    def pareto(self, double a, size=None):
+    def pareto(self, a, size=None):
         """Pareto distribution.
 
         pareto(a, size=None)
         """
-        if a <= 0:
+        cdef ndarray oa
+        oa = <ndarray>PyArray_FROM_OTF(a, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(oa, 0.0)):        
             raise ValueError("a <= 0")
-        return cont1_array(self.internal_state, rk_pareto, size, a)
+        return cont1_array(self.internal_state, rk_pareto, size, oa)
 
     def weibull(self, double a, size=None):
         """Weibull distribution.
 
         weibull(a, size=None)
         """
-        if a <= 0:
+        cdef ndarray oa
+        oa = <ndarray>PyArray_FROM_OTF(a, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(oa, 0.0)):                
             raise ValueError("a <= 0")
-        return cont1_array(self.internal_state, rk_weibull, size, a)
+        return cont1_array(self.internal_state, rk_weibull, size, oa)
 
     def power(self, double a, size=None):
         """Power distribution.
 
         power(a, size=None)
         """
-        if a <= 0:
+        cdef ndarray oa
+        oa = <ndarray>PyArray_FROM_OTF(a, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(oa, 0.0)):       
             raise ValueError("a <= 0")
-        return cont1_array(self.internal_state, rk_power, size, a)
+        return cont1_array(self.internal_state, rk_power, size, oa)
 
-    def laplace(self, double loc=0.0, double scale=1.0, size=None):
+    def laplace(self, loc=0.0, scale=1.0, size=None):
         """Laplace distribution.
         
         laplace(loc=0.0, scale=1.0, size=None)
         """
-        if scale <= 0.0:
-            raise ValueError("scale <= 0.0")
-        return cont2_array(self.internal_state, rk_laplace, size, loc, scale)
+        cdef ndarray oloc
+        cdef ndarray oscale
+        oloc = PyArray_FROM_OTF(loc, NPY_DOUBLE, NPY_ALIGNED)
+        oscale = PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(oscale, 0.0)):        
+            raise ValueError("scale <= 0")
+        return cont2_array(self.internal_state, rk_laplace, size, oloc, oscale)
     
-    def gumbel(self, double loc=0.0, double scale=1.0, size=None):
+    def gumbel(self, loc=0.0, scale=1.0, size=None):
         """Gumbel distribution.
         
         gumbel(loc=0.0, scale=1.0, size=None)
         """
-        if scale <= 0.0:
-            raise ValueError("scale <= 0.0")
-        return cont2_array(self.internal_state, rk_gumbel, size, loc, scale)
+        cdef ndarray oloc
+        cdef ndarray oscale
+        oloc = PyArray_FROM_OTF(loc, NPY_DOUBLE, NPY_ALIGNED)
+        oscale = PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(oscale, 0.0)):        
+            raise ValueError("scale <= 0")
+        return cont2_array(self.internal_state, rk_gumbel, size, oloc, oscale)
     
-    def logistic(self, double loc=0.0, double scale=1.0, size=None):
+    def logistic(self, loc=0.0, scale=1.0, size=None):
         """Logistic distribution.
         
         logistic(loc=0.0, scale=1.0, size=None)
         """
-        if scale <= 0.0:
-            raise ValueError("scale <= 0.0")
-        return cont2_array(self.internal_state, rk_logistic, size, loc, scale)
+        cdef ndarray oloc
+        cdef ndarray oscale
+        oloc = PyArray_FROM_OTF(loc, NPY_DOUBLE, NPY_ALIGNED)
+        oscale = PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(oscale, 0.0)):        
+            raise ValueError("scale <= 0")
+        return cont2_array(self.internal_state, rk_logistic, size, oloc, oscale)
 
-    def lognormal(self, double mean=0.0, double sigma=1.0, size=None):
+    def lognormal(self, mean=0.0, sigma=1.0, size=None):
         """Log-normal distribution.
         
         Note that the mean parameter is not the mean of this distribution, but 
@@ -665,104 +916,135 @@
         
         lognormal(mean=0.0, sigma=1.0, size=None)
         """
-        if sigma <= 0.0:
+        cdef ndarray omean
+        cdef ndarray osigma
+        omean = PyArray_FROM_OTF(mean, NPY_DOUBLE, NPY_ALIGNED)
+        osigma = PyArray_FROM_OTF(sigma, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(osigma, 0.0)):
             raise ValueError("sigma <= 0.0")
         return cont2_array(self.internal_state, rk_lognormal, size, mean, sigma)
     
-    def rayleigh(self, double scale=1.0, size=None):
+    def rayleigh(self, scale=1.0, size=None):
         """Rayleigh distribution.
         
         rayleigh(scale=1.0, size=None)
         """
-        if scale <= 0.0:
+        cdef ndarray oscale
+        oscale = <ndarray>PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(oscale, 0.0)):        
             raise ValueError("scale <= 0.0")
-        return cont1_array(self.internal_state, rk_rayleigh, size, scale)
-    
-    def wald(self, double mean, double scale, size=None):
+        return cont1_array(self.internal_state, rk_rayleigh, size, oscale)
+            
+    def wald(self, mean, scale, size=None):
         """Wald (inverse Gaussian) distribution.
         
         wald(mean, scale, size=None)
         """
-        if mean <= 0.0:
+        cdef ndarray omean
+        cdef ndarray oscale
+        omean = PyArray_FROM_OTF(mean, NPY_DOUBLE, NPY_ALIGNED)
+        oscale = PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(omean,0.0)):
             raise ValueError("mean <= 0.0")
-        elif scale <= 0.0:
+        elif _sp.any(_sp.less_equal(oscale,0.0)):
             raise ValueError("scale <= 0.0")
-        return cont2_array(self.internal_state, rk_wald, size, mean, scale)
+        return cont2_array(self.internal_state, rk_wald, size, omean, oscale)
 
-    def triangular(self, double left, double mode, double right, size=None):
+    def triangular(self, left, mode, right, size=None):
         """Triangular distribution starting at left, peaking at mode, and 
         ending at right (left <= mode <= right).
         
         triangular(left, mode, right, size=None)
         """
-        if left > mode:
+        cdef ndarray oleft
+        cdef ndarray omode
+        cdef ndarray oright
+        oleft = <ndarray>PyArray_FROM_OTF(left, NPY_DOUBLE, NPY_ALIGNED)
+        omode = <ndarray>PyArray_FROM_OTF(mode, NPY_DOUBLE, NPY_ALIGNED)
+        oright = <ndarray>PyArray_FROM_OTF(right, NPY_DOUBLE, NPY_ALIGNED)        
+        
+        if _sp.any(_sp.greater(oleft, omode)):
             raise ValueError("left > mode")
-        elif mode > right:
+        if _sp.any(_sp.greater(omode, oright)):
             raise ValueError("mode > right")
-        elif left == right:
+        if _sp.any(_sp.equal(oleft, oright)):
             raise ValueError("left == right")
-        return cont3_array(self.internal_state, rk_triangular, size, left, 
-            mode, right)
+        return cont3_array(self.internal_state, rk_triangular, size, oleft, 
+            omode, oright)
 
     # Complicated, discrete distributions:
-    def binomial(self, long n, double p, size=None):
+    def binomial(self, n, p, size=None):
         """Binomial distribution of n trials and p probability of success.
 
         binomial(n, p, size=None) -> random values
         """
-        if n <= 0:
+        cdef ndarray on
+        cdef ndarray op
+        on = <ndarray>PyArray_FROM_OTF(n, NPY_LONG, NPY_ALIGNED)
+        op = <ndarray>PyArray_FROM_OTF(p, NPY_DOUBLE, NPY_ALIGNED)        
+        if _sp.any(_sp.less_equal(n, 0)):
             raise ValueError("n <= 0")
-        elif p < 0:
+        if _sp.any(_sp.less(p, 0)):
             raise ValueError("p < 0")
-        elif p > 1:
+        if _sp.any(_sp.greater(p, 1)):
             raise ValueError("p > 1")
-        return discnp_array(self.internal_state, rk_binomial, size, n, p)
+        return discnp_array(self.internal_state, rk_binomial, size, on, op)
 
-    def negative_binomial(self, long n, double p, size=None):
+    def negative_binomial(self, n, p, size=None):
         """Negative Binomial distribution.
 
         negative_binomial(n, p, size=None) -> random values
         """
-        if n <= 0:
+        cdef ndarray on
+        cdef ndarray op
+        on = <ndarray>PyArray_FROM_OTF(n, NPY_LONG, NPY_ALIGNED)
+        op = <ndarray>PyArray_FROM_OTF(p, NPY_DOUBLE, NPY_ALIGNED)        
+        if _sp.any(_sp.less_equal(n, 0)):
             raise ValueError("n <= 0")
-        elif p < 0:
+        if _sp.any(_sp.less(p, 0)):
             raise ValueError("p < 0")
-        elif p > 1:
+        if _sp.any(_sp.greater(p, 1)):
             raise ValueError("p > 1")
-        return discnp_array(self.internal_state, rk_negative_binomial, size, n,
-            p)
+        return discnp_array(self.internal_state, rk_negative_binomial, size,
+                            on, op)
 
-    def poisson(self, double lam=1.0, size=None):
+    def poisson(self, lam=1.0, size=None):
         """Poisson distribution.
 
         poisson(lam=1.0, size=None) -> random values
         """
-        if lam <= 0:
+        cdef ndarray olam
+        olam = <ndarray>PyArray_FROM_OTF(lam, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(olam, 0)):
             raise ValueError("lam <= 0")
-        return discd_array(self.internal_state, rk_poisson, size, lam)
+        return discd_array(self.internal_state, rk_poisson, size, olam)
 
-    def zipf(self, double a, size=None):
+    def zipf(self, a, size=None):
         """Zipf distribution.
         
         zipf(a, size=None)
         """
-        if a <= 1.0:
+        cdef ndarray oa
+        oa = <ndarray>PyArray_FROM_OTF(a, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less_equal(oa, 1.0)):
             raise ValueError("a <= 1.0")
-        return discd_array(self.internal_state, rk_zipf, size, a)
+        return discd_array(self.internal_state, rk_zipf, size, oa)
     
-    def geometric(self, double p, size=None):
+    def geometric(self, p, size=None):
         """Geometric distribution with p being the probability of "success" on
         an individual trial.
         
         geometric(p, size=None)
         """
-        if p < 0.0:
+        cdef ndarray op
+        op = <ndarray>PyArray_FROM_OTF(p, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less(op, 0.0)):        
             raise ValueError("p < 0.0")
-        elif p > 1.0:
+        if _sp.any(_sp.greater(op, 1.0)):
             raise ValueError("p > 1.0")
-        return discd_array(self.internal_state, rk_geometric, size, p)
+        return discd_array(self.internal_state, rk_geometric, size, op)
     
-    def hypergeometric(self, long ngood, long nbad, long nsample, size=None):
+    def hypergeometric(self, ngood, nbad, nsample, size=None):
         """Hypergeometric distribution.
         
         Consider an urn with ngood "good" balls and nbad "bad" balls. If one 
@@ -772,27 +1054,36 @@
         
         hypergeometric(ngood, nbad, nsample, size=None)        
         """
-        if ngood < 1:
+        cdef ndarray ongood
+        cdef ndarray onbad
+        cdef ndarray onsample
+
+        ongood = <ndarray>PyArray_FROM_OTF(ngood, NPY_LONG, NPY_ALIGNED)
+        onbad = <ndarray>PyArray_FROM_OTF(nbad, NPY_LONG, NPY_ALIGNED)
+        onsample = <ndarray>PyArray_FROM_OTF(nsample, NPY_LONG, NPY_ALIGNED)
+        if _sp.any(_sp.less(ongood, 1)):
             raise ValueError("ngood < 1")
-        elif nbad < 1:
+        if _sp.any(_sp.less(onbad, 1)):
             raise ValueError("nbad < 1")
-        elif ngood + nbad < nsample:
+        if _sp.any(_sp.less(_sp.add(ongood, onbad),onsample)):
             raise ValueError("ngood + nbad < nsample")
-        elif nsample < 1:
+        if _sp.any(_sp.less(onsample, 1)):
             raise ValueError("nsample < 1")
         return discnmN_array(self.internal_state, rk_hypergeometric, size,
-            ngood, nbad, nsample)
+            ongood, onbad, onsample)
 
-    def logseries(self, double p, size=None):
+    def logseries(self, p, size=None):
         """Logarithmic series distribution.
         
         logseries(p, size=None)
         """
-        if p < 0:
-            raise ValueError("p < 0")
-        elif p > 1:
-            raise ValueError("p > 1")
-        return discd_array(self.internal_state, rk_logseries, size, p)
+        cdef ndarray op
+        op = <ndarray>PyArray_FROM_OTF(p, NPY_DOUBLE, NPY_ALIGNED)
+        if _sp.any(_sp.less(op, 0.0)):        
+            raise ValueError("p < 0.0")
+        if _sp.any(_sp.greater(op, 1.0)):
+            raise ValueError("p > 1.0")
+        return discd_array(self.internal_state, rk_logseries, size, op)
 
     # Multivariate distributions:
     def multivariate_normal(self, mean, cov, size=None):
@@ -870,7 +1161,7 @@
         cdef double Sum
 
         d = len(pvals)
-        parr = <ndarray>PyArray_ContiguousFromObject(pvals, PyArray_DOUBLE, 1, 1)
+        parr = <ndarray>PyArray_ContiguousFromObject(pvals, NPY_DOUBLE, 1, 1)
         pix = <double*>parr.data
 
         if kahan_sum(pix, d-1) > 1.0:

Modified: branches/ver1.0/numpy/random/mtrand/numpy.pxi
===================================================================
--- branches/ver1.0/numpy/random/mtrand/numpy.pxi	2006-07-25 17:17:08 UTC (rev 2891)
+++ branches/ver1.0/numpy/random/mtrand/numpy.pxi	2006-07-25 22:06:02 UTC (rev 2892)
@@ -1,52 +1,130 @@
-# :Author:    Robert Kern
-# :Copyright: 2004, Enthought, Inc.
-# :License:   BSD Style
+# :Author:    Travis Oliphant
 
-
 cdef extern from "numpy/arrayobject.h":
-    ctypedef enum PyArray_TYPES:
-        PyArray_BOOL
-        PyArray_BYTE
-        PyArray_UBYTE
-        PyArray_SHORT
-        PyArray_USHORT 
-        PyArray_INT
-        PyArray_UINT 
-        PyArray_LONG
-        PyArray_ULONG
-        PyArray_FLOAT
-        PyArray_DOUBLE 
-        PyArray_LONGDOUBLE
-        PyArray_CFLOAT
-        PyArray_CDOUBLE
-        PyArray_CLONGDOUBLE
-        PyArray_OBJECT
-        PyArray_STRING
-        PyArray_UNICODE
-        PyArray_VOID
-        PyArray_NTYPES
-        PyArray_NOTYPE
 
-    ctypedef int intp 
+    cdef enum NPY_TYPES:
+        NPY_BOOL
+        NPY_BYTE
+        NPY_UBYTE
+        NPY_SHORT
+        NPY_USHORT 
+        NPY_INT
+        NPY_UINT 
+        NPY_LONG
+        NPY_ULONG
+        NPY_LONGLONG
+        NPY_ULONGLONG
+        NPY_FLOAT
+        NPY_DOUBLE 
+        NPY_LONGDOUBLE
+        NPY_CFLOAT
+        NPY_CDOUBLE
+        NPY_CLONGDOUBLE
+        NPY_OBJECT
+        NPY_STRING
+        NPY_UNICODE
+        NPY_VOID
+        NPY_NTYPES
+        NPY_NOTYPE
 
+    cdef enum requirements:
+        NPY_CONTIGUOUS
+        NPY_FORTRAN
+        NPY_OWNDATA
+        NPY_FORCECAST
+        NPY_ENSURECOPY
+        NPY_ENSUREARRAY
+        NPY_ELEMENTSTRIDES
+        NPY_ALIGNED
+        NPY_NOTSWAPPED
+        NPY_WRITEABLE
+        NPY_UPDATEIFCOPY
+        NPY_ARR_HAS_DESCR
+
+        NPY_BEHAVED
+        NPY_BEHAVED_NS
+        NPY_CARRAY
+        NPY_CARRAY_RO
+        NPY_FARRAY
+        NPY_FARRAY_RO
+        NPY_DEFAULT
+
+        NPY_IN_ARRAY
+        NPY_OUT_ARRAY
+        NPY_INOUT_ARRAY
+        NPY_IN_FARRAY
+        NPY_OUT_FARRAY
+        NPY_INOUT_FARRAY
+
+        NPY_UPDATE_ALL 
+
+    cdef enum defines:
+        NPY_MAXDIMS
+
+    ctypedef struct npy_cdouble:
+        double real
+        double imag
+
+    ctypedef struct npy_cfloat:
+        double real
+        double imag
+
+    ctypedef int npy_intp 
+
     ctypedef extern class numpy.dtype [object PyArray_Descr]:
-        cdef int type_num, elsize
-        cdef char type
+        cdef int type_num, elsize, alignment
+        cdef char type, kind, byteorder, hasobject
+        cdef object fields, typeobj
 
     ctypedef extern class numpy.ndarray [object PyArrayObject]:
         cdef char *data
         cdef int nd
-        cdef intp *dimensions
-        cdef intp *strides
+        cdef npy_intp *dimensions
+        cdef npy_intp *strides
         cdef object base
         cdef dtype descr
         cdef int flags
 
-    ndarray PyArray_SimpleNew(int ndims, intp* dims, int item_type)
+    ctypedef extern class numpy.flatiter [object PyArrayIterObject]:
+        cdef int  nd_m1
+        cdef npy_intp index, size
+        cdef ndarray ao
+        cdef char *dataptr
+        
+    ctypedef extern class numpy.broadcast [object PyArrayMultiIterObject]:
+        cdef int numiter
+        cdef npy_intp size, index
+        cdef int nd
+        cdef npy_intp dimensions[NPY_MAXDIMS]
+        cdef void **iters
+
+    object PyArray_ZEROS(int ndims, npy_intp* dims, NPY_TYPES type_num, int fortran)
+    object PyArray_EMPTY(int ndims, npy_intp* dims, NPY_TYPES type_num, int fortran)
+    dtype PyArray_DescrFromTypeNum(NPY_TYPES type_num)
+    object PyArray_SimpleNew(int ndims, npy_intp* dims, NPY_TYPES type_num)
     int PyArray_Check(object obj)
-    ndarray PyArray_ContiguousFromObject(object obj, PyArray_TYPES type, 
+    object PyArray_ContiguousFromAny(object obj, NPY_TYPES type, 
         int mindim, int maxdim)
-    intp PyArray_SIZE(ndarray arr)
+    npy_intp PyArray_SIZE(ndarray arr)
+    npy_intp PyArray_NBYTES(ndarray arr)
     void *PyArray_DATA(ndarray arr)
+    object PyArray_FromAny(object obj, dtype newtype, int mindim, int maxdim,
+		    int requirements, object context)
+    object PyArray_FROMANY(object obj, NPY_TYPES type_num, int min,
+                           int max, int requirements)
+    object PyArray_NewFromDescr(object subtype, dtype newtype, int nd,
+                                npy_intp* dims, npy_intp* strides, void* data,
+                                int flags, object parent)
 
+    object PyArray_FROM_OTF(object obj, NPY_TYPES type, int flags)
+
+    object PyArray_MultiIterNew(int n, ...)
+
+    char *PyArray_MultiIter_DATA(broadcast multi, int i)
+    void PyArray_MultiIter_NEXTi(broadcast multi, int i) 
+    void PyArray_MultiIter_NEXT(broadcast multi)
+
+    object PyArray_IterNew(object arr)
+    void PyArray_ITER_NEXT(flatiter it)
+
     void import_array()




More information about the Numpy-svn mailing list