commonsense team mailing list archive
-
commonsense team
-
Mailing list archive
-
Message #00132
[Merge] lp:~kenneth-arnold/divisi/svdlibc-cleanup into lp:divisi
Ken Arnold has proposed merging lp:~kenneth-arnold/divisi/svdlibc-cleanup into lp:divisi.
Requested reviews:
Commonsense Computing (commonsense)
This branch includes the offset SVD code, some cleanups and micro-optimizations to the SVDLIBC wrapper code, and some additional work on the tests. (It also adds a .unnormalized() method to LabeledView.)
I've tested it fairly extensively and regularly use it, but I'd like some review on it and independent testing before merging to trunk. My main concern is that I broke some edge case while cleaning up _svdlibc.pyx, but should also check that normal AnalogySpace and Blending still give correct results.
--
https://code.launchpad.net/~kenneth-arnold/divisi/svdlibc-cleanup/+merge/14316
Your team Commonsense Computing is subscribed to branch lp:divisi.
=== modified file 'csc/divisi/labeled_view.py'
--- csc/divisi/labeled_view.py 2009-09-24 01:15:17 +0000
+++ csc/divisi/labeled_view.py 2009-11-02 19:20:26 +0000
@@ -1,5 +1,5 @@
from csc.divisi.ordered_set import OrderedSet, IdentitySet, indexable_set
-from csc.divisi.tensor import View, TheEmptySlice
+from csc.divisi.tensor import View, TheEmptySlice, DictTensor, DenseTensor
import copy
import heapq
from operator import itemgetter
@@ -31,7 +31,6 @@
'tfidf.T': use tf-idf, transposed (matrix is documents by terms)
a class: adds that class as a layer.
'''
- from csc.divisi.tensor import DictTensor
if labels is None: labels = [OrderedSet() for _ in xrange(ndim)]
tensor = LabeledView(DictTensor(ndim), labels)
if initial is not None:
@@ -46,7 +45,6 @@
def make_dense_labeled_tensor(data, labels):
- from csc.divisi.tensor import DenseTensor
return LabeledView(DenseTensor(data), labels)
@@ -289,10 +287,16 @@
return self.layer_on(-self.tensor)
def to_dense(self):
+ '''Change the underlying representation to a dense tensor.'''
return self.layer_on(self.tensor.to_dense())
-
+
def to_sparse(self):
+ '''Change the underlying representation to a sparse tensor.'''
return self.layer_on(self.tensor.to_sparse())
+
+ def bake(self):
+ '''Simplify the representation to a LabeledView of a DictTensor.'''
+ return make_sparse_labeled_tensor(ndim=self.ndim, initial=self.iteritems())
def dot(self, other):
"""
@@ -361,20 +365,12 @@
def layer_on(self, tensor):
return LabeledView(tensor, self._labels)
- def zero_mean_normalized(self, mode=0, prefix='-'):
- # This is a special case, since we must duplicate labels
- new_tensor = self.tensor.zero_mean_normalized(mode=mode)
-
- new_labels = copy.deepcopy(self._labels)
- # Duplicate labels, preserving the property that
- # index(label)[mode] = index(prefix label)[mode] - self.tensor.shape[mode]
- for i in xrange(self.tensor.shape[mode]):
- l = self.label(mode, i)
- new_labels[mode].add(prefix + l)
-
- return LabeledView(new_tensor, new_labels)
-
-
+ def unnormalized(self):
+ '''
+ Remove the topmost layer of normalization from this tensor stack.
+ '''
+ return self.layer_on(self.tensor.unnormalized())
+
def array_op(self, op, labels=None, *args, **kwargs):
"""
Apply an operation to the tensor inside (which must be a
@@ -397,7 +393,7 @@
labels = self.label_list(0)
return dict((labels[i], float(self.tensor[i])) for i in xrange(self.shape[0]))
- def top_items(self, n=10, largest=True, key=None, abs_val=None):
+ def top_items(self, n=10, largest=True, key=None):
'''
For each of the top n items with greatest values, return a pair of
the item and its value.
@@ -410,12 +406,6 @@
If the tensor is 1D, gives indices instead of one-item tuples.
Always expresses the output in floats directly.
'''
- if abs_val is not None:
- import warnings
- warnings.warn(DeprecationWarning('abs_val is deprecated. use key=abs.'))
- assert key is None
- key = abs
-
if key is not None:
extreme_key = lambda ent: key(ent[1])
else:
@@ -429,17 +419,6 @@
else:
return [(k, float(v)) for k, v in items]
- def bake(self):
- '''
- Simplify the representation.
- '''
- return make_sparse_labeled_tensor(ndim=self.ndim, initial=self.iteritems())
-
- def to_dense(self):
- '''Change the underlying representation to a dense tensor.'''
- return LabeledView(self.tensor.to_dense(), self._labels)
-
-
def concatenate(self, other):
concat_dense = self.tensor.concatenate(other.tensor)
newlabels = OrderedSet(list(self.label_list(0)) +
@@ -466,6 +445,14 @@
[LabeledView(mag, [labels]) for mag, labels
in izip(magnitudes, self.label_sets())])
+ def means(self):
+ '''
+ Computes the labeled by-slice means for each dimension.
+ '''
+ means = self.tensor.means()
+ return [make_dense_labeled_tensor(means, [labels])
+ for means, labels in zip(means, self.label_lists())]
+
from csc.divisi.svd import SVD2DResults
class LabeledSVD2DResults(SVD2DResults):
@@ -509,7 +496,6 @@
@classmethod
def load_pytables(cls, filename, copy=False):
import numpy as np
- from csc.divisi.tensor import DenseTensor
from csc.divisi.pyt_utils import get_pyt_handle
fileh = get_pyt_handle(filename)
=== modified file 'csc/divisi/normalized_view.py'
--- csc/divisi/normalized_view.py 2009-10-22 18:49:23 +0000
+++ csc/divisi/normalized_view.py 2009-11-02 19:20:26 +0000
@@ -15,7 +15,10 @@
input_is_numeric = True
output_is_numeric = True
- def __init__(self, tensor, mode=0):
+ # Default to normalizing on mode 0.
+ default_modes = 0
+
+ def __init__(self, tensor, mode=None):
'''
* tensor: tensor to view.
* mode: which mode to normalize over (0 = rows, 1 = columns, etc.)
@@ -43,12 +46,16 @@
raise TypeError('Normalized views are read-only.')
@property
- def normalize_mode(self):
+ def normalize_modes(self):
"""
- Which mode of the tensor is normalized (0 for rows, 1 for columns,
+ Which modes of the tensor is normalized (0 for rows, 1 for columns,
etc.)
"""
- return self._normalize_mode
+ modes = self._normalize_mode
+ if modes is None: modes = self.default_modes
+ if not isinstance(modes, (list, tuple)):
+ modes = [modes]
+ return modes
@property
def norms(self):
@@ -56,11 +63,18 @@
A list of the normalization factors that were computed for each
row/column/whatever.
"""
+ # FIXME: this method should be in a subclass only.
return self._norms
def item_changed(self, indices, oldvalue, newvalue):
+ # FIXME: nobody ever even complained that this doesn't
+ # work. Maybe change notification just isn't worth it, and
+ # normalized views are just immutable.
self.update_norm(indices, oldvalue, newvalue)
+ def update_norm(self, indices, prev, current):
+ raise NotImplementedError
+
def refresh_norms():
"""
Compute all of the normalization factors from scratch.
@@ -104,16 +118,9 @@
You can also supply a list of modes to normalize over.
'''
- @property
- def modes(self):
- modes = self._normalize_mode
- if not isinstance(modes, (list, tuple)):
- modes = [modes]
- return modes
-
def refresh_norms(self):
tensor = self.tensor
- modes = self.modes
+ modes = self.normalize_modes
norms = [zeros((tensor.shape[mode],)) for mode in modes]
for key, value in self.tensor.iteritems():
for mode in modes:
@@ -124,7 +131,7 @@
self._norms = norms
def update_norm(self, indices, prev, current):
- modes = self.modes
+ modes = self.normalize_modes
# Handle growing the norms array.
for i_mode, mode in enumerate(modes):
index = indices[mode]
@@ -133,9 +140,10 @@
self._norms[i_mode][index] += (current*current - prev*prev)
def __getitem__(self, indices):
+ # FIXME: this doesn't work well for slices.
if not isinstance(indices, (list, tuple)):
indices = (indices,)
- modes = self.modes
+ modes = self.normalize_modes
norm = self.base ** 2 + sum(self._norms[i_mode][indices[mode]]
for i_mode, mode in enumerate(modes))
data = self.tensor[indices]
@@ -143,8 +151,7 @@
return data / sqrt(norm)
def iteritems(self):
- modes = self._normalize_mode
- if not isinstance(modes, (list, tuple)): modes = [modes]
+ modes = self.normalize_modes
base_squared = self.base ** 2
for indices, value in self.tensor.iteritems():
norm = base_squared + sum(self._norms[i_mode][indices[mode]]
@@ -163,19 +170,54 @@
return NormalizedView(self.tensor, self.modes)
def _svd(self, **kw):
- if self.normalize_mode == 0:
+ if list(self.normalize_modes) == [0]:
return self.tensor._svd(row_factors=self.norms[0], **kw)
return super(NormalizedView, self)._svd(**kw)
def _isvd(self, **kw):
- if self.normalize_mode == 0:
+ if list(self.normalize_modes) == [0]:
return self.tensor._isvd(row_factors=self.norms[0], **kw)
return super(NormalizedView, self)._isvd(**kw)
# All other operations fall back to the tensor.
-class AvgNormalizedView(BaseNormalizedView):
+class MeanSubtractedView(BaseNormalizedView):
+ '''Subtracts out the mean of each row and/or column.
+
+ Uses offset parameters to the SVD to compute this efficiently.
+ '''
+ default_modes = 0
+ def refresh_norms(self):
+ self.means = self.tensor.means()
+
+ def __getitem__(self, indices):
+ # FIXME: slices.
+ data = self.tensor[indices]
+ for mode in self.normalize_modes:
+ # not in-place, in case of slicing.
+ data = data - self.means[mode][indices[mode]]
+ return data
+
+ # FIXME: iteritems is incorrect if the tensor is not dense, since
+ # unspecified items will probably be non-zero.
+
+ def _svd(self, **kw):
+ modes = self.normalize_modes
+ if not all(0 <= m <= 1 for m in modes):
+ raise NotImplementedError
+ if 0 in modes:
+ kw['offset_for_row'] = -self.means[0]
+ if 1 in modes:
+ kw['offset_for_col'] = -self.means[1]
+ print kw
+ return self.tensor._svd(**kw)
+
+ def _isvd(self, **kw):
+ raise NotImplementedError
+
+
+class OldAvgNormalizedView(BaseNormalizedView):
'''A NormalizedView that makes the average to be zero, instead of using a Euclidean norm.'''
def refresh_norms(self):
tensor = self.tensor
@@ -190,9 +232,6 @@
norms[modes.index(mode)][key[mode]][1] += 1
self._norms = norms
- def update_norm(self, indices, prev, current):
- raise NotImplementedError
-
def __getitem__(self, indices):
mode = self._normalize_mode
if not isinstance(mode, list): modes = [mode]
@@ -222,7 +261,7 @@
'''
self.transposed = transposed # before the super call because
# super calls refresh_norms.
- super(TfIdfView, self).__init__(tensor, 0) # We only support mode 0.
+ super(TfIdfView, self).__init__(tensor) # Modes don't really make sense.
def __repr__(self):
return 'TfIdfView(%r, transposed=%r)' % (self.tensor, self.transposed)
@@ -244,9 +283,6 @@
counts_for_document[document] += value
num_docs_that_contain_term[term] += 1
- def update_norm(self, indices, prev, current):
- raise NotImplementedError
-
def tf(self, term, document):
if self.transposed:
term_count = self.tensor[document, term]
=== modified file 'csc/divisi/tensor.py'
--- csc/divisi/tensor.py 2009-09-29 15:49:05 +0000
+++ csc/divisi/tensor.py 2009-11-02 19:20:26 +0000
@@ -228,9 +228,9 @@
raise TypeError('Unknown normalization parameter %r' % mode)
- def zero_mean_normalized(self, mode=0):
- from csc.divisi.normalized_view import ZeroMeanView
- return self.add_layer(ZeroMeanView, mode)
+ def mean_subtracted(self, mode=0):
+ from csc.divisi.normalized_view import MeanSubtractedView
+ return self.add_layer(MeanSubtractedView, mode)
# Math
def __add__(self, other):
@@ -559,6 +559,27 @@
else:
return res
+ def means(self):
+ '''
+ Computes the by-slice means for each dimension.
+
+ Returns numpy arrays, not DenseTensors.
+ '''
+ import numpy as np
+ accumulator_for_mode = [numpy.zeros(n) for n in self.shape]
+ for k, v in self.iteritems():
+ for accumulator, key in izip(accumulator_for_mode, k):
+ accumulator[key] += v
+
+ # Divide by the number of items that could have gone into each
+ # accumulator slot.
+ total_possible_items = np.product(self.shape)
+ for mode, accumulator in enumerate(accumulator_for_mode):
+ possible_items = total_possible_items / self.shape[mode]
+ accumulator /= possible_items
+ return accumulator_for_mode
+
+
def label_histograms(self):
'''
Counts the number and magnitude of items in each row / column
=== modified file 'svdlib/_svdlib.c'
--- svdlib/_svdlib.c 2009-08-05 22:25:54 +0000
+++ svdlib/_svdlib.c 2009-11-02 19:20:26 +0000
@@ -1,11 +1,11 @@
-/* Generated by Cython 0.11.2 on Wed Aug 5 18:22:59 2009 */
+/* Generated by Cython 0.11.3 on Thu Oct 29 00:14:04 2009 */
#define PY_SSIZE_T_CLEAN
#include "Python.h"
#include "structmember.h"
#ifndef Py_PYTHON_H
#error Python headers needed to compile C extensions, please install development version of Python.
-#endif
+#else
#ifndef PY_LONG_LONG
#define PY_LONG_LONG LONG_LONG
#endif
@@ -133,10 +133,12 @@
#include <math.h>
#define __PYX_HAVE_API__svdlib___svdlib
#include "stdlib.h"
+#include "stdio.h"
#include "numpy/arrayobject.h"
#include "svdlib.h"
#include "svdwrapper.h"
#include "math.h"
+#include "svdutil.h"
#define __PYX_USE_C99_COMPLEX defined(_Complex_I)
@@ -167,6 +169,9 @@
#define __Pyx_PyBytes_AsString PyBytes_AsString
#endif
+#define __Pyx_PyBytes_FromUString(s) __Pyx_PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s) ((unsigned char*) __Pyx_PyBytes_AsString(s))
+
#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
static INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
@@ -186,6 +191,40 @@
#endif
#endif
+
+#if !defined(T_ULONGLONG)
+#define __Pyx_T_UNSIGNED_INT(x) \
+ ((sizeof(x) == sizeof(unsigned char)) ? T_UBYTE : \
+ ((sizeof(x) == sizeof(unsigned short)) ? T_USHORT : \
+ ((sizeof(x) == sizeof(unsigned int)) ? T_UINT : \
+ ((sizeof(x) == sizeof(unsigned long)) ? T_ULONG : -1))))
+#else
+#define __Pyx_T_UNSIGNED_INT(x) \
+ ((sizeof(x) == sizeof(unsigned char)) ? T_UBYTE : \
+ ((sizeof(x) == sizeof(unsigned short)) ? T_USHORT : \
+ ((sizeof(x) == sizeof(unsigned int)) ? T_UINT : \
+ ((sizeof(x) == sizeof(unsigned long)) ? T_ULONG : \
+ ((sizeof(x) == sizeof(unsigned PY_LONG_LONG)) ? T_ULONGLONG : -1)))))
+#endif
+#if !defined(T_LONGLONG)
+#define __Pyx_T_SIGNED_INT(x) \
+ ((sizeof(x) == sizeof(char)) ? T_BYTE : \
+ ((sizeof(x) == sizeof(short)) ? T_SHORT : \
+ ((sizeof(x) == sizeof(int)) ? T_INT : \
+ ((sizeof(x) == sizeof(long)) ? T_LONG : -1))))
+#else
+#define __Pyx_T_SIGNED_INT(x) \
+ ((sizeof(x) == sizeof(char)) ? T_BYTE : \
+ ((sizeof(x) == sizeof(short)) ? T_SHORT : \
+ ((sizeof(x) == sizeof(int)) ? T_INT : \
+ ((sizeof(x) == sizeof(long)) ? T_LONG : \
+ ((sizeof(x) == sizeof(PY_LONG_LONG)) ? T_LONGLONG : -1)))))
+#endif
+
+#define __Pyx_T_FLOATING(x) \
+ ((sizeof(x) == sizeof(float)) ? T_FLOAT : \
+ ((sizeof(x) == sizeof(double)) ? T_DOUBLE : -1))
+
#if !defined(T_SIZET)
#if !defined(T_ULONGLONG)
#define T_SIZET \
@@ -223,6 +262,7 @@
static PyObject *__pyx_m;
static PyObject *__pyx_b;
static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm= __FILE__;
@@ -268,6 +308,64 @@
static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name); /*proto*/
+static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+
+/* Run-time type information about structs used with buffers */
+struct __Pyx_StructField_;
+
+typedef struct {
+ const char* name; /* for error messages only */
+ struct __Pyx_StructField_* fields;
+ size_t size; /* sizeof(type) */
+ char typegroup; /* _R_eal, _C_omplex, Signed _I_nt, _U_nsigned int, _S_truct, _P_ointer, _O_bject */
+} __Pyx_TypeInfo;
+
+typedef struct __Pyx_StructField_ {
+ __Pyx_TypeInfo* type;
+ const char* name;
+ size_t offset;
+} __Pyx_StructField;
+
+typedef struct {
+ __Pyx_StructField* field;
+ size_t parent_offset;
+} __Pyx_BufFmt_StackElem;
+
+
+static INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info);
+static int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack);
+
+static void __Pyx_RaiseBufferFallbackError(void); /*proto*/
+static void __Pyx_RaiseBufferIndexError(int axis); /*proto*/
+#define __Pyx_BufPtrStrided1d(type, buf, i0, s0) (type)((char*)buf + i0 * s0)
+
+#define __Pyx_SetItemInt(o, i, v, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
+ __Pyx_SetItemInt_Fast(o, i, v, size <= sizeof(long)) : \
+ __Pyx_SetItemInt_Generic(o, to_py_func(i), v))
+
+static INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
+ int r;
+ if (!j) return -1;
+ r = PyObject_SetItem(o, j, v);
+ Py_DECREF(j);
+ return r;
+}
+
+static INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int fits_long) {
+ if (PyList_CheckExact(o) && ((0 <= i) & (i < PyList_GET_SIZE(o)))) {
+ Py_INCREF(v);
+ Py_DECREF(PyList_GET_ITEM(o, i));
+ PyList_SET_ITEM(o, i, v);
+ return 1;
+ }
+ else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_ass_item && (likely(i >= 0)))
+ return PySequence_SetItem(o, i, v);
+ else {
+ PyObject *j = fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i);
+ return __Pyx_SetItemInt_Generic(o, j, v);
+ }
+}
+
static INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
PyObject *r;
@@ -342,36 +440,17 @@
return r;
}
-static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
-
-/* Run-time type information about structs used with buffers */
-struct __Pyx_StructField_;
-
-typedef struct {
- const char* name; /* for error messages only */
- struct __Pyx_StructField_* fields;
- size_t size; /* sizeof(type) */
- char typegroup; /* _R_eal, _C_omplex, Signed _I_nt, _U_nsigned int, _S_truct, _P_ointer, _O_bject */
-} __Pyx_TypeInfo;
-
-typedef struct __Pyx_StructField_ {
- __Pyx_TypeInfo* type;
- const char* name;
- size_t offset;
-} __Pyx_StructField;
-
-typedef struct {
- __Pyx_StructField* field;
- size_t parent_offset;
-} __Pyx_BufFmt_StackElem;
-
-
-static INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info);
-static int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack);
-#define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1)
-
static INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
static INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+#define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1)
+
+static INLINE void __Pyx_RaiseNoneNotIterableError(void);
+
+static INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
+
+static INLINE void __Pyx_RaiseTooManyValuesError(void);
+
+static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); /*proto*/
#if PY_MAJOR_VERSION < 3
static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags);
static void __Pyx_ReleaseBuffer(Py_buffer *view);
@@ -389,10 +468,6 @@
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
-static INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
-
-static INLINE void __Pyx_RaiseTooManyValuesError(void);
-
static PyObject *__Pyx_UnpackItem(PyObject *, Py_ssize_t index); /*proto*/
static int __Pyx_EndUnpack(PyObject *); /*proto*/
@@ -618,8 +693,6 @@
#endif
-static INLINE int __Pyx_StrEq(const char *, const char *); /*proto*/
-
static INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
static INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
@@ -684,9 +757,9 @@
typedef npy_float64 __pyx_t_5numpy_float64_t;
-typedef npy_complex64 __pyx_t_5numpy_complex64_t;
+typedef __pyx_t_float_complex __pyx_t_5numpy_complex64_t;
-typedef npy_complex128 __pyx_t_5numpy_complex128_t;
+typedef __pyx_t_double_complex __pyx_t_5numpy_complex128_t;
typedef npy_long __pyx_t_5numpy_int_t;
@@ -710,35 +783,62 @@
typedef npy_cdouble __pyx_t_5numpy_complex_t;
-typedef __pyx_t_5numpy_float_t __pyx_t_6svdlib_7_svdlib_DTYPE_t;
-
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":130
- * ###### Python functions ######
+typedef __pyx_t_5numpy_float64_t __pyx_t_6svdlib_7_svdlib_DTYPE_t;
+
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":96
+ * self.offset_for_col = offset_for_col
+ *
+ * cpdef pack(self, row_norms=None): # <<<<<<<<<<<<<<
+ * cdef np.ndarray[DTYPE_t, ndim=1] row_factors # holds row _multiplication_ factors, possibly just 1.
+ * cdef long row, col, index, cols, col_len, rowk
+ */
+
+struct __pyx_opt_args_6svdlib_7_svdlib_9CSCMatrix_pack {
+ int __pyx_n;
+ PyObject *row_norms;
+};
+
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":132
+ * return temp
+ *
+ * cpdef dictPack(self, row_norms=None): # <<<<<<<<<<<<<<
+ * cdef np.ndarray[DTYPE_t, ndim=1] row_factors # holds row _multiplication_ factors, possibly just 1.
+ * if row_norms is None:
+ */
+
+struct __pyx_opt_args_6svdlib_7_svdlib_9CSCMatrix_dictPack {
+ int __pyx_n;
+ PyObject *row_norms;
+};
+
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":74
+ *
*
* cdef class CSCMatrix: # <<<<<<<<<<<<<<
- * __slots__ = ['cmatrix']
* cdef object tensor #holds our Python tensor
+ * cdef object offset_for_row, offset_for_col
*/
struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix {
PyObject_HEAD
struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *__pyx_vtab;
PyObject *tensor;
- PyObject *row_factors;
+ PyObject *offset_for_row;
+ PyObject *offset_for_col;
struct smat *cmatrix;
- struct svdrec *svdrec;
int transposed;
- int rows;
- int cols;
- int nonZero;
+ long rows;
+ long cols;
+ long nonZero;
};
struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix {
- PyObject *(*pack)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int __pyx_skip_dispatch);
- PyObject *(*dictPack)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int __pyx_skip_dispatch);
+ PyObject *(*pack)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int __pyx_skip_dispatch, struct __pyx_opt_args_6svdlib_7_svdlib_9CSCMatrix_pack *__pyx_optional_args);
+ double *(*toVector)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, PyObject *);
+ PyObject *(*dictPack)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int __pyx_skip_dispatch, struct __pyx_opt_args_6svdlib_7_svdlib_9CSCMatrix_dictPack *__pyx_optional_args);
void (*setColumnSize)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int, int);
- void (*setValue)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int, int, float);
+ void (*setValue)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int, int, double);
PyObject *(*svdA)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *__pyx_vtabptr_6svdlib_7_svdlib_CSCMatrix;
@@ -748,11 +848,15 @@
/* Module declarations from stdlib */
+/* Module declarations from stdio */
+
/* Module declarations from numpy */
/* Module declarations from numpy */
static PyTypeObject *__pyx_ptype_5numpy_dtype = 0;
+static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0;
+static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0;
static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0;
static INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, char *, char *, int *); /*proto*/
/* Module declarations from svdlib._svdlib */
@@ -768,12 +872,8 @@
static PyObject *__pyx_int_50;
static PyObject *__pyx_int_100;
static PyObject *__pyx_int_2;
-static PyObject *__pyx_int_0;
-static PyObject *__pyx_int_1;
static char __pyx_k___main__[] = "__main__";
static PyObject *__pyx_kp___main__;
-static char __pyx_k___slots__[] = "__slots__";
-static PyObject *__pyx_kp___slots__;
static char __pyx_k___init__[] = "__init__";
static PyObject *__pyx_kp___init__;
static char __pyx_k_pack[] = "pack";
@@ -790,8 +890,12 @@
static PyObject *__pyx_kp_isvd;
static char __pyx_k_pyTensor[] = "pyTensor";
static PyObject *__pyx_kp_pyTensor;
-static char __pyx_k_row_factors[] = "row_factors";
-static PyObject *__pyx_kp_row_factors;
+static char __pyx_k_offset_for_row[] = "offset_for_row";
+static PyObject *__pyx_kp_offset_for_row;
+static char __pyx_k_offset_for_col[] = "offset_for_col";
+static PyObject *__pyx_kp_offset_for_col;
+static char __pyx_k_row_norms[] = "row_norms";
+static PyObject *__pyx_kp_row_norms;
static char __pyx_k_k[] = "k";
static PyObject *__pyx_kp_k;
static char __pyx_k_niter[] = "niter";
@@ -800,24 +904,34 @@
static PyObject *__pyx_kp_lrate;
static char __pyx_k_tensor[] = "tensor";
static PyObject *__pyx_kp_tensor;
+static char __pyx_k_row_factors[] = "row_factors";
+static PyObject *__pyx_kp_row_factors;
static char __pyx_k_warnings[] = "warnings";
static PyObject *__pyx_kp_warnings;
static char __pyx_k_numpy[] = "numpy";
static PyObject *__pyx_kp_numpy;
static char __pyx_k_np[] = "np";
static PyObject *__pyx_kp_np;
-static char __pyx_k_float[] = "float";
-static PyObject *__pyx_kp_float;
+static char __pyx_k_31[] = "float64";
+static PyObject *__pyx_kp_31;
static char __pyx_k_DTYPE[] = "DTYPE";
static PyObject *__pyx_kp_DTYPE;
-static char __pyx_k_31[] = "cmatrix";
-static PyObject *__pyx_kp_31;
static char __pyx_k_ndim[] = "ndim";
static PyObject *__pyx_kp_ndim;
static char __pyx_k_ValueError[] = "ValueError";
static PyObject *__pyx_kp_ValueError;
static char __pyx_k_shape[] = "shape";
static PyObject *__pyx_kp_shape;
+static char __pyx_k_ones[] = "ones";
+static PyObject *__pyx_kp_ones;
+static char __pyx_k_reciprocal[] = "reciprocal";
+static PyObject *__pyx_kp_reciprocal;
+static char __pyx_k_sqrt[] = "sqrt";
+static PyObject *__pyx_kp_sqrt;
+static char __pyx_k_array[] = "array";
+static PyObject *__pyx_kp_array;
+static char __pyx_k_dtype[] = "dtype";
+static PyObject *__pyx_kp_dtype;
static char __pyx_k_iteritems[] = "iteritems";
static PyObject *__pyx_kp_iteritems;
static char __pyx_k_setdefault[] = "setdefault";
@@ -830,24 +944,20 @@
static PyObject *__pyx_kp_sorted;
static char __pyx_k_keys[] = "keys";
static PyObject *__pyx_kp_keys;
+static char __pyx_k_range[] = "range";
+static PyObject *__pyx_kp_range;
static char __pyx_k__data[] = "_data";
static PyObject *__pyx_kp__data;
static char __pyx_k_warn[] = "warn";
static PyObject *__pyx_kp_warn;
-static char __pyx_k_38[] = "csc.divisi.tensor";
-static PyObject *__pyx_kp_38;
+static char __pyx_k_39[] = "csc.divisi.tensor";
+static PyObject *__pyx_kp_39;
static char __pyx_k_DenseTensor[] = "DenseTensor";
static PyObject *__pyx_kp_DenseTensor;
static char __pyx_k_add[] = "add";
static PyObject *__pyx_kp_add;
static char __pyx_k_zeros[] = "zeros";
static PyObject *__pyx_kp_zeros;
-static char __pyx_k_dtype[] = "dtype";
-static PyObject *__pyx_kp_dtype;
-static char __pyx_k_range[] = "range";
-static PyObject *__pyx_kp_range;
-static char __pyx_k_sqrt[] = "sqrt";
-static PyObject *__pyx_kp_sqrt;
static char __pyx_k_reduce[] = "reduce";
static PyObject *__pyx_kp_reduce;
static char __pyx_k_multiply[] = "multiply";
@@ -860,18 +970,19 @@
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_kp_34;
static char __pyx_k_34[] = "You can only pack a 2 dimensional tensor";
-static PyObject *__pyx_kp_35;
-static char __pyx_k_35[] = "<CSCMatrix>";
+static char __pyx_k_35[] = "toVector";
static PyObject *__pyx_kp_36;
-static char __pyx_k_36[] = "Column %d is empty";
+static char __pyx_k_36[] = "<CSCMatrix>";
static PyObject *__pyx_kp_37;
-static char __pyx_k_37[] = "Matrix has zero value (row %d, index %d)";
-static PyObject *__pyx_kp_39;
+static char __pyx_k_37[] = "Column %d is empty";
+static PyObject *__pyx_kp_38;
+static char __pyx_k_38[] = "Matrix has zero value (row %d, index %d)";
static PyObject *__pyx_kp_40;
static PyObject *__pyx_kp_41;
-static char __pyx_k_39[] = "COMPUTING INCREMENTAL SVD";
-static char __pyx_k_40[] = "ROWS: %d, COLUMNS: %d, VALS: %d";
-static char __pyx_k_41[] = "K: %d, LEARNING_RATE: %r, ITERATIONS: %d";
+static PyObject *__pyx_kp_42;
+static char __pyx_k_40[] = "COMPUTING INCREMENTAL SVD";
+static char __pyx_k_41[] = "ROWS: %d, COLUMNS: %d, VALS: %d";
+static char __pyx_k_42[] = "K: %d, LEARNING_RATE: %r, ITERATIONS: %d";
static PyObject *__pyx_int_15;
static char __pyx_k___getbuffer__[] = "__getbuffer__";
static PyObject *__pyx_kp___getbuffer__;
@@ -881,8 +992,6 @@
static PyObject *__pyx_kp_info;
static char __pyx_k_flags[] = "flags";
static PyObject *__pyx_kp_flags;
-static char __pyx_k_itervalues[] = "itervalues";
-static PyObject *__pyx_kp_itervalues;
static char __pyx_k_RuntimeError[] = "RuntimeError";
static PyObject *__pyx_kp_RuntimeError;
static PyObject *__pyx_kp_1;
@@ -925,34 +1034,37 @@
static char __pyx_k_29[] = "Format string allocated too short.";
static char __pyx_k_30[] = "unknown dtype code in numpy.pxd (%d)";
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":139
- * cdef int rows, cols
- * cdef int nonZero #number of non zero entries in matrix
- * def __init__(self, pyTensor, row_factors=None): # <<<<<<<<<<<<<<
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":81
+ * cdef long rows, cols
+ * cdef long nonZero #number of non zero entries in matrix
+ * def __init__(self, pyTensor, offset_for_row=None, offset_for_col=None): # <<<<<<<<<<<<<<
* #init function takes 1 or 2 arguments, the Python tensor, and an array representing
- * #the row _factors to divide by
+ * #the row_factors to divide by
*/
static int __pyx_pf_6svdlib_7_svdlib_9CSCMatrix___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6svdlib_7_svdlib_9CSCMatrix___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_pyTensor = 0;
- PyObject *__pyx_v_row_factors = 0;
+ PyObject *__pyx_v_offset_for_row = 0;
+ PyObject *__pyx_v_offset_for_col = 0;
int __pyx_r;
PyObject *__pyx_1 = 0;
PyObject *__pyx_2 = 0;
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
int __pyx_t_3;
- int __pyx_t_4;
- int __pyx_t_5;
+ long __pyx_t_4;
+ long __pyx_t_5;
Py_ssize_t __pyx_t_6;
- static PyObject **__pyx_pyargnames[] = {&__pyx_kp_pyTensor,&__pyx_kp_row_factors,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_kp_pyTensor,&__pyx_kp_offset_for_row,&__pyx_kp_offset_for_col,0};
__Pyx_SetupRefcountContext("__init__");
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
- PyObject* values[2] = {0,0};
+ PyObject* values[3] = {0,0,0};
values[1] = Py_None;
+ values[2] = Py_None;
switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
case 0: break;
@@ -965,19 +1077,27 @@
else goto __pyx_L5_argtuple_error;
case 1:
if (kw_args > 1) {
- PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_row_factors);
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset_for_row);
if (unlikely(value)) { values[1] = value; kw_args--; }
}
+ case 2:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset_for_col);
+ if (unlikely(value)) { values[2] = value; kw_args--; }
+ }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
__pyx_v_pyTensor = values[0];
- __pyx_v_row_factors = values[1];
+ __pyx_v_offset_for_row = values[1];
+ __pyx_v_offset_for_col = values[2];
} else {
- __pyx_v_row_factors = Py_None;
+ __pyx_v_offset_for_row = Py_None;
+ __pyx_v_offset_for_col = Py_None;
switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 2: __pyx_v_row_factors = PyTuple_GET_ITEM(__pyx_args, 1);
+ case 3: __pyx_v_offset_for_col = PyTuple_GET_ITEM(__pyx_args, 2);
+ case 2: __pyx_v_offset_for_row = PyTuple_GET_ITEM(__pyx_args, 1);
case 1: __pyx_v_pyTensor = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
@@ -985,15 +1105,15 @@
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("svdlib._svdlib.CSCMatrix.__init__");
return -1;
__pyx_L4_argument_unpacking_done:;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":142
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":84
* #init function takes 1 or 2 arguments, the Python tensor, and an array representing
- * #the row _factors to divide by
+ * #the row_factors to divide by
* self.tensor = pyTensor # <<<<<<<<<<<<<<
* self.transposed = 0
*
@@ -1004,8 +1124,8 @@
__Pyx_DECREF(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->tensor);
((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->tensor = __pyx_v_pyTensor;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":143
- * #the row _factors to divide by
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":85
+ * #the row_factors to divide by
* self.tensor = pyTensor
* self.transposed = 0 # <<<<<<<<<<<<<<
*
@@ -1013,118 +1133,131 @@
*/
((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->transposed = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":145
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":87
* self.transposed = 0
*
* if self.tensor.ndim != 2: # <<<<<<<<<<<<<<
* raise ValueError("You can only pack a 2 dimensional tensor")
* self.rows, self.cols = self.tensor.shape
*/
- __pyx_t_1 = PyObject_GetAttr(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->tensor, __pyx_kp_ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->tensor, __pyx_kp_ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_2, Py_NE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_2, Py_NE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__pyx_t_3) {
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":146
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":88
*
* if self.tensor.ndim != 2:
* raise ValueError("You can only pack a 2 dimensional tensor") # <<<<<<<<<<<<<<
* self.rows, self.cols = self.tensor.shape
* self.nonZero = len(self.tensor)
*/
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
__Pyx_INCREF(__pyx_kp_34);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_34);
__Pyx_GIVEREF(__pyx_kp_34);
- __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L6;
}
__pyx_L6:;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":147
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":89
* if self.tensor.ndim != 2:
* raise ValueError("You can only pack a 2 dimensional tensor")
* self.rows, self.cols = self.tensor.shape # <<<<<<<<<<<<<<
* self.nonZero = len(self.tensor)
* assert self.nonZero != 0
*/
- __pyx_t_1 = PyObject_GetAttr(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->tensor, __pyx_kp_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->tensor, __pyx_kp_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 2)) {
PyObject* tuple = __pyx_t_1;
__pyx_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_2);
- __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __Pyx_PyInt_AsLong(__pyx_2); if (unlikely((__pyx_t_4 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
__pyx_2 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_2);
- __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_PyInt_AsLong(__pyx_2); if (unlikely((__pyx_t_5 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->rows = __pyx_t_4;
((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->cols = __pyx_t_5;
} else {
- __pyx_1 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_2);
- __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- __pyx_2 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_2);
- __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_2);
+ __pyx_t_5 = __Pyx_PyInt_AsLong(__pyx_2); if (unlikely((__pyx_t_5 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
+ __pyx_2 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_2);
+ __pyx_t_4 = __Pyx_PyInt_AsLong(__pyx_2); if (unlikely((__pyx_t_4 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
+ if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->rows = __pyx_t_5;
((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->cols = __pyx_t_4;
}
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":148
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":90
* raise ValueError("You can only pack a 2 dimensional tensor")
* self.rows, self.cols = self.tensor.shape
* self.nonZero = len(self.tensor) # <<<<<<<<<<<<<<
* assert self.nonZero != 0
*
*/
- __pyx_t_6 = PyObject_Length(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->tensor); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyObject_Length(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->tensor); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->nonZero = __pyx_t_6;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":149
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":91
* self.rows, self.cols = self.tensor.shape
* self.nonZero = len(self.tensor)
* assert self.nonZero != 0 # <<<<<<<<<<<<<<
*
- * self.row_factors = row_factors
+ * self.offset_for_row = offset_for_row
*/
#ifndef PYREX_WITHOUT_ASSERTIONS
if (unlikely(!(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->nonZero != 0))) {
PyErr_SetNone(PyExc_AssertionError);
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":151
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":93
* assert self.nonZero != 0
*
- * self.row_factors = row_factors # <<<<<<<<<<<<<<
- *
- * cpdef pack(self):
- */
- __Pyx_INCREF(__pyx_v_row_factors);
- __Pyx_GIVEREF(__pyx_v_row_factors);
- __Pyx_GOTREF(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->row_factors);
- __Pyx_DECREF(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->row_factors);
- ((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->row_factors = __pyx_v_row_factors;
+ * self.offset_for_row = offset_for_row # <<<<<<<<<<<<<<
+ * self.offset_for_col = offset_for_col
+ *
+ */
+ __Pyx_INCREF(__pyx_v_offset_for_row);
+ __Pyx_GIVEREF(__pyx_v_offset_for_row);
+ __Pyx_GOTREF(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->offset_for_row);
+ __Pyx_DECREF(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->offset_for_row);
+ ((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->offset_for_row = __pyx_v_offset_for_row;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":94
+ *
+ * self.offset_for_row = offset_for_row
+ * self.offset_for_col = offset_for_col # <<<<<<<<<<<<<<
+ *
+ * cpdef pack(self, row_norms=None):
+ */
+ __Pyx_INCREF(__pyx_v_offset_for_col);
+ __Pyx_GIVEREF(__pyx_v_offset_for_col);
+ __Pyx_GOTREF(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->offset_for_col);
+ __Pyx_DECREF(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->offset_for_col);
+ ((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->offset_for_col = __pyx_v_offset_for_col;
__pyx_r = 0;
goto __pyx_L0;
@@ -1140,82 +1273,236 @@
return __pyx_r;
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":153
- * self.row_factors = row_factors
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":96
+ * self.offset_for_col = offset_for_col
*
- * cpdef pack(self): # <<<<<<<<<<<<<<
- * self.cmatrix = svdNewSMat(self.rows, self.cols, self.nonZero)
- * self.transposed = 0
+ * cpdef pack(self, row_norms=None): # <<<<<<<<<<<<<<
+ * cdef np.ndarray[DTYPE_t, ndim=1] row_factors # holds row _multiplication_ factors, possibly just 1.
+ * cdef long row, col, index, cols, col_len, rowk
*/
-static PyObject *__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_pack(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
-static PyObject *__pyx_f_6svdlib_7_svdlib_9CSCMatrix_pack(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *__pyx_v_self, int __pyx_skip_dispatch) {
+static PyObject *__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_pack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6svdlib_7_svdlib_9CSCMatrix_pack(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6svdlib_7_svdlib_9CSCMatrix_pack *__pyx_optional_args) {
+ PyObject *__pyx_v_row_norms = Py_None;
+ PyArrayObject *__pyx_v_row_factors;
+ long __pyx_v_row;
+ long __pyx_v_col;
+ long __pyx_v_index;
+ long __pyx_v_cols;
+ long __pyx_v_col_len;
+ long __pyx_v_rowk;
+ double __pyx_v_value;
PyObject *__pyx_v_columnDict;
- PyObject *__pyx_v_cols;
- PyObject *__pyx_v_row;
- PyObject *__pyx_v_column;
- PyObject *__pyx_v_value;
- PyObject *__pyx_v_index;
- PyObject *__pyx_v_colnum;
- PyObject *__pyx_v_col_len;
- PyObject *__pyx_v_rowk;
+ Py_buffer __pyx_bstruct_row_factors;
+ Py_ssize_t __pyx_bstride_0_row_factors = 0;
+ Py_ssize_t __pyx_bshape_0_row_factors = 0;
PyObject *__pyx_r = NULL;
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_t_1 = NULL;
- Py_ssize_t __pyx_t_2;
- PyObject *__pyx_t_3 = NULL;
- int __pyx_t_4;
- double __pyx_t_5;
- PyObject *__pyx_t_6 = NULL;
+ PyObject *__pyx_t_2 = NULL;
+ int __pyx_t_3;
+ PyObject *__pyx_t_4 = NULL;
+ PyArrayObject *__pyx_t_5 = NULL;
+ int __pyx_t_6;
PyObject *__pyx_t_7 = NULL;
- Py_ssize_t __pyx_t_8;
- int __pyx_t_9;
- int __pyx_t_10;
- float __pyx_t_11;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ Py_ssize_t __pyx_t_12;
+ double __pyx_t_13;
+ long __pyx_t_14;
+ long __pyx_t_15;
+ long __pyx_t_16;
__Pyx_SetupRefcountContext("pack");
+ if (__pyx_optional_args) {
+ if (__pyx_optional_args->__pyx_n > 0) {
+ __pyx_v_row_norms = __pyx_optional_args->row_norms;
+ }
+ }
+ __pyx_v_row_factors = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None);
__pyx_v_columnDict = Py_None; __Pyx_INCREF(Py_None);
- __pyx_v_cols = Py_None; __Pyx_INCREF(Py_None);
- __pyx_v_row = Py_None; __Pyx_INCREF(Py_None);
- __pyx_v_column = Py_None; __Pyx_INCREF(Py_None);
- __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);
- __pyx_v_index = Py_None; __Pyx_INCREF(Py_None);
- __pyx_v_colnum = Py_None; __Pyx_INCREF(Py_None);
- __pyx_v_col_len = Py_None; __Pyx_INCREF(Py_None);
- __pyx_v_rowk = Py_None; __Pyx_INCREF(Py_None);
+ __pyx_bstruct_row_factors.buf = NULL;
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overriden in Python */
else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
- __pyx_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_kp_pack); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_kp_pack); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
if (!PyCFunction_Check(__pyx_1) || (PyCFunction_GET_FUNCTION(__pyx_1) != (void *)&__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_pack)) {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+ __Pyx_INCREF(__pyx_v_row_norms);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_row_norms);
+ __Pyx_GIVEREF(__pyx_v_row_norms);
+ __pyx_t_2 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
goto __pyx_L0;
}
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
}
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":154
- *
- * cpdef pack(self):
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":100
+ * cdef long row, col, index, cols, col_len, rowk
+ * cdef double value
+ * if row_norms is None: # <<<<<<<<<<<<<<
+ * row_factors = np.ones(self.rows)
+ * else:
+ */
+ __pyx_t_3 = (__pyx_v_row_norms == Py_None);
+ if (__pyx_t_3) {
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":101
+ * cdef double value
+ * if row_norms is None:
+ * row_factors = np.ones(self.rows) # <<<<<<<<<<<<<<
+ * else:
+ * row_factors = np.reciprocal(np.sqrt(np.array(row_norms, dtype=DTYPE)))
+ */
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_1);
+ __pyx_t_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_ones); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+ __pyx_t_1 = PyInt_FromLong(__pyx_v_self->rows); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+ if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = ((PyArrayObject *)__pyx_t_1);
+ {
+ __Pyx_BufFmt_StackElem __pyx_stack[1];
+ __Pyx_SafeReleaseBuffer(&__pyx_bstruct_row_factors);
+ __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_row_factors, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_6svdlib_7_svdlib_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+ if (unlikely(__pyx_t_6 < 0)) {
+ PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+ if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_row_factors, (PyObject*)__pyx_v_row_factors, &__Pyx_TypeInfo_nn___pyx_t_6svdlib_7_svdlib_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+ Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
+ __Pyx_RaiseBufferFallbackError();
+ } else {
+ PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+ }
+ }
+ __pyx_bstride_0_row_factors = __pyx_bstruct_row_factors.strides[0];
+ __pyx_bshape_0_row_factors = __pyx_bstruct_row_factors.shape[0];
+ if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ }
+ __pyx_t_5 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_v_row_factors));
+ __pyx_v_row_factors = ((PyArrayObject *)__pyx_t_1);
+ __pyx_t_1 = 0;
+ goto __pyx_L3;
+ }
+ /*else*/ {
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":103
+ * row_factors = np.ones(self.rows)
+ * else:
+ * row_factors = np.reciprocal(np.sqrt(np.array(row_norms, dtype=DTYPE))) # <<<<<<<<<<<<<<
+ *
+ * self.cmatrix = svdNewSMat(self.rows, self.cols, self.nonZero)
+ */
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_1);
+ __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_reciprocal); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_1);
+ __pyx_t_4 = PyObject_GetAttr(__pyx_1, __pyx_kp_sqrt); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_1);
+ __pyx_t_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+ __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_10));
+ __Pyx_INCREF(__pyx_v_row_norms);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_row_norms);
+ __Pyx_GIVEREF(__pyx_v_row_norms);
+ __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_1));
+ __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_DTYPE); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_2);
+ if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
+ __pyx_t_11 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_t_10), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
+ __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_10));
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
+ __Pyx_GIVEREF(__pyx_t_11);
+ __pyx_t_11 = 0;
+ __pyx_t_11 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+ __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_10));
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
+ __Pyx_GIVEREF(__pyx_t_11);
+ __pyx_t_11 = 0;
+ __pyx_t_11 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+ if (!(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = ((PyArrayObject *)__pyx_t_11);
+ {
+ __Pyx_BufFmt_StackElem __pyx_stack[1];
+ __Pyx_SafeReleaseBuffer(&__pyx_bstruct_row_factors);
+ __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_row_factors, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_6svdlib_7_svdlib_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+ if (unlikely(__pyx_t_6 < 0)) {
+ PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
+ if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_row_factors, (PyObject*)__pyx_v_row_factors, &__Pyx_TypeInfo_nn___pyx_t_6svdlib_7_svdlib_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+ Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
+ __Pyx_RaiseBufferFallbackError();
+ } else {
+ PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
+ }
+ }
+ __pyx_bstride_0_row_factors = __pyx_bstruct_row_factors.strides[0];
+ __pyx_bshape_0_row_factors = __pyx_bstruct_row_factors.shape[0];
+ if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ }
+ __pyx_t_5 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_v_row_factors));
+ __pyx_v_row_factors = ((PyArrayObject *)__pyx_t_11);
+ __pyx_t_11 = 0;
+ }
+ __pyx_L3:;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":105
+ * row_factors = np.reciprocal(np.sqrt(np.array(row_norms, dtype=DTYPE)))
+ *
* self.cmatrix = svdNewSMat(self.rows, self.cols, self.nonZero) # <<<<<<<<<<<<<<
* self.transposed = 0
* columnDict = {}
*/
__pyx_v_self->cmatrix = svdNewSMat(__pyx_v_self->rows, __pyx_v_self->cols, __pyx_v_self->nonZero);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":155
- * cpdef pack(self):
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":106
+ *
* self.cmatrix = svdNewSMat(self.rows, self.cols, self.nonZero)
* self.transposed = 0 # <<<<<<<<<<<<<<
* columnDict = {}
@@ -1223,439 +1510,391 @@
*/
__pyx_v_self->transposed = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":156
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":107
* self.cmatrix = svdNewSMat(self.rows, self.cols, self.nonZero)
* self.transposed = 0
* columnDict = {} # <<<<<<<<<<<<<<
* cols = self.cols
- * for (row, column), value in self.tensor.iteritems():
+ * for (row, col), value in self.tensor.iteritems():
*/
- __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_1));
+ __pyx_2 = PyDict_New(); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_2));
__Pyx_DECREF(__pyx_v_columnDict);
- __pyx_v_columnDict = ((PyObject *)__pyx_1);
- __pyx_1 = 0;
+ __pyx_v_columnDict = ((PyObject *)__pyx_2);
+ __pyx_2 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":157
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":108
* self.transposed = 0
* columnDict = {}
* cols = self.cols # <<<<<<<<<<<<<<
- * for (row, column), value in self.tensor.iteritems():
- * if self.row_factors is not None:
+ * for (row, col), value in self.tensor.iteritems():
+ * columnDict.setdefault(col, {})[row] = value * row_factors[row]
*/
- __pyx_t_1 = PyInt_FromLong(__pyx_v_self->cols); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_v_cols);
- __pyx_v_cols = __pyx_t_1;
- __pyx_t_1 = 0;
+ __pyx_v_cols = __pyx_v_self->cols;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":158
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":109
* columnDict = {}
* cols = self.cols
- * for (row, column), value in self.tensor.iteritems(): # <<<<<<<<<<<<<<
- * if self.row_factors is not None:
- * value /= sqrt(self.row_factors[row])
+ * for (row, col), value in self.tensor.iteritems(): # <<<<<<<<<<<<<<
+ * columnDict.setdefault(col, {})[row] = value * row_factors[row]
+ * assert len(columnDict) <= cols
*/
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_self->tensor, __pyx_kp_iteritems); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
- __pyx_t_2 = 0; __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_11 = PyObject_GetAttr(__pyx_v_self->tensor, __pyx_kp_iteritems); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_10 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (PyList_CheckExact(__pyx_t_10) || PyTuple_CheckExact(__pyx_t_10)) {
+ __pyx_t_12 = 0; __pyx_t_11 = __pyx_t_10; __Pyx_INCREF(__pyx_t_11);
} else {
- __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_12 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_11);
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
for (;;) {
- if (likely(PyList_CheckExact(__pyx_t_1))) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++;
- } else if (likely(PyTuple_CheckExact(__pyx_t_1))) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++;
+ if (likely(PyList_CheckExact(__pyx_t_11))) {
+ if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_11)) break;
+ __pyx_t_10 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_10); __pyx_t_12++;
+ } else if (likely(PyTuple_CheckExact(__pyx_t_11))) {
+ if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_11)) break;
+ __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_10); __pyx_t_12++;
} else {
- __pyx_t_3 = PyIter_Next(__pyx_t_1);
- if (!__pyx_t_3) {
- if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_10 = PyIter_Next(__pyx_t_11);
+ if (!__pyx_t_10) {
+ if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
break;
}
- __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GOTREF(__pyx_t_10);
}
- if (PyTuple_CheckExact(__pyx_t_3) && likely(PyTuple_GET_SIZE(__pyx_t_3) == 2)) {
- PyObject* tuple = __pyx_t_3;
+ if (PyTuple_CheckExact(__pyx_t_10) && likely(PyTuple_GET_SIZE(__pyx_t_10) == 2)) {
+ PyObject* tuple = __pyx_t_10;
__pyx_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_2);
__pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_3); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (PyTuple_CheckExact(__pyx_2) && likely(PyTuple_GET_SIZE(__pyx_2) == 2)) {
PyObject* tuple = __pyx_2;
- __pyx_5 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_5);
- __pyx_6 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_6);
+ __pyx_4 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_4);
+ __pyx_t_14 = __Pyx_PyInt_AsLong(__pyx_4); if (unlikely((__pyx_t_14 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
+ __pyx_4 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_4);
+ __pyx_t_15 = __Pyx_PyInt_AsLong(__pyx_4); if (unlikely((__pyx_t_15 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- __Pyx_DECREF(__pyx_v_row);
- __pyx_v_row = __pyx_5;
- __pyx_5 = 0;
- __Pyx_DECREF(__pyx_v_column);
- __pyx_v_column = __pyx_6;
- __pyx_6 = 0;
+ __pyx_v_row = __pyx_t_14;
+ __pyx_v_col = __pyx_t_15;
} else {
- __pyx_4 = PyObject_GetIter(__pyx_2); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_4);
+ __pyx_3 = PyObject_GetIter(__pyx_2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_3);
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- __pyx_5 = __Pyx_UnpackItem(__pyx_4, 0); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_5);
- __pyx_6 = __Pyx_UnpackItem(__pyx_4, 1); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_6);
- if (__Pyx_EndUnpack(__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
- __Pyx_DECREF(__pyx_v_row);
- __pyx_v_row = __pyx_5;
- __pyx_5 = 0;
- __Pyx_DECREF(__pyx_v_column);
- __pyx_v_column = __pyx_6;
- __pyx_6 = 0;
+ __pyx_4 = __Pyx_UnpackItem(__pyx_3, 0); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_4);
+ __pyx_t_15 = __Pyx_PyInt_AsLong(__pyx_4); if (unlikely((__pyx_t_15 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
+ __pyx_4 = __Pyx_UnpackItem(__pyx_3, 1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_4);
+ __pyx_t_14 = __Pyx_PyInt_AsLong(__pyx_4); if (unlikely((__pyx_t_14 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
+ if (__Pyx_EndUnpack(__pyx_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
+ __pyx_v_row = __pyx_t_15;
+ __pyx_v_col = __pyx_t_14;
}
- __Pyx_DECREF(__pyx_v_value);
- __pyx_v_value = __pyx_3;
- __pyx_3 = 0;
+ __pyx_v_value = __pyx_t_13;
} else {
- __pyx_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_2);
- __pyx_3 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_3 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_3);
- if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_3); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
+ if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
if (PyTuple_CheckExact(__pyx_2) && likely(PyTuple_GET_SIZE(__pyx_2) == 2)) {
PyObject* tuple = __pyx_2;
- __pyx_5 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_5);
- __pyx_6 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_6);
+ __pyx_4 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_4);
+ __pyx_t_14 = __Pyx_PyInt_AsLong(__pyx_4); if (unlikely((__pyx_t_14 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
+ __pyx_4 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_4);
+ __pyx_t_15 = __Pyx_PyInt_AsLong(__pyx_4); if (unlikely((__pyx_t_15 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- __Pyx_DECREF(__pyx_v_row);
- __pyx_v_row = __pyx_5;
- __pyx_5 = 0;
- __Pyx_DECREF(__pyx_v_column);
- __pyx_v_column = __pyx_6;
- __pyx_6 = 0;
+ __pyx_v_row = __pyx_t_14;
+ __pyx_v_col = __pyx_t_15;
} else {
- __pyx_4 = PyObject_GetIter(__pyx_2); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_4);
+ __pyx_3 = PyObject_GetIter(__pyx_2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_3);
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- __pyx_5 = __Pyx_UnpackItem(__pyx_4, 0); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_5);
- __pyx_6 = __Pyx_UnpackItem(__pyx_4, 1); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_6);
- if (__Pyx_EndUnpack(__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
- __Pyx_DECREF(__pyx_v_row);
- __pyx_v_row = __pyx_5;
- __pyx_5 = 0;
- __Pyx_DECREF(__pyx_v_column);
- __pyx_v_column = __pyx_6;
- __pyx_6 = 0;
+ __pyx_4 = __Pyx_UnpackItem(__pyx_3, 0); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_4);
+ __pyx_t_15 = __Pyx_PyInt_AsLong(__pyx_4); if (unlikely((__pyx_t_15 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
+ __pyx_4 = __Pyx_UnpackItem(__pyx_3, 1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_4);
+ __pyx_t_14 = __Pyx_PyInt_AsLong(__pyx_4); if (unlikely((__pyx_t_14 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
+ if (__Pyx_EndUnpack(__pyx_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
+ __pyx_v_row = __pyx_t_15;
+ __pyx_v_col = __pyx_t_14;
}
- __Pyx_DECREF(__pyx_v_value);
- __pyx_v_value = __pyx_3;
- __pyx_3 = 0;
+ __pyx_v_value = __pyx_t_13;
}
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":159
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":110
* cols = self.cols
- * for (row, column), value in self.tensor.iteritems():
- * if self.row_factors is not None: # <<<<<<<<<<<<<<
- * value /= sqrt(self.row_factors[row])
- * columnDict.setdefault(column, {})[row] = value
- */
- __pyx_t_4 = (__pyx_v_self->row_factors != Py_None);
- if (__pyx_t_4) {
-
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":160
- * for (row, column), value in self.tensor.iteritems():
- * if self.row_factors is not None:
- * value /= sqrt(self.row_factors[row]) # <<<<<<<<<<<<<<
- * columnDict.setdefault(column, {})[row] = value
- * assert len(columnDict) <= cols
- */
- __pyx_5 = PyObject_GetItem(__pyx_v_self->row_factors, __pyx_v_row); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_5);
- __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_5); __pyx_5 = 0;
- __pyx_t_3 = PyFloat_FromDouble(sqrt(__pyx_t_5)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_4 = PyNumber_InPlaceDivide(__pyx_v_value, __pyx_t_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_v_value);
- __pyx_v_value = __pyx_4;
- __pyx_4 = 0;
- goto __pyx_L5;
- }
- __pyx_L5:;
-
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":161
- * if self.row_factors is not None:
- * value /= sqrt(self.row_factors[row])
- * columnDict.setdefault(column, {})[row] = value # <<<<<<<<<<<<<<
+ * for (row, col), value in self.tensor.iteritems():
+ * columnDict.setdefault(col, {})[row] = value * row_factors[row] # <<<<<<<<<<<<<<
* assert len(columnDict) <= cols
* index = 0
*/
- __pyx_t_3 = PyObject_GetAttr(__pyx_v_columnDict, __pyx_kp_setdefault); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_6 = PyDict_New(); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_6));
- __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_6));
- __Pyx_INCREF(__pyx_v_column);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_column);
- __Pyx_GIVEREF(__pyx_v_column);
- PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_6));
- __Pyx_GIVEREF(((PyObject *)__pyx_6));
- __pyx_6 = 0;
- __pyx_t_7 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- if (PyObject_SetItem(__pyx_t_7, __pyx_v_row, __pyx_v_value) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_14 = __pyx_v_row;
+ __pyx_t_6 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_bshape_0_row_factors;
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_6 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_bshape_0_row_factors)) __pyx_t_6 = 0;
+ if (unlikely(__pyx_t_6 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_6);
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ }
+ __pyx_t_10 = PyFloat_FromDouble((__pyx_v_value * (*__Pyx_BufPtrStrided1d(__pyx_t_6svdlib_7_svdlib_DTYPE_t *, __pyx_bstruct_row_factors.buf, __pyx_t_14, __pyx_bstride_0_row_factors)))); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_1 = PyObject_GetAttr(__pyx_v_columnDict, __pyx_kp_setdefault); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PyInt_FromLong(__pyx_v_col); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_4 = PyDict_New(); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_4));
+ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_4));
+ __Pyx_GIVEREF(((PyObject *)__pyx_4));
+ __pyx_t_4 = 0;
+ __pyx_4 = 0;
+ __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+ if (__Pyx_SetItemInt(__pyx_t_4, __pyx_v_row, __pyx_t_10, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":162
- * value /= sqrt(self.row_factors[row])
- * columnDict.setdefault(column, {})[row] = value
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":111
+ * for (row, col), value in self.tensor.iteritems():
+ * columnDict.setdefault(col, {})[row] = value * row_factors[row]
* assert len(columnDict) <= cols # <<<<<<<<<<<<<<
* index = 0
- * for colnum in xrange(cols):
+ * for col in xrange(cols):
*/
#ifndef PYREX_WITHOUT_ASSERTIONS
- __pyx_t_2 = PyObject_Length(__pyx_v_columnDict); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_v_cols, Py_LE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (unlikely(!__pyx_t_4)) {
+ __pyx_t_12 = PyObject_Length(__pyx_v_columnDict); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!(__pyx_t_12 <= __pyx_v_cols))) {
PyErr_SetNone(PyExc_AssertionError);
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":163
- * columnDict.setdefault(column, {})[row] = value
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":112
+ * columnDict.setdefault(col, {})[row] = value * row_factors[row]
* assert len(columnDict) <= cols
* index = 0 # <<<<<<<<<<<<<<
- * for colnum in xrange(cols):
- * col_len = len(columnDict.get(colnum, []))
+ * for col in xrange(cols):
+ * col_len = len(columnDict.get(col, []))
*/
- __Pyx_INCREF(__pyx_int_0);
- __Pyx_DECREF(__pyx_v_index);
- __pyx_v_index = __pyx_int_0;
+ __pyx_v_index = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":164
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":113
* assert len(columnDict) <= cols
* index = 0
- * for colnum in xrange(cols): # <<<<<<<<<<<<<<
- * col_len = len(columnDict.get(colnum, []))
- * self.setColumnSize(colnum, col_len)
+ * for col in xrange(cols): # <<<<<<<<<<<<<<
+ * col_len = len(columnDict.get(col, []))
+ * self.setColumnSize(col, col_len)
*/
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_7));
- __Pyx_INCREF(__pyx_v_cols);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_cols);
- __Pyx_GIVEREF(__pyx_v_cols);
- __pyx_t_1 = PyObject_Call(__pyx_builtin_xrange, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
- if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) {
- __pyx_t_2 = 0; __pyx_t_7 = __pyx_t_1; __Pyx_INCREF(__pyx_t_7);
- } else {
- __pyx_t_2 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_7);
- }
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- for (;;) {
- if (likely(PyList_CheckExact(__pyx_t_7))) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_7)) break;
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++;
- } else if (likely(PyTuple_CheckExact(__pyx_t_7))) {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++;
- } else {
- __pyx_t_1 = PyIter_Next(__pyx_t_7);
- if (!__pyx_t_1) {
- if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- break;
- }
- __Pyx_GOTREF(__pyx_t_1);
- }
- __Pyx_DECREF(__pyx_v_colnum);
- __pyx_v_colnum = __pyx_t_1;
- __pyx_t_1 = 0;
+ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_v_cols; __pyx_t_15+=1) {
+ __pyx_v_col = __pyx_t_15;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":165
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":114
* index = 0
- * for colnum in xrange(cols):
- * col_len = len(columnDict.get(colnum, [])) # <<<<<<<<<<<<<<
- * self.setColumnSize(colnum, col_len)
- * if col_len == 0: continue
- */
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_columnDict, __pyx_kp_get); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_6));
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __Pyx_INCREF(__pyx_v_colnum);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_colnum);
- __Pyx_GIVEREF(__pyx_v_colnum);
- PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_t_6));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
- __pyx_t_6 = 0;
- __pyx_t_6 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_8 = PyObject_Length(__pyx_t_6); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_v_col_len);
- __pyx_v_col_len = __pyx_t_6;
- __pyx_t_6 = 0;
-
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":166
- * for colnum in xrange(cols):
- * col_len = len(columnDict.get(colnum, []))
- * self.setColumnSize(colnum, col_len) # <<<<<<<<<<<<<<
- * if col_len == 0: continue
- * for rowk in sorted(columnDict[colnum].keys()):
- */
- __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_colnum); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_v_col_len); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self->__pyx_vtab)->setColumnSize(__pyx_v_self, __pyx_t_9, __pyx_t_10);
-
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":167
- * col_len = len(columnDict.get(colnum, []))
- * self.setColumnSize(colnum, col_len)
+ * for col in xrange(cols):
+ * col_len = len(columnDict.get(col, [])) # <<<<<<<<<<<<<<
+ * self.setColumnSize(col, col_len)
+ * if col_len == 0: continue
+ */
+ __pyx_t_11 = PyObject_GetAttr(__pyx_v_columnDict, __pyx_kp_get); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_10 = PyInt_FromLong(__pyx_v_col); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_10);
+ __Pyx_GIVEREF(__pyx_t_10);
+ PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_t_4));
+ __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+ __pyx_t_10 = 0;
+ __pyx_t_4 = 0;
+ __pyx_t_4 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+ __pyx_t_12 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_col_len = __pyx_t_12;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":115
+ * for col in xrange(cols):
+ * col_len = len(columnDict.get(col, []))
+ * self.setColumnSize(col, col_len) # <<<<<<<<<<<<<<
+ * if col_len == 0: continue
+ * for rowk in sorted(columnDict[col].keys()):
+ */
+ ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self->__pyx_vtab)->setColumnSize(__pyx_v_self, __pyx_v_col, __pyx_v_col_len);
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":116
+ * col_len = len(columnDict.get(col, []))
+ * self.setColumnSize(col, col_len)
* if col_len == 0: continue # <<<<<<<<<<<<<<
- * for rowk in sorted(columnDict[colnum].keys()):
- * self.setValue(index, rowk,
+ * for rowk in sorted(columnDict[col].keys()):
+ * self.setValue(index, rowk, columnDict[col][rowk])
*/
- __pyx_t_6 = PyObject_RichCompare(__pyx_v_col_len, __pyx_int_0, Py_EQ); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (__pyx_t_4) {
+ __pyx_t_3 = (__pyx_v_col_len == 0);
+ if (__pyx_t_3) {
goto __pyx_L6_continue;
goto __pyx_L8;
}
__pyx_L8:;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":168
- * self.setColumnSize(colnum, col_len)
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":117
+ * self.setColumnSize(col, col_len)
* if col_len == 0: continue
- * for rowk in sorted(columnDict[colnum].keys()): # <<<<<<<<<<<<<<
- * self.setValue(index, rowk,
- * float(columnDict[colnum][rowk]))
+ * for rowk in sorted(columnDict[col].keys()): # <<<<<<<<<<<<<<
+ * self.setValue(index, rowk, columnDict[col][rowk])
+ * index += 1
*/
- __pyx_1 = PyObject_GetItem(__pyx_v_columnDict, __pyx_v_colnum); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_1);
- __pyx_t_6 = PyObject_GetAttr(__pyx_1, __pyx_kp_keys); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_6));
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
- __pyx_t_8 = 0; __pyx_t_6 = __pyx_t_3; __Pyx_INCREF(__pyx_t_6);
+ __pyx_3 = __Pyx_GetItemInt(__pyx_v_columnDict, __pyx_v_col, sizeof(long), PyInt_FromLong); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_3);
+ __pyx_t_4 = PyObject_GetAttr(__pyx_3, __pyx_kp_keys); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
+ __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_2);
+ __pyx_t_2 = 0;
+ __pyx_t_2 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+ if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
+ __pyx_t_12 = 0; __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4);
} else {
- __pyx_t_8 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_12 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
for (;;) {
- if (likely(PyList_CheckExact(__pyx_t_6))) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_6)) break;
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++;
- } else if (likely(PyTuple_CheckExact(__pyx_t_6))) {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++;
+ if (likely(PyList_CheckExact(__pyx_t_4))) {
+ if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_4)) break;
+ __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_12); __Pyx_INCREF(__pyx_t_2); __pyx_t_12++;
+ } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
+ if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
+ __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_12); __Pyx_INCREF(__pyx_t_2); __pyx_t_12++;
} else {
- __pyx_t_3 = PyIter_Next(__pyx_t_6);
- if (!__pyx_t_3) {
- if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyIter_Next(__pyx_t_4);
+ if (!__pyx_t_2) {
+ if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
break;
}
- __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GOTREF(__pyx_t_2);
}
- __Pyx_DECREF(__pyx_v_rowk);
- __pyx_v_rowk = __pyx_t_3;
- __pyx_t_3 = 0;
+ __pyx_t_16 = __Pyx_PyInt_AsLong(__pyx_t_2); if (unlikely((__pyx_t_16 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_v_rowk = __pyx_t_16;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":169
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":118
* if col_len == 0: continue
- * for rowk in sorted(columnDict[colnum].keys()):
- * self.setValue(index, rowk, # <<<<<<<<<<<<<<
- * float(columnDict[colnum][rowk]))
- * index += 1
- */
- __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_v_index); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_rowk); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":170
- * for rowk in sorted(columnDict[colnum].keys()):
- * self.setValue(index, rowk,
- * float(columnDict[colnum][rowk])) # <<<<<<<<<<<<<<
- * index += 1
- *
- */
- __pyx_2 = PyObject_GetItem(__pyx_v_columnDict, __pyx_v_colnum); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ * for rowk in sorted(columnDict[col].keys()):
+ * self.setValue(index, rowk, columnDict[col][rowk]) # <<<<<<<<<<<<<<
+ * index += 1
+ * if self.offset_for_row is not None:
+ */
+ __pyx_1 = __Pyx_GetItemInt(__pyx_v_columnDict, __pyx_v_col, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_1);
+ __pyx_2 = __Pyx_GetItemInt(__pyx_1, __pyx_v_rowk, sizeof(long), PyInt_FromLong); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_2);
- __pyx_3 = PyObject_GetItem(__pyx_2, __pyx_v_rowk); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_3);
+ __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+ __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_2); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_3));
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_3);
- __Pyx_GIVEREF(__pyx_3);
- __pyx_3 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)&PyFloat_Type)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self->__pyx_vtab)->setValue(__pyx_v_self, __pyx_t_10, __pyx_t_9, __pyx_t_11);
+ ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self->__pyx_vtab)->setValue(__pyx_v_self, __pyx_v_index, __pyx_v_rowk, __pyx_t_13);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":171
- * self.setValue(index, rowk,
- * float(columnDict[colnum][rowk]))
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":119
+ * for rowk in sorted(columnDict[col].keys()):
+ * self.setValue(index, rowk, columnDict[col][rowk])
* index += 1 # <<<<<<<<<<<<<<
- *
- * cpdef dictPack(self):
+ * if self.offset_for_row is not None:
+ * self.cmatrix.offset_for_row = self.toVector(self.offset_for_row)
*/
- __pyx_5 = PyNumber_InPlaceAdd(__pyx_v_index, __pyx_int_1); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_5);
- __Pyx_DECREF(__pyx_v_index);
- __pyx_v_index = __pyx_5;
- __pyx_5 = 0;
+ __pyx_v_index += 1;
}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_L6_continue:;
}
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":120
+ * self.setValue(index, rowk, columnDict[col][rowk])
+ * index += 1
+ * if self.offset_for_row is not None: # <<<<<<<<<<<<<<
+ * self.cmatrix.offset_for_row = self.toVector(self.offset_for_row)
+ * if self.offset_for_col is not None:
+ */
+ __pyx_t_3 = (__pyx_v_self->offset_for_row != Py_None);
+ if (__pyx_t_3) {
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":121
+ * index += 1
+ * if self.offset_for_row is not None:
+ * self.cmatrix.offset_for_row = self.toVector(self.offset_for_row) # <<<<<<<<<<<<<<
+ * if self.offset_for_col is not None:
+ * self.cmatrix.offset_for_col = self.toVector(self.offset_for_col)
+ */
+ __pyx_v_self->cmatrix->offset_for_row = ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self->__pyx_vtab)->toVector(__pyx_v_self, __pyx_v_self->offset_for_row);
+ goto __pyx_L11;
+ }
+ __pyx_L11:;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":122
+ * if self.offset_for_row is not None:
+ * self.cmatrix.offset_for_row = self.toVector(self.offset_for_row)
+ * if self.offset_for_col is not None: # <<<<<<<<<<<<<<
+ * self.cmatrix.offset_for_col = self.toVector(self.offset_for_col)
+ *
+ */
+ __pyx_t_3 = (__pyx_v_self->offset_for_col != Py_None);
+ if (__pyx_t_3) {
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":123
+ * self.cmatrix.offset_for_row = self.toVector(self.offset_for_row)
+ * if self.offset_for_col is not None:
+ * self.cmatrix.offset_for_col = self.toVector(self.offset_for_col) # <<<<<<<<<<<<<<
+ *
+ * cdef double *toVector(self, vec):
+ */
+ __pyx_v_self->cmatrix->offset_for_col = ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self->__pyx_vtab)->toVector(__pyx_v_self, __pyx_v_self->offset_for_col);
+ goto __pyx_L12;
+ }
+ __pyx_L12:;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
@@ -1664,44 +1903,83 @@
__Pyx_XDECREF(__pyx_2);
__Pyx_XDECREF(__pyx_3);
__Pyx_XDECREF(__pyx_4);
- __Pyx_XDECREF(__pyx_5);
- __Pyx_XDECREF(__pyx_6);
__Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_11);
+ { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+ __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+ __Pyx_SafeReleaseBuffer(&__pyx_bstruct_row_factors);
+ __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
__Pyx_AddTraceback("svdlib._svdlib.CSCMatrix.pack");
__pyx_r = 0;
+ goto __pyx_L2;
__pyx_L0:;
+ __Pyx_SafeReleaseBuffer(&__pyx_bstruct_row_factors);
+ __pyx_L2:;
+ __Pyx_DECREF((PyObject *)__pyx_v_row_factors);
__Pyx_DECREF(__pyx_v_columnDict);
- __Pyx_DECREF(__pyx_v_cols);
- __Pyx_DECREF(__pyx_v_row);
- __Pyx_DECREF(__pyx_v_column);
- __Pyx_DECREF(__pyx_v_value);
- __Pyx_DECREF(__pyx_v_index);
- __Pyx_DECREF(__pyx_v_colnum);
- __Pyx_DECREF(__pyx_v_col_len);
- __Pyx_DECREF(__pyx_v_rowk);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_FinishRefcountContext();
return __pyx_r;
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":153
- * self.row_factors = row_factors
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":96
+ * self.offset_for_col = offset_for_col
*
- * cpdef pack(self): # <<<<<<<<<<<<<<
- * self.cmatrix = svdNewSMat(self.rows, self.cols, self.nonZero)
- * self.transposed = 0
+ * cpdef pack(self, row_norms=None): # <<<<<<<<<<<<<<
+ * cdef np.ndarray[DTYPE_t, ndim=1] row_factors # holds row _multiplication_ factors, possibly just 1.
+ * cdef long row, col, index, cols, col_len, rowk
*/
-static PyObject *__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_pack(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
-static PyObject *__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_pack(PyObject *__pyx_v_self, PyObject *unused) {
+static PyObject *__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_pack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_pack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_row_norms = 0;
PyObject *__pyx_r = NULL;
+ struct __pyx_opt_args_6svdlib_7_svdlib_9CSCMatrix_pack __pyx_1;
PyObject *__pyx_t_1 = NULL;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_kp_row_norms,0};
__Pyx_SetupRefcountContext("pack");
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[1] = {0};
+ values[0] = Py_None;
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_row_norms);
+ if (unlikely(value)) { values[0] = value; kw_args--; }
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pack") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_row_norms = values[0];
+ } else {
+ __pyx_v_row_norms = Py_None;
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 1: __pyx_v_row_norms = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("pack", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("svdlib._svdlib.CSCMatrix.pack");
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->__pyx_vtab)->pack(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self), 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1.__pyx_n = 1;
+ __pyx_1.row_norms = __pyx_v_row_norms;
+ __pyx_t_1 = ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->__pyx_vtab)->pack(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self), 1, &__pyx_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
@@ -1719,66 +1997,355 @@
return __pyx_r;
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":173
- * index += 1
- *
- * cpdef dictPack(self): # <<<<<<<<<<<<<<
- * self.cmatrix = svdNewSMat(self.cols, self.rows, self.nonZero)
- * self.transposed = 1
- */
-
-static PyObject *__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_dictPack(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
-static PyObject *__pyx_f_6svdlib_7_svdlib_9CSCMatrix_dictPack(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *__pyx_v_self, int __pyx_skip_dispatch) {
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":125
+ * self.cmatrix.offset_for_col = self.toVector(self.offset_for_col)
+ *
+ * cdef double *toVector(self, vec): # <<<<<<<<<<<<<<
+ * cdef long n = len(vec)
+ * cdef double *temp = svd_doubleArray(n, False, "toVector")
+ */
+
+static double *__pyx_f_6svdlib_7_svdlib_9CSCMatrix_toVector(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *__pyx_v_self, PyObject *__pyx_v_vec) {
+ long __pyx_v_n;
+ double *__pyx_v_temp;
+ PyObject *__pyx_v_i;
+ double *__pyx_r;
+ PyObject *__pyx_1 = 0;
+ Py_ssize_t __pyx_t_1;
+ PyObject *__pyx_t_2 = NULL;
+ PyObject *__pyx_t_3 = NULL;
+ double __pyx_t_4;
+ Py_ssize_t __pyx_t_5;
+ __Pyx_SetupRefcountContext("toVector");
+ __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":126
+ *
+ * cdef double *toVector(self, vec):
+ * cdef long n = len(vec) # <<<<<<<<<<<<<<
+ * cdef double *temp = svd_doubleArray(n, False, "toVector")
+ * for i in range(n):
+ */
+ __pyx_t_1 = PyObject_Length(__pyx_v_vec); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_v_n = __pyx_t_1;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":127
+ * cdef double *toVector(self, vec):
+ * cdef long n = len(vec)
+ * cdef double *temp = svd_doubleArray(n, False, "toVector") # <<<<<<<<<<<<<<
+ * for i in range(n):
+ * temp[i] = vec[i]
+ */
+ __pyx_v_temp = svd_doubleArray(__pyx_v_n, 0, __pyx_k_35);
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":128
+ * cdef long n = len(vec)
+ * cdef double *temp = svd_doubleArray(n, False, "toVector")
+ * for i in range(n): # <<<<<<<<<<<<<<
+ * temp[i] = vec[i]
+ * return temp
+ */
+ __pyx_t_2 = PyInt_FromLong(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_2);
+ __pyx_t_2 = 0;
+ __pyx_t_2 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+ if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
+ __pyx_t_1 = 0; __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3);
+ } else {
+ __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ }
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ for (;;) {
+ if (likely(PyList_CheckExact(__pyx_t_3))) {
+ if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_3)) break;
+ __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_2); __pyx_t_1++;
+ } else if (likely(PyTuple_CheckExact(__pyx_t_3))) {
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
+ __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_2); __pyx_t_1++;
+ } else {
+ __pyx_t_2 = PyIter_Next(__pyx_t_3);
+ if (!__pyx_t_2) {
+ if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ break;
+ }
+ __Pyx_GOTREF(__pyx_t_2);
+ }
+ __Pyx_DECREF(__pyx_v_i);
+ __pyx_v_i = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":129
+ * cdef double *temp = svd_doubleArray(n, False, "toVector")
+ * for i in range(n):
+ * temp[i] = vec[i] # <<<<<<<<<<<<<<
+ * return temp
+ *
+ */
+ __pyx_1 = PyObject_GetItem(__pyx_v_vec, __pyx_v_i); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_1);
+ __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+ __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ (__pyx_v_temp[__pyx_t_5]) = __pyx_t_4;
+ }
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":130
+ * for i in range(n):
+ * temp[i] = vec[i]
+ * return temp # <<<<<<<<<<<<<<
+ *
+ * cpdef dictPack(self, row_norms=None):
+ */
+ __pyx_r = __pyx_v_temp;
+ goto __pyx_L0;
+
+ __pyx_r = 0;
+ goto __pyx_L0;
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_1);
+ __Pyx_XDECREF(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_WriteUnraisable("svdlib._svdlib.CSCMatrix.toVector");
+ __pyx_r = 0;
+ __pyx_L0:;
+ __Pyx_DECREF(__pyx_v_i);
+ __Pyx_FinishRefcountContext();
+ return __pyx_r;
+}
+
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":132
+ * return temp
+ *
+ * cpdef dictPack(self, row_norms=None): # <<<<<<<<<<<<<<
+ * cdef np.ndarray[DTYPE_t, ndim=1] row_factors # holds row _multiplication_ factors, possibly just 1.
+ * if row_norms is None:
+ */
+
+static PyObject *__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_dictPack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6svdlib_7_svdlib_9CSCMatrix_dictPack(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6svdlib_7_svdlib_9CSCMatrix_dictPack *__pyx_optional_args) {
+ PyObject *__pyx_v_row_norms = Py_None;
+ PyArrayObject *__pyx_v_row_factors;
PyObject *__pyx_v_rowDict = 0;
int __pyx_v_rows;
int __pyx_v_colk;
int __pyx_v_index;
int __pyx_v_rownum;
int __pyx_v_row_len;
- float __pyx_v_val;
+ double __pyx_v_val;
+ Py_buffer __pyx_bstruct_row_factors;
+ Py_ssize_t __pyx_bstride_0_row_factors = 0;
+ Py_ssize_t __pyx_bshape_0_row_factors = 0;
PyObject *__pyx_r = NULL;
PyObject *__pyx_1 = 0;
PyObject *__pyx_2 = 0;
PyObject *__pyx_t_1 = NULL;
- int __pyx_t_2;
- Py_ssize_t __pyx_t_3;
+ PyObject *__pyx_t_2 = NULL;
+ int __pyx_t_3;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
- int __pyx_t_8;
- float __pyx_t_9;
- double __pyx_t_10;
+ PyArrayObject *__pyx_t_5 = NULL;
+ int __pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_10 = NULL;
+ PyObject *__pyx_t_11 = NULL;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ int __pyx_t_14;
+ double __pyx_t_15;
__Pyx_SetupRefcountContext("dictPack");
+ if (__pyx_optional_args) {
+ if (__pyx_optional_args->__pyx_n > 0) {
+ __pyx_v_row_norms = __pyx_optional_args->row_norms;
+ }
+ }
+ __pyx_v_row_factors = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None);
+ __pyx_bstruct_row_factors.buf = NULL;
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overriden in Python */
else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
- __pyx_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_kp_dictPack); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_kp_dictPack); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
if (!PyCFunction_Check(__pyx_1) || (PyCFunction_GET_FUNCTION(__pyx_1) != (void *)&__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_dictPack)) {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+ __Pyx_INCREF(__pyx_v_row_norms);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_row_norms);
+ __Pyx_GIVEREF(__pyx_v_row_norms);
+ __pyx_t_2 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_r = __pyx_t_1;
- __pyx_t_1 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
goto __pyx_L0;
}
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
}
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":174
- *
- * cpdef dictPack(self):
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":134
+ * cpdef dictPack(self, row_norms=None):
+ * cdef np.ndarray[DTYPE_t, ndim=1] row_factors # holds row _multiplication_ factors, possibly just 1.
+ * if row_norms is None: # <<<<<<<<<<<<<<
+ * row_factors = np.ones(self.rows)
+ * else:
+ */
+ __pyx_t_3 = (__pyx_v_row_norms == Py_None);
+ if (__pyx_t_3) {
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":135
+ * cdef np.ndarray[DTYPE_t, ndim=1] row_factors # holds row _multiplication_ factors, possibly just 1.
+ * if row_norms is None:
+ * row_factors = np.ones(self.rows) # <<<<<<<<<<<<<<
+ * else:
+ * row_factors = np.reciprocal(np.sqrt(np.array(row_norms, dtype=DTYPE)))
+ */
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_1);
+ __pyx_t_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_ones); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+ __pyx_t_1 = PyInt_FromLong(__pyx_v_self->rows); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+ if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = ((PyArrayObject *)__pyx_t_1);
+ {
+ __Pyx_BufFmt_StackElem __pyx_stack[1];
+ __Pyx_SafeReleaseBuffer(&__pyx_bstruct_row_factors);
+ __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_row_factors, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_6svdlib_7_svdlib_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+ if (unlikely(__pyx_t_6 < 0)) {
+ PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+ if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_row_factors, (PyObject*)__pyx_v_row_factors, &__Pyx_TypeInfo_nn___pyx_t_6svdlib_7_svdlib_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+ Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
+ __Pyx_RaiseBufferFallbackError();
+ } else {
+ PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+ }
+ }
+ __pyx_bstride_0_row_factors = __pyx_bstruct_row_factors.strides[0];
+ __pyx_bshape_0_row_factors = __pyx_bstruct_row_factors.shape[0];
+ if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ }
+ __pyx_t_5 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_v_row_factors));
+ __pyx_v_row_factors = ((PyArrayObject *)__pyx_t_1);
+ __pyx_t_1 = 0;
+ goto __pyx_L3;
+ }
+ /*else*/ {
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":137
+ * row_factors = np.ones(self.rows)
+ * else:
+ * row_factors = np.reciprocal(np.sqrt(np.array(row_norms, dtype=DTYPE))) # <<<<<<<<<<<<<<
+ *
+ * self.cmatrix = svdNewSMat(self.cols, self.rows, self.nonZero)
+ */
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_1);
+ __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_reciprocal); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_1);
+ __pyx_t_4 = PyObject_GetAttr(__pyx_1, __pyx_kp_sqrt); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_1);
+ __pyx_t_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+ __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_10));
+ __Pyx_INCREF(__pyx_v_row_norms);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_row_norms);
+ __Pyx_GIVEREF(__pyx_v_row_norms);
+ __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_1));
+ __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_DTYPE); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_2);
+ if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
+ __pyx_t_11 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_t_10), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
+ __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_10));
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
+ __Pyx_GIVEREF(__pyx_t_11);
+ __pyx_t_11 = 0;
+ __pyx_t_11 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+ __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_10));
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
+ __Pyx_GIVEREF(__pyx_t_11);
+ __pyx_t_11 = 0;
+ __pyx_t_11 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+ if (!(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = ((PyArrayObject *)__pyx_t_11);
+ {
+ __Pyx_BufFmt_StackElem __pyx_stack[1];
+ __Pyx_SafeReleaseBuffer(&__pyx_bstruct_row_factors);
+ __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_row_factors, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_6svdlib_7_svdlib_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+ if (unlikely(__pyx_t_6 < 0)) {
+ PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
+ if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_row_factors, (PyObject*)__pyx_v_row_factors, &__Pyx_TypeInfo_nn___pyx_t_6svdlib_7_svdlib_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+ Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
+ __Pyx_RaiseBufferFallbackError();
+ } else {
+ PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
+ }
+ }
+ __pyx_bstride_0_row_factors = __pyx_bstruct_row_factors.strides[0];
+ __pyx_bshape_0_row_factors = __pyx_bstruct_row_factors.shape[0];
+ if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ }
+ __pyx_t_5 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_v_row_factors));
+ __pyx_v_row_factors = ((PyArrayObject *)__pyx_t_11);
+ __pyx_t_11 = 0;
+ }
+ __pyx_L3:;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":139
+ * row_factors = np.reciprocal(np.sqrt(np.array(row_norms, dtype=DTYPE)))
+ *
* self.cmatrix = svdNewSMat(self.cols, self.rows, self.nonZero) # <<<<<<<<<<<<<<
* self.transposed = 1
* cdef object rowDict = self.tensor._data
*/
__pyx_v_self->cmatrix = svdNewSMat(__pyx_v_self->cols, __pyx_v_self->rows, __pyx_v_self->nonZero);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":175
- * cpdef dictPack(self):
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":140
+ *
* self.cmatrix = svdNewSMat(self.cols, self.rows, self.nonZero)
* self.transposed = 1 # <<<<<<<<<<<<<<
* cdef object rowDict = self.tensor._data
@@ -1786,35 +2353,35 @@
*/
__pyx_v_self->transposed = 1;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":176
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":141
* self.cmatrix = svdNewSMat(self.cols, self.rows, self.nonZero)
* self.transposed = 1
* cdef object rowDict = self.tensor._data # <<<<<<<<<<<<<<
* cdef int rows = self.tensor.shape[0]
* cdef int colk
*/
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_self->tensor, __pyx_kp__data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_v_rowDict = __pyx_t_1;
- __pyx_t_1 = 0;
+ __pyx_t_11 = PyObject_GetAttr(__pyx_v_self->tensor, __pyx_kp__data); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_v_rowDict = __pyx_t_11;
+ __pyx_t_11 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":177
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":142
* self.transposed = 1
* cdef object rowDict = self.tensor._data
* cdef int rows = self.tensor.shape[0] # <<<<<<<<<<<<<<
* cdef int colk
* cdef int index = 0
*/
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_self->tensor, __pyx_kp_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_1 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_1);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_v_rows = __pyx_t_2;
+ __pyx_t_11 = PyObject_GetAttr(__pyx_v_self->tensor, __pyx_kp_shape); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_2 = __Pyx_GetItemInt(__pyx_t_11, 0, sizeof(long), PyInt_FromLong); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_2);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
+ __pyx_v_rows = __pyx_t_6;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":179
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":144
* cdef int rows = self.tensor.shape[0]
* cdef int colk
* cdef int index = 0 # <<<<<<<<<<<<<<
@@ -1823,61 +2390,61 @@
*/
__pyx_v_index = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":183
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":148
* cdef int row_len
- * cdef float val
+ * cdef double val
* assert len(rowDict) <= rows # <<<<<<<<<<<<<<
* for rownum from 0 <= rownum < rows:
* row_len = len(rowDict.get(rownum, []))
*/
#ifndef PYREX_WITHOUT_ASSERTIONS
- __pyx_t_3 = PyObject_Length(__pyx_v_rowDict); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!(__pyx_t_3 <= __pyx_v_rows))) {
+ __pyx_t_12 = PyObject_Length(__pyx_v_rowDict); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!(__pyx_t_12 <= __pyx_v_rows))) {
PyErr_SetNone(PyExc_AssertionError);
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":184
- * cdef float val
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":149
+ * cdef double val
* assert len(rowDict) <= rows
* for rownum from 0 <= rownum < rows: # <<<<<<<<<<<<<<
* row_len = len(rowDict.get(rownum, []))
* self.setColumnSize(rownum, row_len)
*/
- __pyx_t_2 = __pyx_v_rows;
- for (__pyx_v_rownum = 0; __pyx_v_rownum < __pyx_t_2; __pyx_v_rownum++) {
+ __pyx_t_6 = __pyx_v_rows;
+ for (__pyx_v_rownum = 0; __pyx_v_rownum < __pyx_t_6; __pyx_v_rownum++) {
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":185
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":150
* assert len(rowDict) <= rows
* for rownum from 0 <= rownum < rows:
* row_len = len(rowDict.get(rownum, [])) # <<<<<<<<<<<<<<
* self.setColumnSize(rownum, row_len)
* if row_len == 0: continue
*/
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_rowDict, __pyx_kp_get); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_11 = PyObject_GetAttr(__pyx_v_rowDict, __pyx_kp_get); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_10 = PyInt_FromLong(__pyx_v_rownum); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10);
+ __Pyx_GIVEREF(__pyx_t_10);
+ PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_t_1));
+ __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+ __pyx_t_10 = 0;
+ __pyx_t_1 = 0;
+ __pyx_t_1 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyInt_FromLong(__pyx_v_rownum); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_5));
- __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_6));
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_t_5));
- __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
- __pyx_t_4 = 0;
- __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+ __pyx_t_12 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __pyx_t_3 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_row_len = __pyx_t_3;
+ __pyx_v_row_len = __pyx_t_12;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":186
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":151
* for rownum from 0 <= rownum < rows:
* row_len = len(rowDict.get(rownum, []))
* self.setColumnSize(rownum, row_len) # <<<<<<<<<<<<<<
@@ -1886,140 +2453,174 @@
*/
((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self->__pyx_vtab)->setColumnSize(__pyx_v_self, __pyx_v_rownum, __pyx_v_row_len);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":187
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":152
* row_len = len(rowDict.get(rownum, []))
* self.setColumnSize(rownum, row_len)
* if row_len == 0: continue # <<<<<<<<<<<<<<
* for colk in sorted(rowDict[rownum].keys()):
- * val = float(rowDict[rownum][colk])
+ * val = float(rowDict[rownum][colk]) * row_factors[rownum]
*/
- __pyx_t_7 = (__pyx_v_row_len == 0);
- if (__pyx_t_7) {
- goto __pyx_L3_continue;
- goto __pyx_L5;
+ __pyx_t_3 = (__pyx_v_row_len == 0);
+ if (__pyx_t_3) {
+ goto __pyx_L4_continue;
+ goto __pyx_L6;
}
- __pyx_L5:;
+ __pyx_L6:;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":188
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":153
* self.setColumnSize(rownum, row_len)
* if row_len == 0: continue
* for colk in sorted(rowDict[rownum].keys()): # <<<<<<<<<<<<<<
- * val = float(rowDict[rownum][colk])
- * if self.row_factors is not None:
+ * val = float(rowDict[rownum][colk]) * row_factors[rownum]
+ * self.setValue(index, colk, val)
*/
- __pyx_1 = __Pyx_GetItemInt(__pyx_v_rowDict, __pyx_v_rownum, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = __Pyx_GetItemInt(__pyx_v_rowDict, __pyx_v_rownum, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- __pyx_t_5 = PyObject_GetAttr(__pyx_1, __pyx_kp_keys); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_keys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_5));
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_6 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- if (PyList_CheckExact(__pyx_t_6) || PyTuple_CheckExact(__pyx_t_6)) {
- __pyx_t_3 = 0; __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5);
+ __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_4);
+ __pyx_t_4 = 0;
+ __pyx_t_4 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
+ __pyx_t_12 = 0; __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1);
} else {
- __pyx_t_3 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_12 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_1);
}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
for (;;) {
- if (likely(PyList_CheckExact(__pyx_t_5))) {
- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_5)) break;
- __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_t_6); __pyx_t_3++;
- } else if (likely(PyTuple_CheckExact(__pyx_t_5))) {
- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
- __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_t_6); __pyx_t_3++;
+ if (likely(PyList_CheckExact(__pyx_t_1))) {
+ if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_1)) break;
+ __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++;
+ } else if (likely(PyTuple_CheckExact(__pyx_t_1))) {
+ if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+ __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++;
} else {
- __pyx_t_6 = PyIter_Next(__pyx_t_5);
- if (!__pyx_t_6) {
- if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyIter_Next(__pyx_t_1);
+ if (!__pyx_t_4) {
+ if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
break;
}
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GOTREF(__pyx_t_4);
}
- __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_t_6); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_colk = __pyx_t_8;
+ __pyx_t_13 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_colk = __pyx_t_13;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":189
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":154
* if row_len == 0: continue
* for colk in sorted(rowDict[rownum].keys()):
- * val = float(rowDict[rownum][colk]) # <<<<<<<<<<<<<<
- * if self.row_factors is not None:
- * val /= sqrt(self.row_factors[rownum])
+ * val = float(rowDict[rownum][colk]) * row_factors[rownum] # <<<<<<<<<<<<<<
+ * self.setValue(index, colk, val)
+ * index += 1
*/
- __pyx_1 = __Pyx_GetItemInt(__pyx_v_rowDict, __pyx_v_rownum, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_2 = __Pyx_GetItemInt(__pyx_v_rowDict, __pyx_v_rownum, sizeof(int), PyInt_FromLong); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_2);
+ __pyx_1 = __Pyx_GetItemInt(__pyx_2, __pyx_v_colk, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- __pyx_2 = __Pyx_GetItemInt(__pyx_1, __pyx_v_colk, sizeof(int), PyInt_FromLong); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_2);
- __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_6));
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_2);
- __Pyx_GIVEREF(__pyx_2);
- __pyx_2 = 0;
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)&PyFloat_Type)), ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_val = __pyx_t_9;
+ __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_1);
+ __Pyx_GIVEREF(__pyx_1);
+ __pyx_1 = 0;
+ __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)&PyFloat_Type)), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+ __pyx_t_13 = __pyx_v_rownum;
+ __pyx_t_14 = -1;
+ if (__pyx_t_13 < 0) {
+ __pyx_t_13 += __pyx_bshape_0_row_factors;
+ if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
+ } else if (unlikely(__pyx_t_13 >= __pyx_bshape_0_row_factors)) __pyx_t_14 = 0;
+ if (unlikely(__pyx_t_14 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ }
+ __pyx_t_4 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_6svdlib_7_svdlib_DTYPE_t *, __pyx_bstruct_row_factors.buf, __pyx_t_13, __pyx_bstride_0_row_factors))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = PyNumber_Multiply(__pyx_t_11, __pyx_t_4); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_15 = __pyx_PyFloat_AsDouble(__pyx_t_10); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_v_val = __pyx_t_15;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":190
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":155
* for colk in sorted(rowDict[rownum].keys()):
- * val = float(rowDict[rownum][colk])
- * if self.row_factors is not None: # <<<<<<<<<<<<<<
- * val /= sqrt(self.row_factors[rownum])
- * self.setValue(index, colk, val)
- */
- __pyx_t_7 = (__pyx_v_self->row_factors != Py_None);
- if (__pyx_t_7) {
-
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":191
- * val = float(rowDict[rownum][colk])
- * if self.row_factors is not None:
- * val /= sqrt(self.row_factors[rownum]) # <<<<<<<<<<<<<<
- * self.setValue(index, colk, val)
- * index += 1
- */
- __pyx_1 = __Pyx_GetItemInt(__pyx_v_self->row_factors, __pyx_v_rownum, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_1);
- __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_v_val /= sqrt(__pyx_t_10);
- goto __pyx_L8;
- }
- __pyx_L8:;
-
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":192
- * if self.row_factors is not None:
- * val /= sqrt(self.row_factors[rownum])
+ * val = float(rowDict[rownum][colk]) * row_factors[rownum]
* self.setValue(index, colk, val) # <<<<<<<<<<<<<<
* index += 1
- *
+ * # Transposed offset vectors.
*/
((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self->__pyx_vtab)->setValue(__pyx_v_self, __pyx_v_index, __pyx_v_colk, __pyx_v_val);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":193
- * val /= sqrt(self.row_factors[rownum])
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":156
+ * val = float(rowDict[rownum][colk]) * row_factors[rownum]
* self.setValue(index, colk, val)
* index += 1 # <<<<<<<<<<<<<<
- *
- *
+ * # Transposed offset vectors.
+ * if self.offset_for_row is not None:
*/
__pyx_v_index += 1;
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_L3_continue:;
- }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_L4_continue:;
+ }
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":158
+ * index += 1
+ * # Transposed offset vectors.
+ * if self.offset_for_row is not None: # <<<<<<<<<<<<<<
+ * self.cmatrix.offset_for_col = self.toVector(self.offset_for_row)
+ * if self.offset_for_col is not None:
+ */
+ __pyx_t_3 = (__pyx_v_self->offset_for_row != Py_None);
+ if (__pyx_t_3) {
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":159
+ * # Transposed offset vectors.
+ * if self.offset_for_row is not None:
+ * self.cmatrix.offset_for_col = self.toVector(self.offset_for_row) # <<<<<<<<<<<<<<
+ * if self.offset_for_col is not None:
+ * self.cmatrix.offset_for_row = self.toVector(self.offset_for_col)
+ */
+ __pyx_v_self->cmatrix->offset_for_col = ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self->__pyx_vtab)->toVector(__pyx_v_self, __pyx_v_self->offset_for_row);
+ goto __pyx_L9;
+ }
+ __pyx_L9:;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":160
+ * if self.offset_for_row is not None:
+ * self.cmatrix.offset_for_col = self.toVector(self.offset_for_row)
+ * if self.offset_for_col is not None: # <<<<<<<<<<<<<<
+ * self.cmatrix.offset_for_row = self.toVector(self.offset_for_col)
+ *
+ */
+ __pyx_t_3 = (__pyx_v_self->offset_for_col != Py_None);
+ if (__pyx_t_3) {
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":161
+ * self.cmatrix.offset_for_col = self.toVector(self.offset_for_row)
+ * if self.offset_for_col is not None:
+ * self.cmatrix.offset_for_row = self.toVector(self.offset_for_col) # <<<<<<<<<<<<<<
+ *
+ *
+ */
+ __pyx_v_self->cmatrix->offset_for_row = ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self->__pyx_vtab)->toVector(__pyx_v_self, __pyx_v_self->offset_for_col);
+ goto __pyx_L10;
+ }
+ __pyx_L10:;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
@@ -2027,33 +2628,82 @@
__Pyx_XDECREF(__pyx_1);
__Pyx_XDECREF(__pyx_2);
__Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_11);
+ { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+ __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+ __Pyx_SafeReleaseBuffer(&__pyx_bstruct_row_factors);
+ __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
__Pyx_AddTraceback("svdlib._svdlib.CSCMatrix.dictPack");
__pyx_r = 0;
+ goto __pyx_L2;
__pyx_L0:;
+ __Pyx_SafeReleaseBuffer(&__pyx_bstruct_row_factors);
+ __pyx_L2:;
+ __Pyx_DECREF((PyObject *)__pyx_v_row_factors);
__Pyx_XDECREF(__pyx_v_rowDict);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_FinishRefcountContext();
return __pyx_r;
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":173
- * index += 1
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":132
+ * return temp
*
- * cpdef dictPack(self): # <<<<<<<<<<<<<<
- * self.cmatrix = svdNewSMat(self.cols, self.rows, self.nonZero)
- * self.transposed = 1
+ * cpdef dictPack(self, row_norms=None): # <<<<<<<<<<<<<<
+ * cdef np.ndarray[DTYPE_t, ndim=1] row_factors # holds row _multiplication_ factors, possibly just 1.
+ * if row_norms is None:
*/
-static PyObject *__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_dictPack(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
-static PyObject *__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_dictPack(PyObject *__pyx_v_self, PyObject *unused) {
+static PyObject *__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_dictPack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_dictPack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+ PyObject *__pyx_v_row_norms = 0;
PyObject *__pyx_r = NULL;
+ struct __pyx_opt_args_6svdlib_7_svdlib_9CSCMatrix_dictPack __pyx_1;
PyObject *__pyx_t_1 = NULL;
+ static PyObject **__pyx_pyargnames[] = {&__pyx_kp_row_norms,0};
__Pyx_SetupRefcountContext("dictPack");
+ if (unlikely(__pyx_kwds)) {
+ Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
+ PyObject* values[1] = {0};
+ values[0] = Py_None;
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 0:
+ if (kw_args > 1) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_row_norms);
+ if (unlikely(value)) { values[0] = value; kw_args--; }
+ }
+ }
+ if (unlikely(kw_args > 0)) {
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "dictPack") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ }
+ __pyx_v_row_norms = values[0];
+ } else {
+ __pyx_v_row_norms = Py_None;
+ switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 1: __pyx_v_row_norms = PyTuple_GET_ITEM(__pyx_args, 0);
+ case 0: break;
+ default: goto __pyx_L5_argtuple_error;
+ }
+ }
+ goto __pyx_L4_argument_unpacking_done;
+ __pyx_L5_argtuple_error:;
+ __Pyx_RaiseArgtupleInvalid("dictPack", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_L3_error:;
+ __Pyx_AddTraceback("svdlib._svdlib.CSCMatrix.dictPack");
+ return NULL;
+ __pyx_L4_argument_unpacking_done:;
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->__pyx_vtab)->dictPack(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self), 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1.__pyx_n = 1;
+ __pyx_1.row_norms = __pyx_v_row_norms;
+ __pyx_t_1 = ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->__pyx_vtab)->dictPack(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self), 1, &__pyx_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
@@ -2071,7 +2721,7 @@
return __pyx_r;
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":196
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":164
*
*
* def __repr__(self): # <<<<<<<<<<<<<<
@@ -2084,7 +2734,7 @@
PyObject *__pyx_r = NULL;
__Pyx_SetupRefcountContext("__repr__");
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":197
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":165
*
* def __repr__(self):
* return u'<CSCMatrix>' # <<<<<<<<<<<<<<
@@ -2092,8 +2742,8 @@
* def __dealloc__(self):
*/
__Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_kp_35));
- __pyx_r = ((PyObject *)__pyx_kp_35);
+ __Pyx_INCREF(((PyObject *)__pyx_kp_36));
+ __pyx_r = ((PyObject *)__pyx_kp_36);
goto __pyx_L0;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -2103,7 +2753,7 @@
return __pyx_r;
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":199
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":167
* return u'<CSCMatrix>'
*
* def __dealloc__(self): # <<<<<<<<<<<<<<
@@ -2115,7 +2765,7 @@
static void __pyx_pf_6svdlib_7_svdlib_9CSCMatrix___dealloc__(PyObject *__pyx_v_self) {
__Pyx_SetupRefcountContext("__dealloc__");
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":200
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":168
*
* def __dealloc__(self):
* svdFreeSMat(self.cmatrix) # <<<<<<<<<<<<<<
@@ -2127,7 +2777,7 @@
__Pyx_FinishRefcountContext();
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":202
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":170
* svdFreeSMat(self.cmatrix)
*
* cdef void setColumnSize(self, int col, int size): # <<<<<<<<<<<<<<
@@ -2143,7 +2793,7 @@
PyObject *__pyx_t_4 = NULL;
__Pyx_SetupRefcountContext("setColumnSize");
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":203
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":171
*
* cdef void setColumnSize(self, int col, int size):
* if size == 0: # <<<<<<<<<<<<<<
@@ -2153,29 +2803,29 @@
__pyx_t_1 = (__pyx_v_size == 0);
if (__pyx_t_1) {
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":204
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":172
* cdef void setColumnSize(self, int col, int size):
* if size == 0:
* warnings.warn('Column %d is empty' % col) # <<<<<<<<<<<<<<
* self.cmatrix[0].pointr[0] = 0
* self.cmatrix.pointr[col+1] = self.cmatrix.pointr[col] + size
*/
- __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_warnings); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_warnings); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- __pyx_t_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_warn); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_warn); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_t_3 = PyInt_FromLong(__pyx_v_col); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyInt_FromLong(__pyx_v_col); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyNumber_Remainder(__pyx_kp_36, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyNumber_Remainder(__pyx_kp_37, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
__pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
@@ -2184,7 +2834,7 @@
}
__pyx_L3:;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":205
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":173
* if size == 0:
* warnings.warn('Column %d is empty' % col)
* self.cmatrix[0].pointr[0] = 0 # <<<<<<<<<<<<<<
@@ -2193,12 +2843,12 @@
*/
((__pyx_v_self->cmatrix[0]).pointr[0]) = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":206
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":174
* warnings.warn('Column %d is empty' % col)
* self.cmatrix[0].pointr[0] = 0
* self.cmatrix.pointr[col+1] = self.cmatrix.pointr[col] + size # <<<<<<<<<<<<<<
*
- * cdef void setValue(self, int index, int rowind, float value):
+ * cdef void setValue(self, int index, int rowind, double value):
*/
(__pyx_v_self->cmatrix->pointr[(__pyx_v_col + 1)]) = ((__pyx_v_self->cmatrix->pointr[__pyx_v_col]) + __pyx_v_size);
@@ -2213,15 +2863,15 @@
__Pyx_FinishRefcountContext();
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":208
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":176
* self.cmatrix.pointr[col+1] = self.cmatrix.pointr[col] + size
*
- * cdef void setValue(self, int index, int rowind, float value): # <<<<<<<<<<<<<<
+ * cdef void setValue(self, int index, int rowind, double value): # <<<<<<<<<<<<<<
* if value == 0:
* warnings.warn('Matrix has zero value (row %d, index %d)' % (rowind, index))
*/
-static void __pyx_f_6svdlib_7_svdlib_9CSCMatrix_setValue(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *__pyx_v_self, int __pyx_v_index, int __pyx_v_rowind, float __pyx_v_value) {
+static void __pyx_f_6svdlib_7_svdlib_9CSCMatrix_setValue(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *__pyx_v_self, int __pyx_v_index, int __pyx_v_rowind, double __pyx_v_value) {
PyObject *__pyx_1 = 0;
int __pyx_t_1;
PyObject *__pyx_t_2 = NULL;
@@ -2230,9 +2880,9 @@
PyObject *__pyx_t_5 = NULL;
__Pyx_SetupRefcountContext("setValue");
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":209
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":177
*
- * cdef void setValue(self, int index, int rowind, float value):
+ * cdef void setValue(self, int index, int rowind, double value):
* if value == 0: # <<<<<<<<<<<<<<
* warnings.warn('Matrix has zero value (row %d, index %d)' % (rowind, index))
* self.cmatrix.rowind[index] = rowind
@@ -2240,23 +2890,23 @@
__pyx_t_1 = (__pyx_v_value == 0);
if (__pyx_t_1) {
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":210
- * cdef void setValue(self, int index, int rowind, float value):
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":178
+ * cdef void setValue(self, int index, int rowind, double value):
* if value == 0:
* warnings.warn('Matrix has zero value (row %d, index %d)' % (rowind, index)) # <<<<<<<<<<<<<<
* self.cmatrix.rowind[index] = rowind
* self.cmatrix.value[index] = value
*/
- __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_warnings); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_warnings); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- __pyx_t_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_warn); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_warn); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_t_3 = PyInt_FromLong(__pyx_v_rowind); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyInt_FromLong(__pyx_v_rowind); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyInt_FromLong(__pyx_v_index); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromLong(__pyx_v_index); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_5));
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_3);
@@ -2264,15 +2914,15 @@
__Pyx_GIVEREF(__pyx_t_4);
__pyx_t_3 = 0;
__pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Remainder(__pyx_kp_37, ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyNumber_Remainder(__pyx_kp_38, ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_5));
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
__pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
@@ -2281,7 +2931,7 @@
}
__pyx_L3:;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":211
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":179
* if value == 0:
* warnings.warn('Matrix has zero value (row %d, index %d)' % (rowind, index))
* self.cmatrix.rowind[index] = rowind # <<<<<<<<<<<<<<
@@ -2290,7 +2940,7 @@
*/
(__pyx_v_self->cmatrix->rowind[__pyx_v_index]) = __pyx_v_rowind;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":212
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":180
* warnings.warn('Matrix has zero value (row %d, index %d)' % (rowind, index))
* self.cmatrix.rowind[index] = rowind
* self.cmatrix.value[index] = value # <<<<<<<<<<<<<<
@@ -2311,7 +2961,7 @@
__Pyx_FinishRefcountContext();
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":220
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":188
*
*
* cpdef object svdA(self, int k): # <<<<<<<<<<<<<<
@@ -2331,18 +2981,18 @@
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overriden in Python */
else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
- __pyx_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_kp_svdA); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_kp_svdA); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
if (!PyCFunction_Check(__pyx_1) || (PyCFunction_GET_FUNCTION(__pyx_1) != (void *)&__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_svdA)) {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
@@ -2353,7 +3003,7 @@
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
}
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":222
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":190
* cpdef object svdA(self, int k):
* cdef svdrec *svdrec
* svdrec = svdLAS2A(self.cmatrix, k) # <<<<<<<<<<<<<<
@@ -2362,7 +3012,7 @@
*/
__pyx_v_svdrec = svdLAS2A(__pyx_v_self->cmatrix, __pyx_v_k);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":223
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":191
* cdef svdrec *svdrec
* svdrec = svdLAS2A(self.cmatrix, k)
* return wrapSVDrec(svdrec, self.transposed) # <<<<<<<<<<<<<<
@@ -2370,7 +3020,7 @@
* @cython.boundscheck(False)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = wrapSVDrec(__pyx_v_svdrec, __pyx_v_self->transposed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = wrapSVDrec(__pyx_v_svdrec, __pyx_v_self->transposed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
@@ -2390,7 +3040,7 @@
return __pyx_r;
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":220
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":188
*
*
* cpdef object svdA(self, int k): # <<<<<<<<<<<<<<
@@ -2405,7 +3055,7 @@
PyObject *__pyx_t_1 = NULL;
__Pyx_SetupRefcountContext("svdA");
assert(__pyx_arg_k); {
- __pyx_v_k = __Pyx_PyInt_AsInt(__pyx_arg_k); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_k = __Pyx_PyInt_AsInt(__pyx_arg_k); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
@@ -2413,7 +3063,7 @@
return NULL;
__pyx_L4_argument_unpacking_done:;
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->__pyx_vtab)->svdA(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self), __pyx_v_k, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((struct __pyx_vtabstruct_6svdlib_7_svdlib_CSCMatrix *)((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->__pyx_vtab)->svdA(((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self), __pyx_v_k, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
@@ -2431,7 +3081,7 @@
return __pyx_r;
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":226
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":194
*
* @cython.boundscheck(False)
* def isvd(self, int k=50, int niter=100, double lrate=.001): # <<<<<<<<<<<<<<
@@ -2533,20 +3183,20 @@
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "isvd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "isvd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
if (values[0]) {
- __pyx_v_k = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_k = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
} else {
__pyx_v_k = 50;
}
if (values[1]) {
- __pyx_v_niter = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_niter == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_niter = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_niter == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
} else {
__pyx_v_niter = 100;
}
if (values[2]) {
- __pyx_v_lrate = __pyx_PyFloat_AsDouble(values[2]); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_lrate = __pyx_PyFloat_AsDouble(values[2]); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
} else {
__pyx_v_lrate = 0.001;
}
@@ -2555,16 +3205,16 @@
__pyx_v_niter = 100;
__pyx_v_lrate = 0.001;
switch (PyTuple_GET_SIZE(__pyx_args)) {
- case 3: __pyx_v_lrate = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- case 2: __pyx_v_niter = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_niter == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- case 1: __pyx_v_k = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ case 3: __pyx_v_lrate = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ case 2: __pyx_v_niter = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_niter == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ case 1: __pyx_v_k = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("isvd", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("isvd", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("svdlib._svdlib.CSCMatrix.isvd");
return NULL;
@@ -2578,29 +3228,29 @@
__pyx_bstruct_u.buf = NULL;
__pyx_bstruct_v.buf = NULL;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":227
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":195
* @cython.boundscheck(False)
* def isvd(self, int k=50, int niter=100, double lrate=.001):
* from csc.divisi.tensor import DenseTensor # <<<<<<<<<<<<<<
* cdef smat* A = self.cmatrix
* print "COMPUTING INCREMENTAL SVD"
*/
- __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(__pyx_kp_DenseTensor);
PyList_SET_ITEM(__pyx_t_1, 0, __pyx_kp_DenseTensor);
__Pyx_GIVEREF(__pyx_kp_DenseTensor);
- __pyx_1 = __Pyx_Import(__pyx_kp_38, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = __Pyx_Import(__pyx_kp_39, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_DenseTensor); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_DenseTensor); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_2);
__Pyx_DECREF(__pyx_v_DenseTensor);
__pyx_v_DenseTensor = __pyx_2;
__pyx_2 = 0;
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":228
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":196
* def isvd(self, int k=50, int niter=100, double lrate=.001):
* from csc.divisi.tensor import DenseTensor
* cdef smat* A = self.cmatrix # <<<<<<<<<<<<<<
@@ -2609,29 +3259,29 @@
*/
__pyx_v_A = ((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->cmatrix;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":229
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":197
* from csc.divisi.tensor import DenseTensor
* cdef smat* A = self.cmatrix
* print "COMPUTING INCREMENTAL SVD" # <<<<<<<<<<<<<<
* print "ROWS: %d, COLUMNS: %d, VALS: %d" % (A.rows, A.cols, A.vals)
* print "K: %d, LEARNING_RATE: %r, ITERATIONS: %d" % (k, lrate, niter)
*/
- if (__Pyx_PrintOne(__pyx_kp_39) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_PrintOne(__pyx_kp_40) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":230
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":198
* cdef smat* A = self.cmatrix
* print "COMPUTING INCREMENTAL SVD"
* print "ROWS: %d, COLUMNS: %d, VALS: %d" % (A.rows, A.cols, A.vals) # <<<<<<<<<<<<<<
* print "K: %d, LEARNING_RATE: %r, ITERATIONS: %d" % (k, lrate, niter)
*
*/
- __pyx_t_1 = PyInt_FromLong(__pyx_v_A->rows); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyInt_FromLong(__pyx_v_A->rows); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyInt_FromLong(__pyx_v_A->cols); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyInt_FromLong(__pyx_v_A->cols); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyInt_FromLong(__pyx_v_A->vals); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyInt_FromLong(__pyx_v_A->vals); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
@@ -2642,26 +3292,26 @@
__pyx_t_1 = 0;
__pyx_t_2 = 0;
__pyx_t_3 = 0;
- __pyx_t_3 = PyNumber_Remainder(__pyx_kp_40, ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyNumber_Remainder(__pyx_kp_41, ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- if (__Pyx_PrintOne(__pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_PrintOne(__pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":231
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":199
* print "COMPUTING INCREMENTAL SVD"
* print "ROWS: %d, COLUMNS: %d, VALS: %d" % (A.rows, A.cols, A.vals)
* print "K: %d, LEARNING_RATE: %r, ITERATIONS: %d" % (k, lrate, niter) # <<<<<<<<<<<<<<
*
* cdef np.ndarray[DTYPE_t, ndim=2] u = np.add(np.zeros((A.rows, k), dtype=DTYPE), .001)
*/
- __pyx_t_3 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyFloat_FromDouble(__pyx_v_lrate); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyFloat_FromDouble(__pyx_v_lrate); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = PyInt_FromLong(__pyx_v_niter); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyInt_FromLong(__pyx_v_niter); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_3);
@@ -2672,34 +3322,34 @@
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Remainder(__pyx_kp_41, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyNumber_Remainder(__pyx_kp_42, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- if (__Pyx_PrintOne(__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_PrintOne(__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":233
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":201
* print "K: %d, LEARNING_RATE: %r, ITERATIONS: %d" % (k, lrate, niter)
*
* cdef np.ndarray[DTYPE_t, ndim=2] u = np.add(np.zeros((A.rows, k), dtype=DTYPE), .001) # <<<<<<<<<<<<<<
* cdef np.ndarray[DTYPE_t, ndim=2] v = np.add(np.zeros((A.cols, k), dtype=DTYPE), .001)
*
*/
- __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- __pyx_t_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_add); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_add); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_2);
- __pyx_t_1 = PyObject_GetAttr(__pyx_2, __pyx_kp_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(__pyx_2, __pyx_kp_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- __pyx_t_4 = PyInt_FromLong(__pyx_v_A->rows); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromLong(__pyx_v_A->rows); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_5));
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
@@ -2707,25 +3357,25 @@
__Pyx_GIVEREF(__pyx_t_3);
__pyx_t_4 = 0;
__pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_5));
__Pyx_GIVEREF(((PyObject *)__pyx_t_5));
__pyx_t_5 = 0;
- __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_1));
- __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_DTYPE); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_DTYPE); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_2);
- if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
__Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
- __pyx_t_3 = PyFloat_FromDouble(0.001); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyFloat_FromDouble(0.001); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_5);
@@ -2733,17 +3383,17 @@
__Pyx_GIVEREF(__pyx_t_3);
__pyx_t_5 = 0;
__pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- if (!(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_6 = ((PyArrayObject *)__pyx_t_3);
{
__Pyx_BufFmt_StackElem __pyx_stack[1];
if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_u, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_6svdlib_7_svdlib_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
__pyx_v_u = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_u.buf = NULL;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
} else {__pyx_bstride_0_u = __pyx_bstruct_u.strides[0]; __pyx_bstride_1_u = __pyx_bstruct_u.strides[1];
__pyx_bshape_0_u = __pyx_bstruct_u.shape[0]; __pyx_bshape_1_u = __pyx_bstruct_u.shape[1];
}
@@ -2752,28 +3402,28 @@
__pyx_v_u = ((PyArrayObject *)__pyx_t_3);
__pyx_t_3 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":234
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":202
*
* cdef np.ndarray[DTYPE_t, ndim=2] u = np.add(np.zeros((A.rows, k), dtype=DTYPE), .001)
* cdef np.ndarray[DTYPE_t, ndim=2] v = np.add(np.zeros((A.cols, k), dtype=DTYPE), .001) # <<<<<<<<<<<<<<
*
* # Maintain a cache of dot-products up to the current axis
*/
- __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_2);
- __pyx_t_3 = PyObject_GetAttr(__pyx_2, __pyx_kp_add); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_GetAttr(__pyx_2, __pyx_kp_add); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_t_2 = PyInt_FromLong(__pyx_v_A->cols); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyInt_FromLong(__pyx_v_A->cols); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_5 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
@@ -2781,25 +3431,25 @@
__Pyx_GIVEREF(__pyx_t_5);
__pyx_t_2 = 0;
__pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_5));
PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
__Pyx_GIVEREF(((PyObject *)__pyx_t_4));
__pyx_t_4 = 0;
- __pyx_2 = PyDict_New(); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_2 = PyDict_New(); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_2));
- __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_DTYPE); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_DTYPE); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- if (PyDict_SetItem(__pyx_2, __pyx_kp_dtype, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItem(__pyx_2, __pyx_kp_dtype, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__Pyx_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
- __pyx_t_5 = PyFloat_FromDouble(0.001); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyFloat_FromDouble(0.001); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
@@ -2807,17 +3457,17 @@
__Pyx_GIVEREF(__pyx_t_5);
__pyx_t_4 = 0;
__pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- if (!(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_7 = ((PyArrayObject *)__pyx_t_5);
{
__Pyx_BufFmt_StackElem __pyx_stack[1];
if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_v, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_6svdlib_7_svdlib_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
__pyx_v_v = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_v.buf = NULL;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
} else {__pyx_bstride_0_v = __pyx_bstruct_v.strides[0]; __pyx_bstride_1_v = __pyx_bstruct_v.strides[1];
__pyx_bshape_0_v = __pyx_bstruct_v.shape[0]; __pyx_bshape_1_v = __pyx_bstruct_v.shape[1];
}
@@ -2826,7 +3476,7 @@
__pyx_v_v = ((PyArrayObject *)__pyx_t_5);
__pyx_t_5 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":237
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":205
*
* # Maintain a cache of dot-products up to the current axis
* cdef smat* predicted = svdNewSMat(A.rows, A.cols, A.vals) # <<<<<<<<<<<<<<
@@ -2835,7 +3485,7 @@
*/
__pyx_v_predicted = svdNewSMat(__pyx_v_A->rows, __pyx_v_A->cols, __pyx_v_A->vals);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":246
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":214
* # (This should be done with memcpy, but i'm not certain
* # how to do that here)
* for i in range(A.cols + 1): # <<<<<<<<<<<<<<
@@ -2845,7 +3495,7 @@
for (__pyx_t_8 = 0; __pyx_t_8 < (__pyx_v_A->cols + 1); __pyx_t_8+=1) {
__pyx_v_i = __pyx_t_8;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":247
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":215
* # how to do that here)
* for i in range(A.cols + 1):
* predicted.pointr[i] = A.pointr[i] # <<<<<<<<<<<<<<
@@ -2855,7 +3505,7 @@
(__pyx_v_predicted->pointr[__pyx_v_i]) = (__pyx_v_A->pointr[__pyx_v_i]);
}
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":249
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":217
* predicted.pointr[i] = A.pointr[i]
*
* for i in range(A.vals): # <<<<<<<<<<<<<<
@@ -2865,7 +3515,7 @@
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_v_A->vals; __pyx_t_8+=1) {
__pyx_v_i = __pyx_t_8;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":250
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":218
*
* for i in range(A.vals):
* predicted.rowind[i] = A.rowind[i] # <<<<<<<<<<<<<<
@@ -2874,7 +3524,7 @@
*/
(__pyx_v_predicted->rowind[__pyx_v_i]) = (__pyx_v_A->rowind[__pyx_v_i]);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":251
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":219
* for i in range(A.vals):
* predicted.rowind[i] = A.rowind[i]
* predicted.value[i] = 0 # <<<<<<<<<<<<<<
@@ -2884,7 +3534,7 @@
(__pyx_v_predicted->value[__pyx_v_i]) = 0;
}
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":253
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":221
* predicted.value[i] = 0
*
* for axis in range(k): # <<<<<<<<<<<<<<
@@ -2894,7 +3544,7 @@
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_v_k; __pyx_t_8+=1) {
__pyx_v_axis = __pyx_t_8;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":254
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":222
*
* for axis in range(k):
* for i in range(niter): # <<<<<<<<<<<<<<
@@ -2904,7 +3554,7 @@
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_v_niter; __pyx_t_9+=1) {
__pyx_v_i = __pyx_t_9;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":256
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":224
* for i in range(niter):
* # Iterate over all values of the sparse matrix
* for cur_col in range(A.cols): # <<<<<<<<<<<<<<
@@ -2914,7 +3564,7 @@
for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_v_A->cols; __pyx_t_10+=1) {
__pyx_v_cur_col = __pyx_t_10;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":257
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":225
* # Iterate over all values of the sparse matrix
* for cur_col in range(A.cols):
* col_index = A.pointr[cur_col] # <<<<<<<<<<<<<<
@@ -2923,7 +3573,7 @@
*/
__pyx_v_col_index = (__pyx_v_A->pointr[__pyx_v_cur_col]);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":258
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":226
* for cur_col in range(A.cols):
* col_index = A.pointr[cur_col]
* next_col_index = A.pointr[cur_col + 1] # <<<<<<<<<<<<<<
@@ -2932,7 +3582,7 @@
*/
__pyx_v_next_col_index = (__pyx_v_A->pointr[(__pyx_v_cur_col + 1)]);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":259
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":227
* col_index = A.pointr[cur_col]
* next_col_index = A.pointr[cur_col + 1]
* for value_index in range(col_index, next_col_index): # <<<<<<<<<<<<<<
@@ -2942,7 +3592,7 @@
for (__pyx_t_11 = __pyx_v_col_index; __pyx_t_11 < __pyx_v_next_col_index; __pyx_t_11+=1) {
__pyx_v_value_index = __pyx_t_11;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":260
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":228
* next_col_index = A.pointr[cur_col + 1]
* for value_index in range(col_index, next_col_index):
* cur_row = A.rowind[value_index] # <<<<<<<<<<<<<<
@@ -2951,7 +3601,7 @@
*/
__pyx_v_cur_row = (__pyx_v_A->rowind[__pyx_v_value_index]);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":262
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":230
* cur_row = A.rowind[value_index]
* err = A.value[value_index] - (predicted.value[value_index] +
* u[cur_row, axis] * v[cur_col, axis]) # <<<<<<<<<<<<<<
@@ -2964,7 +3614,7 @@
__pyx_t_15 = __pyx_v_axis;
__pyx_v_err = ((__pyx_v_A->value[__pyx_v_value_index]) - ((__pyx_v_predicted->value[__pyx_v_value_index]) + ((*__Pyx_BufPtrStrided2d(__pyx_t_6svdlib_7_svdlib_DTYPE_t *, __pyx_bstruct_u.buf, __pyx_t_12, __pyx_bstride_0_u, __pyx_t_13, __pyx_bstride_1_u)) * (*__Pyx_BufPtrStrided2d(__pyx_t_6svdlib_7_svdlib_DTYPE_t *, __pyx_bstruct_v.buf, __pyx_t_14, __pyx_bstride_0_v, __pyx_t_15, __pyx_bstride_1_v)))));
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":264
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":232
* u[cur_row, axis] * v[cur_col, axis])
*
* u_value = u[cur_row, axis] # <<<<<<<<<<<<<<
@@ -2975,7 +3625,7 @@
__pyx_t_17 = __pyx_v_axis;
__pyx_v_u_value = (*__Pyx_BufPtrStrided2d(__pyx_t_6svdlib_7_svdlib_DTYPE_t *, __pyx_bstruct_u.buf, __pyx_t_16, __pyx_bstride_0_u, __pyx_t_17, __pyx_bstride_1_u));
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":265
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":233
*
* u_value = u[cur_row, axis]
* u[cur_row, axis] += lrate * err * v[cur_col, axis] # <<<<<<<<<<<<<<
@@ -2988,7 +3638,7 @@
__pyx_t_21 = __pyx_v_axis;
*__Pyx_BufPtrStrided2d(__pyx_t_6svdlib_7_svdlib_DTYPE_t *, __pyx_bstruct_u.buf, __pyx_t_20, __pyx_bstride_0_u, __pyx_t_21, __pyx_bstride_1_u) += ((__pyx_v_lrate * __pyx_v_err) * (*__Pyx_BufPtrStrided2d(__pyx_t_6svdlib_7_svdlib_DTYPE_t *, __pyx_bstruct_v.buf, __pyx_t_18, __pyx_bstride_0_v, __pyx_t_19, __pyx_bstride_1_v)));
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":266
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":234
* u_value = u[cur_row, axis]
* u[cur_row, axis] += lrate * err * v[cur_col, axis]
* v[cur_col, axis] += lrate * err * u_value # <<<<<<<<<<<<<<
@@ -3002,7 +3652,7 @@
}
}
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":269
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":237
*
* # Update cached dot-products
* for cur_col in range(predicted.cols): # <<<<<<<<<<<<<<
@@ -3012,7 +3662,7 @@
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_v_predicted->cols; __pyx_t_9+=1) {
__pyx_v_cur_col = __pyx_t_9;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":270
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":238
* # Update cached dot-products
* for cur_col in range(predicted.cols):
* col_index = predicted.pointr[cur_col] # <<<<<<<<<<<<<<
@@ -3021,7 +3671,7 @@
*/
__pyx_v_col_index = (__pyx_v_predicted->pointr[__pyx_v_cur_col]);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":271
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":239
* for cur_col in range(predicted.cols):
* col_index = predicted.pointr[cur_col]
* next_col_index = predicted.pointr[cur_col + 1] # <<<<<<<<<<<<<<
@@ -3030,7 +3680,7 @@
*/
__pyx_v_next_col_index = (__pyx_v_predicted->pointr[(__pyx_v_cur_col + 1)]);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":272
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":240
* col_index = predicted.pointr[cur_col]
* next_col_index = predicted.pointr[cur_col + 1]
* for value_index in range(col_index, next_col_index): # <<<<<<<<<<<<<<
@@ -3040,7 +3690,7 @@
for (__pyx_t_10 = __pyx_v_col_index; __pyx_t_10 < __pyx_v_next_col_index; __pyx_t_10+=1) {
__pyx_v_value_index = __pyx_t_10;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":273
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":241
* next_col_index = predicted.pointr[cur_col + 1]
* for value_index in range(col_index, next_col_index):
* cur_row = predicted.rowind[value_index] # <<<<<<<<<<<<<<
@@ -3049,7 +3699,7 @@
*/
__pyx_v_cur_row = (__pyx_v_predicted->rowind[__pyx_v_value_index]);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":274
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":242
* for value_index in range(col_index, next_col_index):
* cur_row = predicted.rowind[value_index]
* predicted.value[value_index] += u[cur_row, axis] * v[cur_col, axis] # <<<<<<<<<<<<<<
@@ -3065,32 +3715,32 @@
}
}
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":277
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":245
*
* # Factor out the svals from u and v
* u_sigma = np.sqrt(np.add.reduce(np.multiply(u, u))) # <<<<<<<<<<<<<<
* v_sigma = np.sqrt(np.add.reduce(np.multiply(v, v)))
*
*/
- __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- __pyx_t_5 = PyObject_GetAttr(__pyx_1, __pyx_kp_sqrt); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_GetAttr(__pyx_1, __pyx_kp_sqrt); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_2);
- __pyx_t_1 = PyObject_GetAttr(__pyx_2, __pyx_kp_add); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(__pyx_2, __pyx_kp_add); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_kp_reduce); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_kp_reduce); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_multiply); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_multiply); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
__Pyx_INCREF(((PyObject *)__pyx_v_u));
PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_u));
@@ -3098,25 +3748,25 @@
__Pyx_INCREF(((PyObject *)__pyx_v_u));
PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_u));
__Pyx_GIVEREF(((PyObject *)__pyx_v_u));
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
@@ -3124,32 +3774,32 @@
__pyx_v_u_sigma = __pyx_t_2;
__pyx_t_2 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":278
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":246
* # Factor out the svals from u and v
* u_sigma = np.sqrt(np.add.reduce(np.multiply(u, u)))
* v_sigma = np.sqrt(np.add.reduce(np.multiply(v, v))) # <<<<<<<<<<<<<<
*
* u_tensor = DenseTensor(np.divide(u, u_sigma))
*/
- __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_2);
- __pyx_t_2 = PyObject_GetAttr(__pyx_2, __pyx_kp_sqrt); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_GetAttr(__pyx_2, __pyx_kp_sqrt); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- __pyx_t_4 = PyObject_GetAttr(__pyx_1, __pyx_kp_add); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_GetAttr(__pyx_1, __pyx_kp_add); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_kp_reduce); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_kp_reduce); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_2);
- __pyx_t_4 = PyObject_GetAttr(__pyx_2, __pyx_kp_multiply); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_GetAttr(__pyx_2, __pyx_kp_multiply); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
__Pyx_INCREF(((PyObject *)__pyx_v_v));
PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_v));
@@ -3157,25 +3807,25 @@
__Pyx_INCREF(((PyObject *)__pyx_v_v));
PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_v));
__Pyx_GIVEREF(((PyObject *)__pyx_v_v));
- __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
@@ -3183,19 +3833,19 @@
__pyx_v_v_sigma = __pyx_t_1;
__pyx_t_1 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":280
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":248
* v_sigma = np.sqrt(np.add.reduce(np.multiply(v, v)))
*
* u_tensor = DenseTensor(np.divide(u, u_sigma)) # <<<<<<<<<<<<<<
* v_tensor = DenseTensor(np.divide(v, v_sigma))
* sigma = DenseTensor(np.multiply(u_sigma, v_sigma))
*/
- __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_divide); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_divide); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
__Pyx_INCREF(((PyObject *)__pyx_v_u));
PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_u));
@@ -3203,35 +3853,35 @@
__Pyx_INCREF(__pyx_v_u_sigma);
PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_u_sigma);
__Pyx_GIVEREF(__pyx_v_u_sigma);
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_v_DenseTensor, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_v_DenseTensor, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_v_u_tensor);
__pyx_v_u_tensor = __pyx_t_2;
__pyx_t_2 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":281
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":249
*
* u_tensor = DenseTensor(np.divide(u, u_sigma))
* v_tensor = DenseTensor(np.divide(v, v_sigma)) # <<<<<<<<<<<<<<
* sigma = DenseTensor(np.multiply(u_sigma, v_sigma))
*
*/
- __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_2);
- __pyx_t_2 = PyObject_GetAttr(__pyx_2, __pyx_kp_divide); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_GetAttr(__pyx_2, __pyx_kp_divide); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_2); __pyx_2 = 0;
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
__Pyx_INCREF(((PyObject *)__pyx_v_v));
PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_v));
@@ -3239,35 +3889,35 @@
__Pyx_INCREF(__pyx_v_v_sigma);
PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_v_sigma);
__Pyx_GIVEREF(__pyx_v_v_sigma);
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_v_DenseTensor, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_Call(__pyx_v_DenseTensor, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_v_v_tensor);
__pyx_v_v_tensor = __pyx_t_1;
__pyx_t_1 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":282
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":250
* u_tensor = DenseTensor(np.divide(u, u_sigma))
* v_tensor = DenseTensor(np.divide(v, v_sigma))
* sigma = DenseTensor(np.multiply(u_sigma, v_sigma)) # <<<<<<<<<<<<<<
*
* svdFreeSMat(predicted)
*/
- __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_multiply); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_multiply); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
__Pyx_INCREF(__pyx_v_u_sigma);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_u_sigma);
@@ -3275,23 +3925,23 @@
__Pyx_INCREF(__pyx_v_v_sigma);
PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_v_sigma);
__Pyx_GIVEREF(__pyx_v_v_sigma);
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_v_DenseTensor, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_v_DenseTensor, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_v_sigma);
__pyx_v_sigma = __pyx_t_2;
__pyx_t_2 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":284
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":252
* sigma = DenseTensor(np.multiply(u_sigma, v_sigma))
*
* svdFreeSMat(predicted) # <<<<<<<<<<<<<<
@@ -3300,7 +3950,7 @@
*/
svdFreeSMat(__pyx_v_predicted);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":286
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":254
* svdFreeSMat(predicted)
*
* if self.transposed: # <<<<<<<<<<<<<<
@@ -3310,7 +3960,7 @@
__pyx_t_27 = ((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)__pyx_v_self)->transposed;
if (__pyx_t_27) {
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":287
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":255
*
* if self.transposed:
* return v_tensor, u_tensor, sigma # <<<<<<<<<<<<<<
@@ -3318,7 +3968,7 @@
* return u_tensor, v_tensor, sigma
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
__Pyx_INCREF(__pyx_v_v_tensor);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_v_tensor);
@@ -3336,15 +3986,15 @@
}
/*else*/ {
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":289
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":257
* return v_tensor, u_tensor, sigma
* else:
* return u_tensor, v_tensor, sigma # <<<<<<<<<<<<<<
*
- * def svd(tensor, k=50, row_factors=None):
+ * def svd(tensor, k=50, row_factors=None, offset_for_row=None, offset_for_col=None):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
__Pyx_INCREF(__pyx_v_u_tensor);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_u_tensor);
@@ -3396,12 +4046,12 @@
return __pyx_r;
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":291
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":259
* return u_tensor, v_tensor, sigma
*
- * def svd(tensor, k=50, row_factors=None): # <<<<<<<<<<<<<<
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.pack()
+ * def svd(tensor, k=50, row_factors=None, offset_for_row=None, offset_for_col=None): # <<<<<<<<<<<<<<
+ * CSC = CSCMatrix(tensor, offset_for_row, offset_for_col)
+ * CSC.pack(row_factors)
*/
static PyObject *__pyx_pf_6svdlib_7_svdlib_svd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
@@ -3409,20 +4059,26 @@
PyObject *__pyx_v_tensor = 0;
PyObject *__pyx_v_k = 0;
PyObject *__pyx_v_row_factors = 0;
+ PyObject *__pyx_v_offset_for_row = 0;
+ PyObject *__pyx_v_offset_for_col = 0;
PyObject *__pyx_v_CSC;
PyObject *__pyx_r = NULL;
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
- static PyObject **__pyx_pyargnames[] = {&__pyx_kp_tensor,&__pyx_kp_k,&__pyx_kp_row_factors,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_kp_tensor,&__pyx_kp_k,&__pyx_kp_row_factors,&__pyx_kp_offset_for_row,&__pyx_kp_offset_for_col,0};
__Pyx_SetupRefcountContext("svd");
__pyx_self = __pyx_self;
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
- PyObject* values[3] = {0,0,0};
+ PyObject* values[5] = {0,0,0,0,0};
values[1] = __pyx_int_50;
values[2] = Py_None;
+ values[3] = Py_None;
+ values[4] = Py_None;
switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -3444,17 +4100,33 @@
PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_row_factors);
if (unlikely(value)) { values[2] = value; kw_args--; }
}
+ case 3:
+ if (kw_args > 0) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset_for_row);
+ if (unlikely(value)) { values[3] = value; kw_args--; }
+ }
+ case 4:
+ if (kw_args > 0) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset_for_col);
+ if (unlikely(value)) { values[4] = value; kw_args--; }
+ }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "svd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "svd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
__pyx_v_tensor = values[0];
__pyx_v_k = values[1];
__pyx_v_row_factors = values[2];
+ __pyx_v_offset_for_row = values[3];
+ __pyx_v_offset_for_col = values[4];
} else {
__pyx_v_k = __pyx_int_50;
__pyx_v_row_factors = Py_None;
+ __pyx_v_offset_for_row = Py_None;
+ __pyx_v_offset_for_col = Py_None;
switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 5: __pyx_v_offset_for_col = PyTuple_GET_ITEM(__pyx_args, 4);
+ case 4: __pyx_v_offset_for_row = PyTuple_GET_ITEM(__pyx_args, 3);
case 3: __pyx_v_row_factors = PyTuple_GET_ITEM(__pyx_args, 2);
case 2: __pyx_v_k = PyTuple_GET_ITEM(__pyx_args, 1);
case 1: __pyx_v_tensor = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -3464,70 +4136,79 @@
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("svd", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("svd", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("svdlib._svdlib.svd");
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_v_CSC = Py_None; __Pyx_INCREF(Py_None);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":292
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":260
*
- * def svd(tensor, k=50, row_factors=None):
- * CSC = CSCMatrix(tensor, row_factors) # <<<<<<<<<<<<<<
- * CSC.pack()
+ * def svd(tensor, k=50, row_factors=None, offset_for_row=None, offset_for_col=None):
+ * CSC = CSCMatrix(tensor, offset_for_row, offset_for_col) # <<<<<<<<<<<<<<
+ * CSC.pack(row_factors)
* return CSC.svdA(k)
*/
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(__pyx_v_tensor);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tensor);
__Pyx_GIVEREF(__pyx_v_tensor);
+ __Pyx_INCREF(__pyx_v_offset_for_row);
+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_offset_for_row);
+ __Pyx_GIVEREF(__pyx_v_offset_for_row);
+ __Pyx_INCREF(__pyx_v_offset_for_col);
+ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_offset_for_col);
+ __Pyx_GIVEREF(__pyx_v_offset_for_col);
+ __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6svdlib_7_svdlib_CSCMatrix)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_v_CSC);
+ __pyx_v_CSC = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":261
+ * def svd(tensor, k=50, row_factors=None, offset_for_row=None, offset_for_col=None):
+ * CSC = CSCMatrix(tensor, offset_for_row, offset_for_col)
+ * CSC.pack(row_factors) # <<<<<<<<<<<<<<
+ * return CSC.svdA(k)
+ *
+ */
+ __pyx_t_2 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_pack); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(__pyx_v_row_factors);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_row_factors);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_row_factors);
__Pyx_GIVEREF(__pyx_v_row_factors);
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6svdlib_7_svdlib_CSCMatrix)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_v_CSC);
- __pyx_v_CSC = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":293
- * def svd(tensor, k=50, row_factors=None):
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.pack() # <<<<<<<<<<<<<<
- * return CSC.svdA(k)
- *
- */
- __pyx_t_2 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_pack); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":294
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.pack()
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":262
+ * CSC = CSCMatrix(tensor, offset_for_row, offset_for_col)
+ * CSC.pack(row_factors)
* return CSC.svdA(k) # <<<<<<<<<<<<<<
*
- * def dictSvd(tensor, k=50, row_factors=None):
+ * def dictSvd(tensor, k=50, row_factors=None, offset_for_row=None, offset_for_col=None):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_svdA); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+ __pyx_t_3 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_svdA); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(__pyx_v_k);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_k);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_k);
__Pyx_GIVEREF(__pyx_v_k);
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
+ __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
goto __pyx_L0;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -3545,12 +4226,12 @@
return __pyx_r;
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":296
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":264
* return CSC.svdA(k)
*
- * def dictSvd(tensor, k=50, row_factors=None): # <<<<<<<<<<<<<<
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.dictPack()
+ * def dictSvd(tensor, k=50, row_factors=None, offset_for_row=None, offset_for_col=None): # <<<<<<<<<<<<<<
+ * CSC = CSCMatrix(tensor, offset_for_row, offset_for_col)
+ * CSC.dictPack(row_factors)
*/
static PyObject *__pyx_pf_6svdlib_7_svdlib_dictSvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
@@ -3558,20 +4239,26 @@
PyObject *__pyx_v_tensor = 0;
PyObject *__pyx_v_k = 0;
PyObject *__pyx_v_row_factors = 0;
+ PyObject *__pyx_v_offset_for_row = 0;
+ PyObject *__pyx_v_offset_for_col = 0;
PyObject *__pyx_v_CSC;
PyObject *__pyx_r = NULL;
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
- static PyObject **__pyx_pyargnames[] = {&__pyx_kp_tensor,&__pyx_kp_k,&__pyx_kp_row_factors,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_kp_tensor,&__pyx_kp_k,&__pyx_kp_row_factors,&__pyx_kp_offset_for_row,&__pyx_kp_offset_for_col,0};
__Pyx_SetupRefcountContext("dictSvd");
__pyx_self = __pyx_self;
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
- PyObject* values[3] = {0,0,0};
+ PyObject* values[5] = {0,0,0,0,0};
values[1] = __pyx_int_50;
values[2] = Py_None;
+ values[3] = Py_None;
+ values[4] = Py_None;
switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -3593,17 +4280,33 @@
PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_row_factors);
if (unlikely(value)) { values[2] = value; kw_args--; }
}
+ case 3:
+ if (kw_args > 0) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset_for_row);
+ if (unlikely(value)) { values[3] = value; kw_args--; }
+ }
+ case 4:
+ if (kw_args > 0) {
+ PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset_for_col);
+ if (unlikely(value)) { values[4] = value; kw_args--; }
+ }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "dictSvd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "dictSvd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
__pyx_v_tensor = values[0];
__pyx_v_k = values[1];
__pyx_v_row_factors = values[2];
+ __pyx_v_offset_for_row = values[3];
+ __pyx_v_offset_for_col = values[4];
} else {
__pyx_v_k = __pyx_int_50;
__pyx_v_row_factors = Py_None;
+ __pyx_v_offset_for_row = Py_None;
+ __pyx_v_offset_for_col = Py_None;
switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 5: __pyx_v_offset_for_col = PyTuple_GET_ITEM(__pyx_args, 4);
+ case 4: __pyx_v_offset_for_row = PyTuple_GET_ITEM(__pyx_args, 3);
case 3: __pyx_v_row_factors = PyTuple_GET_ITEM(__pyx_args, 2);
case 2: __pyx_v_k = PyTuple_GET_ITEM(__pyx_args, 1);
case 1: __pyx_v_tensor = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -3613,70 +4316,79 @@
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("dictSvd", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("dictSvd", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("svdlib._svdlib.dictSvd");
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_v_CSC = Py_None; __Pyx_INCREF(Py_None);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":297
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":265
*
- * def dictSvd(tensor, k=50, row_factors=None):
- * CSC = CSCMatrix(tensor, row_factors) # <<<<<<<<<<<<<<
- * CSC.dictPack()
+ * def dictSvd(tensor, k=50, row_factors=None, offset_for_row=None, offset_for_col=None):
+ * CSC = CSCMatrix(tensor, offset_for_row, offset_for_col) # <<<<<<<<<<<<<<
+ * CSC.dictPack(row_factors)
* return CSC.svdA(k)
*/
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(__pyx_v_tensor);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tensor);
__Pyx_GIVEREF(__pyx_v_tensor);
+ __Pyx_INCREF(__pyx_v_offset_for_row);
+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_offset_for_row);
+ __Pyx_GIVEREF(__pyx_v_offset_for_row);
+ __Pyx_INCREF(__pyx_v_offset_for_col);
+ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_offset_for_col);
+ __Pyx_GIVEREF(__pyx_v_offset_for_col);
+ __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6svdlib_7_svdlib_CSCMatrix)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_v_CSC);
+ __pyx_v_CSC = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":266
+ * def dictSvd(tensor, k=50, row_factors=None, offset_for_row=None, offset_for_col=None):
+ * CSC = CSCMatrix(tensor, offset_for_row, offset_for_col)
+ * CSC.dictPack(row_factors) # <<<<<<<<<<<<<<
+ * return CSC.svdA(k)
+ *
+ */
+ __pyx_t_2 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_dictPack); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(__pyx_v_row_factors);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_row_factors);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_row_factors);
__Pyx_GIVEREF(__pyx_v_row_factors);
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6svdlib_7_svdlib_CSCMatrix)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_v_CSC);
- __pyx_v_CSC = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":298
- * def dictSvd(tensor, k=50, row_factors=None):
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.dictPack() # <<<<<<<<<<<<<<
- * return CSC.svdA(k)
- *
- */
- __pyx_t_2 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_dictPack); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":299
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.dictPack()
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":267
+ * CSC = CSCMatrix(tensor, offset_for_row, offset_for_col)
+ * CSC.dictPack(row_factors)
* return CSC.svdA(k) # <<<<<<<<<<<<<<
*
* def isvd(tensor, k=50, niter=100, lrate=.001, row_factors=None):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_svdA); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+ __pyx_t_3 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_svdA); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(__pyx_v_k);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_k);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_k);
__Pyx_GIVEREF(__pyx_v_k);
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
+ __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
goto __pyx_L0;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -3694,12 +4406,12 @@
return __pyx_r;
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":301
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":269
* return CSC.svdA(k)
*
* def isvd(tensor, k=50, niter=100, lrate=.001, row_factors=None): # <<<<<<<<<<<<<<
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.pack()
+ * CSC = CSCMatrix(tensor)
+ * CSC.pack(row_factors)
*/
static PyObject *__pyx_pf_6svdlib_7_svdlib_isvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
@@ -3760,7 +4472,7 @@
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "isvd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "isvd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
__pyx_v_tensor = values[0];
__pyx_v_k = values[1];
@@ -3784,76 +4496,79 @@
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("isvd", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("isvd", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("svdlib._svdlib.isvd");
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_v_CSC = Py_None; __Pyx_INCREF(Py_None);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":302
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":270
*
* def isvd(tensor, k=50, niter=100, lrate=.001, row_factors=None):
- * CSC = CSCMatrix(tensor, row_factors) # <<<<<<<<<<<<<<
- * CSC.pack()
+ * CSC = CSCMatrix(tensor) # <<<<<<<<<<<<<<
+ * CSC.pack(row_factors)
* return CSC.isvd(k, niter, lrate)
*/
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(__pyx_v_tensor);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tensor);
__Pyx_GIVEREF(__pyx_v_tensor);
+ __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6svdlib_7_svdlib_CSCMatrix)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_v_CSC);
+ __pyx_v_CSC = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":271
+ * def isvd(tensor, k=50, niter=100, lrate=.001, row_factors=None):
+ * CSC = CSCMatrix(tensor)
+ * CSC.pack(row_factors) # <<<<<<<<<<<<<<
+ * return CSC.isvd(k, niter, lrate)
+ *
+ */
+ __pyx_t_2 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_pack); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(__pyx_v_row_factors);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_row_factors);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_row_factors);
__Pyx_GIVEREF(__pyx_v_row_factors);
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6svdlib_7_svdlib_CSCMatrix)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_v_CSC);
- __pyx_v_CSC = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":303
- * def isvd(tensor, k=50, niter=100, lrate=.001, row_factors=None):
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.pack() # <<<<<<<<<<<<<<
- * return CSC.isvd(k, niter, lrate)
- *
- */
- __pyx_t_2 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_pack); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":304
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.pack()
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":272
+ * CSC = CSCMatrix(tensor)
+ * CSC.pack(row_factors)
* return CSC.isvd(k, niter, lrate) # <<<<<<<<<<<<<<
*
* def dictIsvd(tensor, k=50, niter=100, lrate=.001, row_factors=None):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_isvd); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+ __pyx_t_3 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_isvd); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(__pyx_v_k);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_k);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_k);
__Pyx_GIVEREF(__pyx_v_k);
__Pyx_INCREF(__pyx_v_niter);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_niter);
+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_niter);
__Pyx_GIVEREF(__pyx_v_niter);
__Pyx_INCREF(__pyx_v_lrate);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_lrate);
+ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_lrate);
__Pyx_GIVEREF(__pyx_v_lrate);
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
+ __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
goto __pyx_L0;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -3871,12 +4586,12 @@
return __pyx_r;
}
-/* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":306
+/* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":274
* return CSC.isvd(k, niter, lrate)
*
* def dictIsvd(tensor, k=50, niter=100, lrate=.001, row_factors=None): # <<<<<<<<<<<<<<
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.dictPack()
+ * CSC = CSCMatrix(tensor)
+ * CSC.dictPack(row_factors)
*/
static PyObject *__pyx_pf_6svdlib_7_svdlib_dictIsvd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
@@ -3937,7 +4652,7 @@
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "dictIsvd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "dictIsvd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
__pyx_v_tensor = values[0];
__pyx_v_k = values[1];
@@ -3961,73 +4676,76 @@
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("dictIsvd", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("dictIsvd", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("svdlib._svdlib.dictIsvd");
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_v_CSC = Py_None; __Pyx_INCREF(Py_None);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":307
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":275
*
* def dictIsvd(tensor, k=50, niter=100, lrate=.001, row_factors=None):
- * CSC = CSCMatrix(tensor, row_factors) # <<<<<<<<<<<<<<
- * CSC.dictPack()
+ * CSC = CSCMatrix(tensor) # <<<<<<<<<<<<<<
+ * CSC.dictPack(row_factors)
* return CSC.isvd(k, niter, lrate)
*/
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(__pyx_v_tensor);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tensor);
__Pyx_GIVEREF(__pyx_v_tensor);
+ __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6svdlib_7_svdlib_CSCMatrix)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_v_CSC);
+ __pyx_v_CSC = __pyx_t_2;
+ __pyx_t_2 = 0;
+
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":276
+ * def dictIsvd(tensor, k=50, niter=100, lrate=.001, row_factors=None):
+ * CSC = CSCMatrix(tensor)
+ * CSC.dictPack(row_factors) # <<<<<<<<<<<<<<
+ * return CSC.isvd(k, niter, lrate)
+ */
+ __pyx_t_2 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_dictPack); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(__pyx_v_row_factors);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_row_factors);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_row_factors);
__Pyx_GIVEREF(__pyx_v_row_factors);
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6svdlib_7_svdlib_CSCMatrix)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_v_CSC);
- __pyx_v_CSC = __pyx_t_2;
- __pyx_t_2 = 0;
-
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":308
- * def dictIsvd(tensor, k=50, niter=100, lrate=.001, row_factors=None):
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.dictPack() # <<<<<<<<<<<<<<
- * return CSC.isvd(k, niter, lrate)
- */
- __pyx_t_2 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_dictPack); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":309
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.dictPack()
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":277
+ * CSC = CSCMatrix(tensor)
+ * CSC.dictPack(row_factors)
* return CSC.isvd(k, niter, lrate) # <<<<<<<<<<<<<<
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_isvd); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+ __pyx_t_3 = PyObject_GetAttr(__pyx_v_CSC, __pyx_kp_isvd); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(__pyx_v_k);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_k);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_k);
__Pyx_GIVEREF(__pyx_v_k);
__Pyx_INCREF(__pyx_v_niter);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_niter);
+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_niter);
__Pyx_GIVEREF(__pyx_v_niter);
__Pyx_INCREF(__pyx_v_lrate);
- PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_lrate);
+ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_lrate);
__Pyx_GIVEREF(__pyx_v_lrate);
- __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
+ __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
goto __pyx_L0;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -4045,7 +4763,7 @@
return __pyx_r;
}
-/* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":65
+/* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":152
* # experimental exception made for __getbuffer__ and __releasebuffer__
* # -- the details of this may change.
* def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<<
@@ -4078,7 +4796,7 @@
__pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
__Pyx_GIVEREF(__pyx_v_info->obj);
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":71
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":158
* # of flags
* cdef int copy_shape, i, ndim
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
@@ -4087,7 +4805,7 @@
*/
__pyx_v_endian_detector = 1;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":72
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":159
* cdef int copy_shape, i, ndim
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
@@ -4096,7 +4814,7 @@
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":74
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":161
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
*
* ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<<
@@ -4105,7 +4823,7 @@
*/
__pyx_v_ndim = PyArray_NDIM(((PyArrayObject *)__pyx_v_self));
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":76
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":163
* ndim = PyArray_NDIM(self)
*
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -4115,7 +4833,7 @@
__pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
if (__pyx_t_1) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":77
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":164
*
* if sizeof(npy_intp) != sizeof(Py_ssize_t):
* copy_shape = 1 # <<<<<<<<<<<<<<
@@ -4127,7 +4845,7 @@
}
/*else*/ {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":79
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":166
* copy_shape = 1
* else:
* copy_shape = 0 # <<<<<<<<<<<<<<
@@ -4138,7 +4856,7 @@
}
__pyx_L5:;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":81
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":168
* copy_shape = 0
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
@@ -4147,7 +4865,7 @@
*/
if (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS)) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":82
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":169
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
* and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<<
@@ -4160,29 +4878,29 @@
}
if (__pyx_t_1) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":83
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":170
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
* and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
* raise ValueError("ndarray is not C contiguous") # <<<<<<<<<<<<<<
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
*/
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
__Pyx_INCREF(__pyx_kp_1);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_1);
__Pyx_GIVEREF(__pyx_kp_1);
- __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[1]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[1]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L6;
}
__pyx_L6:;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":85
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":172
* raise ValueError("ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
@@ -4191,7 +4909,7 @@
*/
if (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS)) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":86
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":173
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
* and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<<
@@ -4204,29 +4922,29 @@
}
if (__pyx_t_1) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":87
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":174
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
* and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
* raise ValueError("ndarray is not Fortran contiguous") # <<<<<<<<<<<<<<
*
* info.buf = PyArray_DATA(self)
*/
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
__Pyx_INCREF(__pyx_kp_2);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_2);
__Pyx_GIVEREF(__pyx_kp_2);
- __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- {__pyx_filename = __pyx_f[1]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[1]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L7;
}
__pyx_L7:;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":89
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":176
* raise ValueError("ndarray is not Fortran contiguous")
*
* info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<<
@@ -4235,7 +4953,7 @@
*/
__pyx_v_info->buf = PyArray_DATA(((PyArrayObject *)__pyx_v_self));
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":90
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":177
*
* info.buf = PyArray_DATA(self)
* info.ndim = ndim # <<<<<<<<<<<<<<
@@ -4244,7 +4962,7 @@
*/
__pyx_v_info->ndim = __pyx_v_ndim;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":91
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":178
* info.buf = PyArray_DATA(self)
* info.ndim = ndim
* if copy_shape: # <<<<<<<<<<<<<<
@@ -4254,7 +4972,7 @@
__pyx_t_4 = __pyx_v_copy_shape;
if (__pyx_t_4) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":94
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":181
* # Allocate new buffer for strides and shape info. This is allocated
* # as one block, strides first.
* info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<<
@@ -4263,7 +4981,7 @@
*/
__pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * __pyx_v_ndim) * 2)));
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":95
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":182
* # as one block, strides first.
* info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)
* info.shape = info.strides + ndim # <<<<<<<<<<<<<<
@@ -4272,7 +4990,7 @@
*/
__pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":96
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":183
* info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)
* info.shape = info.strides + ndim
* for i in range(ndim): # <<<<<<<<<<<<<<
@@ -4282,7 +5000,7 @@
for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_v_ndim; __pyx_t_4+=1) {
__pyx_v_i = __pyx_t_4;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":97
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":184
* info.shape = info.strides + ndim
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<<
@@ -4291,7 +5009,7 @@
*/
(__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(((PyArrayObject *)__pyx_v_self))[__pyx_v_i]);
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":98
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":185
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i]
* info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<<
@@ -4304,7 +5022,7 @@
}
/*else*/ {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":100
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":187
* info.shape[i] = PyArray_DIMS(self)[i]
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self) # <<<<<<<<<<<<<<
@@ -4313,7 +5031,7 @@
*/
__pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(((PyArrayObject *)__pyx_v_self)));
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":101
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":188
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self) # <<<<<<<<<<<<<<
@@ -4324,7 +5042,7 @@
}
__pyx_L8:;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":102
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":189
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL # <<<<<<<<<<<<<<
@@ -4333,7 +5051,7 @@
*/
__pyx_v_info->suboffsets = NULL;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":103
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":190
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<<
@@ -4342,7 +5060,7 @@
*/
__pyx_v_info->itemsize = PyArray_ITEMSIZE(((PyArrayObject *)__pyx_v_self));
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":104
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":191
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self)
* info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<<
@@ -4351,7 +5069,7 @@
*/
__pyx_v_info->readonly = (!PyArray_ISWRITEABLE(((PyArrayObject *)__pyx_v_self)));
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":107
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":194
*
* cdef int t
* cdef char* f = NULL # <<<<<<<<<<<<<<
@@ -4360,7 +5078,7 @@
*/
__pyx_v_f = NULL;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":108
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":195
* cdef int t
* cdef char* f = NULL
* cdef dtype descr = self.descr # <<<<<<<<<<<<<<
@@ -4370,7 +5088,7 @@
__Pyx_INCREF(((PyObject *)((PyArrayObject *)__pyx_v_self)->descr));
__pyx_v_descr = ((PyArrayObject *)__pyx_v_self)->descr;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":112
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":199
* cdef int offset
*
* cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<<
@@ -4379,7 +5097,7 @@
*/
__pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr);
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":114
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":201
* cdef bint hasfields = PyDataType_HASFIELDS(descr)
*
* if not hasfields and not copy_shape: # <<<<<<<<<<<<<<
@@ -4393,7 +5111,7 @@
}
if (__pyx_t_1) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":116
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":203
* if not hasfields and not copy_shape:
* # do not call releasebuffer
* info.obj = None # <<<<<<<<<<<<<<
@@ -4409,7 +5127,7 @@
}
/*else*/ {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":119
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":206
* else:
* # need to call releasebuffer
* info.obj = self # <<<<<<<<<<<<<<
@@ -4424,7 +5142,7 @@
}
__pyx_L11:;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":121
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":208
* info.obj = self
*
* if not hasfields: # <<<<<<<<<<<<<<
@@ -4434,7 +5152,7 @@
__pyx_t_1 = (!__pyx_v_hasfields);
if (__pyx_t_1) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":122
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":209
*
* if not hasfields:
* t = descr.type_num # <<<<<<<<<<<<<<
@@ -4443,7 +5161,7 @@
*/
__pyx_v_t = __pyx_v_descr->type_num;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":123
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":210
* if not hasfields:
* t = descr.type_num
* if ((descr.byteorder == '>' and little_endian) or # <<<<<<<<<<<<<<
@@ -4457,7 +5175,7 @@
}
if (!__pyx_t_1) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":124
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":211
* t = descr.type_num
* if ((descr.byteorder == '>' and little_endian) or
* (descr.byteorder == '<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -4475,244 +5193,277 @@
}
if (__pyx_t_6) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":125
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":212
* if ((descr.byteorder == '>' and little_endian) or
* (descr.byteorder == '<' and not little_endian)):
* raise ValueError("Non-native byte order not supported") # <<<<<<<<<<<<<<
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
*/
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
__Pyx_INCREF(__pyx_kp_5);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_5);
__Pyx_GIVEREF(__pyx_kp_5);
- __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[1]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L13;
}
__pyx_L13:;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":126
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":213
* (descr.byteorder == '<' and not little_endian)):
* raise ValueError("Non-native byte order not supported")
* if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<<
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h"
*/
- switch (__pyx_v_t) {
- case NPY_BYTE:
+ __pyx_t_6 = (__pyx_v_t == NPY_BYTE);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_6;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":127
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":214
* raise ValueError("Non-native byte order not supported")
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
*/
- case NPY_UBYTE:
+ __pyx_t_6 = (__pyx_v_t == NPY_UBYTE);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_7;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":128
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":215
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
*/
- case NPY_SHORT:
+ __pyx_t_6 = (__pyx_v_t == NPY_SHORT);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_8;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":129
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":216
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
*/
- case NPY_USHORT:
+ __pyx_t_6 = (__pyx_v_t == NPY_USHORT);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_9;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":130
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":217
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
*/
- case NPY_INT:
+ __pyx_t_6 = (__pyx_v_t == NPY_INT);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_10;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":131
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":218
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
*/
- case NPY_UINT:
+ __pyx_t_6 = (__pyx_v_t == NPY_UINT);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_11;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":132
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":219
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
*/
- case NPY_LONG:
+ __pyx_t_6 = (__pyx_v_t == NPY_LONG);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_12;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":133
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":220
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
*/
- case NPY_ULONG:
+ __pyx_t_6 = (__pyx_v_t == NPY_ULONG);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_13;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":134
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":221
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
*/
- case NPY_LONGLONG:
+ __pyx_t_6 = (__pyx_v_t == NPY_LONGLONG);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_14;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":135
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":222
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
*/
- case NPY_ULONGLONG:
+ __pyx_t_6 = (__pyx_v_t == NPY_ULONGLONG);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_15;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":136
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":223
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
*/
- case NPY_FLOAT:
+ __pyx_t_6 = (__pyx_v_t == NPY_FLOAT);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_16;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":137
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":224
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
*/
- case NPY_DOUBLE:
+ __pyx_t_6 = (__pyx_v_t == NPY_DOUBLE);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_17;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":138
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":225
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
*/
- case NPY_LONGDOUBLE:
+ __pyx_t_6 = (__pyx_v_t == NPY_LONGDOUBLE);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_18;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":139
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":226
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
*/
- case NPY_CFLOAT:
+ __pyx_t_6 = (__pyx_v_t == NPY_CFLOAT);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_19;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":140
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":227
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O"
*/
- case NPY_CDOUBLE:
+ __pyx_t_6 = (__pyx_v_t == NPY_CDOUBLE);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_20;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":141
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":228
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f = "O"
* else:
*/
- case NPY_CLONGDOUBLE:
+ __pyx_t_6 = (__pyx_v_t == NPY_CLONGDOUBLE);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_21;
- break;
+ goto __pyx_L14;
+ }
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":142
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":229
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<<
* else:
* raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
*/
- case NPY_OBJECT:
+ __pyx_t_6 = (__pyx_v_t == NPY_OBJECT);
+ if (__pyx_t_6) {
__pyx_v_f = __pyx_k_22;
- break;
- default:
+ goto __pyx_L14;
+ }
+ /*else*/ {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":144
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":231
* elif t == NPY_OBJECT: f = "O"
* else:
* raise ValueError("unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
* info.format = f
* return
*/
- __pyx_t_3 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PyNumber_Remainder(__pyx_kp_23, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyNumber_Remainder(__pyx_kp_23, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- {__pyx_filename = __pyx_f[1]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- break;
+ {__pyx_filename = __pyx_f[1]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
+ __pyx_L14:;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":145
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":232
* else:
* raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f # <<<<<<<<<<<<<<
@@ -4721,7 +5472,7 @@
*/
__pyx_v_info->format = __pyx_v_f;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":146
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":233
* raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f
* return # <<<<<<<<<<<<<<
@@ -4734,7 +5485,7 @@
}
/*else*/ {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":148
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":235
* return
* else:
* info.format = <char*>stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<<
@@ -4743,7 +5494,7 @@
*/
__pyx_v_info->format = ((char *)malloc(255));
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":149
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":236
* else:
* info.format = <char*>stdlib.malloc(_buffer_format_string_len)
* info.format[0] = '^' # Native data types, manual alignment # <<<<<<<<<<<<<<
@@ -4752,7 +5503,7 @@
*/
(__pyx_v_info->format[0]) = '^';
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":150
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":237
* info.format = <char*>stdlib.malloc(_buffer_format_string_len)
* info.format[0] = '^' # Native data types, manual alignment
* offset = 0 # <<<<<<<<<<<<<<
@@ -4761,17 +5512,17 @@
*/
__pyx_v_offset = 0;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":153
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":240
* f = _util_dtypestring(descr, info.format + 1,
* info.format + _buffer_format_string_len,
* &offset) # <<<<<<<<<<<<<<
* f[0] = 0 # Terminate format string
*
*/
- __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_f = __pyx_t_7;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":154
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":241
* info.format + _buffer_format_string_len,
* &offset)
* f[0] = 0 # Terminate format string # <<<<<<<<<<<<<<
@@ -4803,7 +5554,7 @@
return __pyx_r;
}
-/* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":156
+/* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":243
* f[0] = 0 # Terminate format string
*
* def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<<
@@ -4814,10 +5565,9 @@
static void __pyx_pf_5numpy_7ndarray___releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/
static void __pyx_pf_5numpy_7ndarray___releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
int __pyx_t_1;
- int __pyx_t_2;
__Pyx_SetupRefcountContext("__releasebuffer__");
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":157
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":244
*
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<<
@@ -4827,7 +5577,7 @@
__pyx_t_1 = PyArray_HASFIELDS(((PyArrayObject *)__pyx_v_self));
if (__pyx_t_1) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":158
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":245
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self):
* stdlib.free(info.format) # <<<<<<<<<<<<<<
@@ -4839,17 +5589,17 @@
}
__pyx_L5:;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":159
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":246
* if PyArray_HASFIELDS(self):
* stdlib.free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
* stdlib.free(info.strides)
* # info.shape was stored after info.strides in the same block
*/
- __pyx_t_2 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
- if (__pyx_t_2) {
+ __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
+ if (__pyx_t_1) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":160
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":247
* stdlib.free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t):
* stdlib.free(info.strides) # <<<<<<<<<<<<<<
@@ -4864,7 +5614,7 @@
__Pyx_FinishRefcountContext();
}
-/* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":277
+/* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":690
* ctypedef npy_cdouble complex_t
*
* cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<<
@@ -4874,13 +5624,16 @@
static INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx_v_descr, char *__pyx_v_f, char *__pyx_v_end, int *__pyx_v_offset) {
PyArray_Descr *__pyx_v_child;
- PyObject *__pyx_v_i;
int __pyx_v_endian_detector;
int __pyx_v_little_endian;
+ PyObject *__pyx_v_fields;
+ PyObject *__pyx_v_childname;
PyObject *__pyx_v_new_offset;
PyObject *__pyx_v_t;
char *__pyx_r;
PyObject *__pyx_1 = 0;
+ PyObject *__pyx_2 = 0;
+ PyObject *__pyx_3 = 0;
Py_ssize_t __pyx_t_1;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
@@ -4892,142 +5645,133 @@
char *__pyx_t_9;
__Pyx_SetupRefcountContext("_util_dtypestring");
__pyx_v_child = ((PyArray_Descr *)Py_None); __Pyx_INCREF(Py_None);
- __pyx_v_i = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
+ __pyx_v_fields = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
+ __pyx_v_childname = Py_None; __Pyx_INCREF(Py_None);
__pyx_v_new_offset = Py_None; __Pyx_INCREF(Py_None);
__pyx_v_t = Py_None; __Pyx_INCREF(Py_None);
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":284
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":697
* cdef int delta_offset
* cdef tuple i
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
- *
+ * cdef tuple fields
*/
__pyx_v_endian_detector = 1;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":285
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":698
* cdef tuple i
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
+ * cdef tuple fields
*
- * for i in descr.fields.itervalues():
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":287
- * cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":701
+ * cdef tuple fields
*
- * for i in descr.fields.itervalues(): # <<<<<<<<<<<<<<
- * child = i[0]
- * new_offset = i[1]
+ * for childname in descr.names: # <<<<<<<<<<<<<<
+ * fields = descr.fields[childname]
+ * child, new_offset = fields
*/
- __pyx_t_2 = PyObject_GetAttr(__pyx_v_descr->fields, __pyx_kp_itervalues); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
- __pyx_t_1 = 0; __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2);
+ if (likely(((PyObject *)__pyx_v_descr->names) != Py_None)) {
+ __pyx_t_1 = 0; __pyx_t_2 = ((PyObject *)__pyx_v_descr->names); __Pyx_INCREF(__pyx_t_2);
} else {
- __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_2);
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
for (;;) {
- if (likely(PyList_CheckExact(__pyx_t_2))) {
- if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
- } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
+ __Pyx_DECREF(__pyx_v_childname);
+ __pyx_v_childname = __pyx_t_3;
+ __pyx_t_3 = 0;
+
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":702
+ *
+ * for childname in descr.names:
+ * fields = descr.fields[childname] # <<<<<<<<<<<<<<
+ * child, new_offset = fields
+ *
+ */
+ __pyx_1 = PyObject_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_1);
+ if (!(likely(PyTuple_CheckExact(__pyx_1)) || (__pyx_1) == Py_None || (PyErr_Format(PyExc_TypeError, "Expected tuple, got %s", Py_TYPE(__pyx_1)->tp_name), 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(((PyObject *)__pyx_v_fields));
+ __pyx_v_fields = ((PyObject *)__pyx_1);
+ __pyx_1 = 0;
+
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":703
+ * for childname in descr.names:
+ * fields = descr.fields[childname]
+ * child, new_offset = fields # <<<<<<<<<<<<<<
+ *
+ * if (end - f) - (new_offset - offset[0]) < 15:
+ */
+ if (likely(((PyObject *)__pyx_v_fields) != Py_None) && likely(PyTuple_GET_SIZE(((PyObject *)__pyx_v_fields)) == 2)) {
+ PyObject* tuple = ((PyObject *)__pyx_v_fields);
+ __pyx_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_2);
+ if (!(__Pyx_TypeTest(__pyx_2, __pyx_ptype_5numpy_dtype))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
+ __Pyx_DECREF(((PyObject *)__pyx_v_child));
+ __pyx_v_child = ((PyArray_Descr *)__pyx_2);
+ __pyx_2 = 0;
+ __Pyx_DECREF(__pyx_v_new_offset);
+ __pyx_v_new_offset = __pyx_3;
+ __pyx_3 = 0;
} else {
- __pyx_t_3 = PyIter_Next(__pyx_t_2);
- if (!__pyx_t_3) {
- if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- break;
- }
- __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_UnpackTupleError(((PyObject *)__pyx_v_fields), 2);
+ {__pyx_filename = __pyx_f[1]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- if (!(likely(PyTuple_CheckExact(__pyx_t_3)) || (__pyx_t_3) == Py_None || (PyErr_Format(PyExc_TypeError, "Expected tuple, got %s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_v_i));
- __pyx_v_i = ((PyObject *)__pyx_t_3);
- __pyx_t_3 = 0;
-
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":288
- *
- * for i in descr.fields.itervalues():
- * child = i[0] # <<<<<<<<<<<<<<
- * new_offset = i[1]
- *
- */
- __pyx_1 = __Pyx_GetItemInt_Tuple(((PyObject *)__pyx_v_i), 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_1);
- if (!(__Pyx_TypeTest(__pyx_1, __pyx_ptype_5numpy_dtype))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_v_child));
- __pyx_v_child = ((PyArray_Descr *)__pyx_1);
- __pyx_1 = 0;
-
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":289
- * for i in descr.fields.itervalues():
- * child = i[0]
- * new_offset = i[1] # <<<<<<<<<<<<<<
- *
- * if (end - f) - (new_offset - offset[0]) < 15:
- */
- __pyx_1 = __Pyx_GetItemInt_Tuple(((PyObject *)__pyx_v_i), 1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_1);
- __Pyx_DECREF(__pyx_v_new_offset);
- __pyx_v_new_offset = __pyx_1;
- __pyx_1 = 0;
-
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":291
- * new_offset = i[1]
+
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":705
+ * child, new_offset = fields
*
* if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<<
* raise RuntimeError("Format string allocated too short, see comment in numpy.pxd")
*
*/
- __pyx_t_3 = PyInt_FromLong((__pyx_v_end - __pyx_v_f)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyInt_FromLong((__pyx_v_end - __pyx_v_f)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_int_15, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_int_15, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_6) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":292
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":706
*
* if (end - f) - (new_offset - offset[0]) < 15:
* raise RuntimeError("Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<<
*
* if ((child.byteorder == '>' and little_endian) or
*/
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_5));
__Pyx_INCREF(__pyx_kp_25);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_25);
__Pyx_GIVEREF(__pyx_kp_25);
- __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- {__pyx_filename = __pyx_f[1]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[1]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L5;
}
__pyx_L5:;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":294
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":708
* raise RuntimeError("Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == '>' and little_endian) or # <<<<<<<<<<<<<<
@@ -5041,7 +5785,7 @@
}
if (!__pyx_t_6) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":295
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":709
*
* if ((child.byteorder == '>' and little_endian) or
* (child.byteorder == '<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -5059,29 +5803,29 @@
}
if (__pyx_t_8) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":296
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":710
* if ((child.byteorder == '>' and little_endian) or
* (child.byteorder == '<' and not little_endian)):
* raise ValueError("Non-native byte order not supported") # <<<<<<<<<<<<<<
* # One could encode it in the format string and have Cython
* # complain instead, BUT: < and > in format strings also imply
*/
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
__Pyx_INCREF(__pyx_kp_28);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_28);
__Pyx_GIVEREF(__pyx_kp_28);
- __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_5, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- {__pyx_filename = __pyx_f[1]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[1]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L6;
}
__pyx_L6:;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":306
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":720
*
* # Output padding bytes
* while offset[0] < new_offset: # <<<<<<<<<<<<<<
@@ -5089,16 +5833,16 @@
* f += 1
*/
while (1) {
- __pyx_t_5 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_v_new_offset, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_v_new_offset, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (!__pyx_t_8) break;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":307
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":721
* # Output padding bytes
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<<
@@ -5107,7 +5851,7 @@
*/
(__pyx_v_f[0]) = 120;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":308
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":722
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte
* f += 1 # <<<<<<<<<<<<<<
@@ -5116,7 +5860,7 @@
*/
__pyx_v_f += 1;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":309
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":723
* f[0] = 120 # "x"; pad byte
* f += 1
* offset[0] += 1 # <<<<<<<<<<<<<<
@@ -5126,7 +5870,7 @@
(__pyx_v_offset[0]) += 1;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":311
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":725
* offset[0] += 1
*
* offset[0] += child.itemsize # <<<<<<<<<<<<<<
@@ -5135,7 +5879,7 @@
*/
(__pyx_v_offset[0]) += __pyx_v_child->elsize;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":313
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":727
* offset[0] += child.itemsize
*
* if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<<
@@ -5145,20 +5889,20 @@
__pyx_t_8 = (!PyDataType_HASFIELDS(__pyx_v_child));
if (__pyx_t_8) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":314
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":728
*
* if not PyDataType_HASFIELDS(child):
* t = child.type_num # <<<<<<<<<<<<<<
* if end - f < 5:
* raise RuntimeError("Format string allocated too short.")
*/
- __pyx_t_4 = PyInt_FromLong(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromLong(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_v_t);
__pyx_v_t = __pyx_t_4;
__pyx_t_4 = 0;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":315
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":729
* if not PyDataType_HASFIELDS(child):
* t = child.type_num
* if end - f < 5: # <<<<<<<<<<<<<<
@@ -5168,288 +5912,288 @@
__pyx_t_8 = ((__pyx_v_end - __pyx_v_f) < 5);
if (__pyx_t_8) {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":316
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":730
* t = child.type_num
* if end - f < 5:
* raise RuntimeError("Format string allocated too short.") # <<<<<<<<<<<<<<
*
* # Until ticket #99 is fixed, use integers to avoid warnings
*/
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
__Pyx_INCREF(__pyx_kp_29);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_29);
__Pyx_GIVEREF(__pyx_kp_29);
- __pyx_t_5 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_5, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- {__pyx_filename = __pyx_f[1]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[1]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L10;
}
__pyx_L10:;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":319
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":733
*
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<<
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
*/
- __pyx_t_5 = PyInt_FromLong(NPY_BYTE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyInt_FromLong(NPY_BYTE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 98;
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":320
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":734
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
*/
- __pyx_t_4 = PyInt_FromLong(NPY_UBYTE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromLong(NPY_UBYTE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 66;
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":321
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":735
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
*/
- __pyx_t_5 = PyInt_FromLong(NPY_SHORT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyInt_FromLong(NPY_SHORT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 104;
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":322
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":736
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
*/
- __pyx_t_4 = PyInt_FromLong(NPY_USHORT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromLong(NPY_USHORT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 72;
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":323
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":737
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
*/
- __pyx_t_5 = PyInt_FromLong(NPY_INT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyInt_FromLong(NPY_INT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 105;
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":324
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":738
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
*/
- __pyx_t_4 = PyInt_FromLong(NPY_UINT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromLong(NPY_UINT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 73;
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":325
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":739
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
*/
- __pyx_t_5 = PyInt_FromLong(NPY_LONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyInt_FromLong(NPY_LONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 108;
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":326
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":740
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
*/
- __pyx_t_4 = PyInt_FromLong(NPY_ULONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromLong(NPY_ULONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 76;
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":327
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":741
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
*/
- __pyx_t_5 = PyInt_FromLong(NPY_LONGLONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyInt_FromLong(NPY_LONGLONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 113;
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":328
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":742
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
*/
- __pyx_t_4 = PyInt_FromLong(NPY_ULONGLONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromLong(NPY_ULONGLONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 81;
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":329
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":743
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
*/
- __pyx_t_5 = PyInt_FromLong(NPY_FLOAT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyInt_FromLong(NPY_FLOAT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 102;
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":330
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":744
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
*/
- __pyx_t_4 = PyInt_FromLong(NPY_DOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromLong(NPY_DOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 100;
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":331
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":745
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
*/
- __pyx_t_5 = PyInt_FromLong(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyInt_FromLong(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 103;
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":332
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":746
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
*/
- __pyx_t_4 = PyInt_FromLong(NPY_CFLOAT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromLong(NPY_CFLOAT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 90;
@@ -5458,19 +6202,19 @@
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":333
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":747
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O"
*/
- __pyx_t_5 = PyInt_FromLong(NPY_CDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyInt_FromLong(NPY_CDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 90;
@@ -5479,19 +6223,19 @@
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":334
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":748
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
*/
- __pyx_t_4 = PyInt_FromLong(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromLong(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 90;
@@ -5500,19 +6244,19 @@
goto __pyx_L11;
}
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":335
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":749
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<<
* else:
* raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
*/
- __pyx_t_5 = PyInt_FromLong(NPY_OBJECT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyInt_FromLong(NPY_OBJECT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_8) {
(__pyx_v_f[0]) = 79;
@@ -5520,30 +6264,30 @@
}
/*else*/ {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":337
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":751
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
* raise ValueError("unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
* f += 1
* else:
*/
- __pyx_t_4 = PyNumber_Remainder(__pyx_kp_30, __pyx_v_t); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyNumber_Remainder(__pyx_kp_30, __pyx_v_t); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_5));
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
__pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- {__pyx_filename = __pyx_f[1]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[1]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_L11:;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":338
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":752
* else:
* raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
* f += 1 # <<<<<<<<<<<<<<
@@ -5555,21 +6299,21 @@
}
/*else*/ {
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":342
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":756
* # Cython ignores struct boundary information ("T{...}"),
* # so don't output it
* f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<<
* return f
*
*/
- __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_f = __pyx_t_9;
}
__pyx_L9:;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":343
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/numpy.pxd":757
* # so don't output it
* f = _util_dtypestring(child, f, end, offset)
* return f # <<<<<<<<<<<<<<
@@ -5582,6 +6326,8 @@
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_1);
+ __Pyx_XDECREF(__pyx_2);
+ __Pyx_XDECREF(__pyx_3);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
@@ -5590,7 +6336,8 @@
__pyx_r = NULL;
__pyx_L0:;
__Pyx_DECREF((PyObject *)__pyx_v_child);
- __Pyx_DECREF(__pyx_v_i);
+ __Pyx_DECREF(__pyx_v_fields);
+ __Pyx_DECREF(__pyx_v_childname);
__Pyx_DECREF(__pyx_v_new_offset);
__Pyx_DECREF(__pyx_v_t);
__Pyx_FinishRefcountContext();
@@ -5605,7 +6352,8 @@
p = ((struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *)o);
p->__pyx_vtab = __pyx_vtabptr_6svdlib_7_svdlib_CSCMatrix;
p->tensor = Py_None; Py_INCREF(Py_None);
- p->row_factors = Py_None; Py_INCREF(Py_None);
+ p->offset_for_row = Py_None; Py_INCREF(Py_None);
+ p->offset_for_col = Py_None; Py_INCREF(Py_None);
return o;
}
@@ -5621,7 +6369,8 @@
PyErr_Restore(etype, eval, etb);
}
Py_XDECREF(p->tensor);
- Py_XDECREF(p->row_factors);
+ Py_XDECREF(p->offset_for_row);
+ Py_XDECREF(p->offset_for_col);
(*Py_TYPE(o)->tp_free)(o);
}
@@ -5631,8 +6380,11 @@
if (p->tensor) {
e = (*v)(p->tensor, a); if (e) return e;
}
- if (p->row_factors) {
- e = (*v)(p->row_factors, a); if (e) return e;
+ if (p->offset_for_row) {
+ e = (*v)(p->offset_for_row, a); if (e) return e;
+ }
+ if (p->offset_for_col) {
+ e = (*v)(p->offset_for_col, a); if (e) return e;
}
return 0;
}
@@ -5643,15 +6395,18 @@
tmp = ((PyObject*)p->tensor);
p->tensor = Py_None; Py_INCREF(Py_None);
Py_XDECREF(tmp);
- tmp = ((PyObject*)p->row_factors);
- p->row_factors = Py_None; Py_INCREF(Py_None);
+ tmp = ((PyObject*)p->offset_for_row);
+ p->offset_for_row = Py_None; Py_INCREF(Py_None);
+ Py_XDECREF(tmp);
+ tmp = ((PyObject*)p->offset_for_col);
+ p->offset_for_col = Py_None; Py_INCREF(Py_None);
Py_XDECREF(tmp);
return 0;
}
static struct PyMethodDef __pyx_methods_6svdlib_7_svdlib_CSCMatrix[] = {
- {__Pyx_NAMESTR("pack"), (PyCFunction)__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_pack, METH_NOARGS, __Pyx_DOCSTR(0)},
- {__Pyx_NAMESTR("dictPack"), (PyCFunction)__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_dictPack, METH_NOARGS, __Pyx_DOCSTR(0)},
+ {__Pyx_NAMESTR("pack"), (PyCFunction)__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_pack, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
+ {__Pyx_NAMESTR("dictPack"), (PyCFunction)__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_dictPack, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
{__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_6svdlib_7_svdlib_9CSCMatrix___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
{__Pyx_NAMESTR("svdA"), (PyCFunction)__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_svdA, METH_O, __Pyx_DOCSTR(0)},
{__Pyx_NAMESTR("isvd"), (PyCFunction)__pyx_pf_6svdlib_7_svdlib_9CSCMatrix_isvd, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
@@ -5830,7 +6585,6 @@
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp___main__, __pyx_k___main__, sizeof(__pyx_k___main__), 1, 1, 1},
- {&__pyx_kp___slots__, __pyx_k___slots__, sizeof(__pyx_k___slots__), 1, 1, 1},
{&__pyx_kp___init__, __pyx_k___init__, sizeof(__pyx_k___init__), 1, 1, 1},
{&__pyx_kp_pack, __pyx_k_pack, sizeof(__pyx_k_pack), 1, 1, 1},
{&__pyx_kp_dictPack, __pyx_k_dictPack, sizeof(__pyx_k_dictPack), 1, 1, 1},
@@ -5839,50 +6593,54 @@
{&__pyx_kp_svdA, __pyx_k_svdA, sizeof(__pyx_k_svdA), 1, 1, 1},
{&__pyx_kp_isvd, __pyx_k_isvd, sizeof(__pyx_k_isvd), 1, 1, 1},
{&__pyx_kp_pyTensor, __pyx_k_pyTensor, sizeof(__pyx_k_pyTensor), 1, 1, 1},
- {&__pyx_kp_row_factors, __pyx_k_row_factors, sizeof(__pyx_k_row_factors), 1, 1, 1},
+ {&__pyx_kp_offset_for_row, __pyx_k_offset_for_row, sizeof(__pyx_k_offset_for_row), 1, 1, 1},
+ {&__pyx_kp_offset_for_col, __pyx_k_offset_for_col, sizeof(__pyx_k_offset_for_col), 1, 1, 1},
+ {&__pyx_kp_row_norms, __pyx_k_row_norms, sizeof(__pyx_k_row_norms), 0, 1, 1},
{&__pyx_kp_k, __pyx_k_k, sizeof(__pyx_k_k), 1, 1, 1},
{&__pyx_kp_niter, __pyx_k_niter, sizeof(__pyx_k_niter), 1, 1, 1},
{&__pyx_kp_lrate, __pyx_k_lrate, sizeof(__pyx_k_lrate), 1, 1, 1},
{&__pyx_kp_tensor, __pyx_k_tensor, sizeof(__pyx_k_tensor), 1, 1, 1},
+ {&__pyx_kp_row_factors, __pyx_k_row_factors, sizeof(__pyx_k_row_factors), 1, 1, 1},
{&__pyx_kp_warnings, __pyx_k_warnings, sizeof(__pyx_k_warnings), 1, 1, 1},
{&__pyx_kp_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 1, 1, 1},
{&__pyx_kp_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 1, 1},
- {&__pyx_kp_float, __pyx_k_float, sizeof(__pyx_k_float), 1, 1, 1},
+ {&__pyx_kp_31, __pyx_k_31, sizeof(__pyx_k_31), 1, 1, 1},
{&__pyx_kp_DTYPE, __pyx_k_DTYPE, sizeof(__pyx_k_DTYPE), 1, 1, 1},
- {&__pyx_kp_31, __pyx_k_31, sizeof(__pyx_k_31), 0, 1, 0},
{&__pyx_kp_ndim, __pyx_k_ndim, sizeof(__pyx_k_ndim), 1, 1, 1},
{&__pyx_kp_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 1, 1, 1},
{&__pyx_kp_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 1, 1, 1},
+ {&__pyx_kp_ones, __pyx_k_ones, sizeof(__pyx_k_ones), 1, 1, 1},
+ {&__pyx_kp_reciprocal, __pyx_k_reciprocal, sizeof(__pyx_k_reciprocal), 1, 1, 1},
+ {&__pyx_kp_sqrt, __pyx_k_sqrt, sizeof(__pyx_k_sqrt), 1, 1, 1},
+ {&__pyx_kp_array, __pyx_k_array, sizeof(__pyx_k_array), 1, 1, 1},
+ {&__pyx_kp_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 1, 1, 1},
{&__pyx_kp_iteritems, __pyx_k_iteritems, sizeof(__pyx_k_iteritems), 1, 1, 1},
{&__pyx_kp_setdefault, __pyx_k_setdefault, sizeof(__pyx_k_setdefault), 1, 1, 1},
{&__pyx_kp_xrange, __pyx_k_xrange, sizeof(__pyx_k_xrange), 1, 1, 1},
{&__pyx_kp_get, __pyx_k_get, sizeof(__pyx_k_get), 1, 1, 1},
{&__pyx_kp_sorted, __pyx_k_sorted, sizeof(__pyx_k_sorted), 1, 1, 1},
{&__pyx_kp_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 1, 1, 1},
+ {&__pyx_kp_range, __pyx_k_range, sizeof(__pyx_k_range), 1, 1, 1},
{&__pyx_kp__data, __pyx_k__data, sizeof(__pyx_k__data), 1, 1, 1},
{&__pyx_kp_warn, __pyx_k_warn, sizeof(__pyx_k_warn), 1, 1, 1},
- {&__pyx_kp_38, __pyx_k_38, sizeof(__pyx_k_38), 1, 1, 1},
+ {&__pyx_kp_39, __pyx_k_39, sizeof(__pyx_k_39), 1, 1, 1},
{&__pyx_kp_DenseTensor, __pyx_k_DenseTensor, sizeof(__pyx_k_DenseTensor), 1, 1, 1},
{&__pyx_kp_add, __pyx_k_add, sizeof(__pyx_k_add), 1, 1, 1},
{&__pyx_kp_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 1, 1, 1},
- {&__pyx_kp_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 1, 1, 1},
- {&__pyx_kp_range, __pyx_k_range, sizeof(__pyx_k_range), 1, 1, 1},
- {&__pyx_kp_sqrt, __pyx_k_sqrt, sizeof(__pyx_k_sqrt), 1, 1, 1},
{&__pyx_kp_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 1, 1, 1},
{&__pyx_kp_multiply, __pyx_k_multiply, sizeof(__pyx_k_multiply), 1, 1, 1},
{&__pyx_kp_divide, __pyx_k_divide, sizeof(__pyx_k_divide), 1, 1, 1},
{&__pyx_kp_34, __pyx_k_34, sizeof(__pyx_k_34), 0, 0, 0},
- {&__pyx_kp_35, __pyx_k_35, sizeof(__pyx_k_35), 1, 0, 0},
- {&__pyx_kp_36, __pyx_k_36, sizeof(__pyx_k_36), 0, 0, 0},
+ {&__pyx_kp_36, __pyx_k_36, sizeof(__pyx_k_36), 1, 0, 0},
{&__pyx_kp_37, __pyx_k_37, sizeof(__pyx_k_37), 0, 0, 0},
- {&__pyx_kp_39, __pyx_k_39, sizeof(__pyx_k_39), 0, 0, 0},
+ {&__pyx_kp_38, __pyx_k_38, sizeof(__pyx_k_38), 0, 0, 0},
{&__pyx_kp_40, __pyx_k_40, sizeof(__pyx_k_40), 0, 0, 0},
{&__pyx_kp_41, __pyx_k_41, sizeof(__pyx_k_41), 0, 0, 0},
+ {&__pyx_kp_42, __pyx_k_42, sizeof(__pyx_k_42), 0, 0, 0},
{&__pyx_kp___getbuffer__, __pyx_k___getbuffer__, sizeof(__pyx_k___getbuffer__), 1, 1, 1},
{&__pyx_kp___releasebuffer__, __pyx_k___releasebuffer__, sizeof(__pyx_k___releasebuffer__), 1, 1, 1},
{&__pyx_kp_info, __pyx_k_info, sizeof(__pyx_k_info), 1, 1, 1},
{&__pyx_kp_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 1, 1, 1},
- {&__pyx_kp_itervalues, __pyx_k_itervalues, sizeof(__pyx_k_itervalues), 1, 1, 1},
{&__pyx_kp_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 1, 1, 1},
{&__pyx_kp_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 0},
{&__pyx_kp_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 0},
@@ -5895,11 +6653,11 @@
{0, 0, 0, 0, 0, 0}
};
static int __Pyx_InitCachedBuiltins(void) {
- __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_kp_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_kp_xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_sorted = __Pyx_GetName(__pyx_b, __pyx_kp_sorted); if (!__pyx_builtin_sorted) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_kp_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_kp_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_kp_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_kp_xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_sorted = __Pyx_GetName(__pyx_b, __pyx_kp_sorted); if (!__pyx_builtin_sorted) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_kp_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_kp_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
return 0;
__pyx_L1_error:;
return -1;
@@ -5909,8 +6667,6 @@
__pyx_int_50 = PyInt_FromLong(50); if (unlikely(!__pyx_int_50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
__pyx_int_100 = PyInt_FromLong(100); if (unlikely(!__pyx_int_100)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
__pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
- __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
__pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
return 0;
@@ -5928,6 +6684,7 @@
{
PyObject *__pyx_1 = 0;
PyObject *__pyx_t_1 = NULL;
+ __pyx_init_filenames();
#ifdef CYTHON_REFNANNY
void* __pyx_refchk = NULL;
__Pyx_Refnanny = __Pyx_ImportRefcountAPI("refnanny");
@@ -5940,16 +6697,18 @@
__pyx_refchk = __Pyx_Refnanny->NewContext("PyMODINIT_FUNC PyInit__svdlib(void)", __LINE__, __FILE__);
#endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ #if PY_MAJOR_VERSION < 3
+ __pyx_empty_bytes = PyString_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ #else
+ __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ #endif
/*--- Library function declarations ---*/
- __pyx_init_filenames();
/*--- Threads initialization code ---*/
#if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
#ifdef WITH_THREAD /* Python build with threading support? */
PyEval_InitThreads();
#endif
#endif
- /*--- Initialize various global constants etc. ---*/
- if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
/*--- Module creation code ---*/
#if PY_MAJOR_VERSION < 3
__pyx_m = Py_InitModule4(__Pyx_NAMESTR("_svdlib"), __pyx_methods, 0, 0, PYTHON_API_VERSION);
@@ -5966,6 +6725,8 @@
if (__pyx_module_is_main_svdlib___svdlib) {
if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_kp___main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
}
+ /*--- Initialize various global constants etc. ---*/
+ if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
/*--- Builtin init code ---*/
if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_skip_dispatch = 0;
@@ -5974,29 +6735,33 @@
/*--- Type init code ---*/
__pyx_vtabptr_6svdlib_7_svdlib_CSCMatrix = &__pyx_vtable_6svdlib_7_svdlib_CSCMatrix;
#if PY_MAJOR_VERSION >= 3
- __pyx_vtable_6svdlib_7_svdlib_CSCMatrix.pack = (PyObject *(*)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int __pyx_skip_dispatch))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_pack;
- __pyx_vtable_6svdlib_7_svdlib_CSCMatrix.dictPack = (PyObject *(*)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int __pyx_skip_dispatch))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_dictPack;
+ __pyx_vtable_6svdlib_7_svdlib_CSCMatrix.pack = (PyObject *(*)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int __pyx_skip_dispatch, struct __pyx_opt_args_6svdlib_7_svdlib_9CSCMatrix_pack *__pyx_optional_args))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_pack;
+ __pyx_vtable_6svdlib_7_svdlib_CSCMatrix.toVector = (double *(*)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, PyObject *))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_toVector;
+ __pyx_vtable_6svdlib_7_svdlib_CSCMatrix.dictPack = (PyObject *(*)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int __pyx_skip_dispatch, struct __pyx_opt_args_6svdlib_7_svdlib_9CSCMatrix_dictPack *__pyx_optional_args))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_dictPack;
__pyx_vtable_6svdlib_7_svdlib_CSCMatrix.setColumnSize = (void (*)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int, int))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_setColumnSize;
- __pyx_vtable_6svdlib_7_svdlib_CSCMatrix.setValue = (void (*)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int, int, float))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_setValue;
+ __pyx_vtable_6svdlib_7_svdlib_CSCMatrix.setValue = (void (*)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int, int, double))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_setValue;
__pyx_vtable_6svdlib_7_svdlib_CSCMatrix.svdA = (PyObject *(*)(struct __pyx_obj_6svdlib_7_svdlib_CSCMatrix *, int, int __pyx_skip_dispatch))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_svdA;
#else
*(void(**)(void))&__pyx_vtable_6svdlib_7_svdlib_CSCMatrix.pack = (void(*)(void))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_pack;
+ *(void(**)(void))&__pyx_vtable_6svdlib_7_svdlib_CSCMatrix.toVector = (void(*)(void))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_toVector;
*(void(**)(void))&__pyx_vtable_6svdlib_7_svdlib_CSCMatrix.dictPack = (void(*)(void))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_dictPack;
*(void(**)(void))&__pyx_vtable_6svdlib_7_svdlib_CSCMatrix.setColumnSize = (void(*)(void))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_setColumnSize;
*(void(**)(void))&__pyx_vtable_6svdlib_7_svdlib_CSCMatrix.setValue = (void(*)(void))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_setValue;
*(void(**)(void))&__pyx_vtable_6svdlib_7_svdlib_CSCMatrix.svdA = (void(*)(void))__pyx_f_6svdlib_7_svdlib_9CSCMatrix_svdA;
#endif
- if (PyType_Ready(&__pyx_type_6svdlib_7_svdlib_CSCMatrix) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_6svdlib_7_svdlib_CSCMatrix.tp_dict, __pyx_vtabptr_6svdlib_7_svdlib_CSCMatrix) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "CSCMatrix", (PyObject *)&__pyx_type_6svdlib_7_svdlib_CSCMatrix) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyType_Ready(&__pyx_type_6svdlib_7_svdlib_CSCMatrix) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetVtable(__pyx_type_6svdlib_7_svdlib_CSCMatrix.tp_dict, __pyx_vtabptr_6svdlib_7_svdlib_CSCMatrix) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetAttrString(__pyx_m, "CSCMatrix", (PyObject *)&__pyx_type_6svdlib_7_svdlib_CSCMatrix) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_ptype_6svdlib_7_svdlib_CSCMatrix = &__pyx_type_6svdlib_7_svdlib_CSCMatrix;
/*--- Type import code ---*/
- __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr)); if (unlikely(!__pyx_ptype_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject)); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr)); if (unlikely(!__pyx_ptype_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject)); if (unlikely(!__pyx_ptype_5numpy_flatiter)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject)); if (unlikely(!__pyx_ptype_5numpy_broadcast)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject)); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
/*--- Function import code ---*/
/*--- Execution code ---*/
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":1
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":1
* import warnings # <<<<<<<<<<<<<<
* import numpy as np
* cimport cython
@@ -6006,7 +6771,7 @@
if (PyObject_SetAttr(__pyx_m, __pyx_kp_warnings, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":2
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":2
* import warnings
* import numpy as np # <<<<<<<<<<<<<<
* cimport cython
@@ -6017,64 +6782,48 @@
if (PyObject_SetAttr(__pyx_m, __pyx_kp_np, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":7
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":7
*
* # The type of doubles in numpy
- * DTYPE=np.float # <<<<<<<<<<<<<<
- * ctypedef np.float_t DTYPE_t
+ * DTYPE=np.float64 # <<<<<<<<<<<<<<
+ * ctypedef np.float64_t DTYPE_t
*
*/
__pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_1);
- __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_float); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_31); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_1); __pyx_1 = 0;
if (PyObject_SetAttr(__pyx_m, __pyx_kp_DTYPE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":131
- *
- * cdef class CSCMatrix:
- * __slots__ = ['cmatrix'] # <<<<<<<<<<<<<<
- * cdef object tensor #holds our Python tensor
- * cdef object row_factors #holds row division factors, if applicable
- */
- __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __Pyx_INCREF(__pyx_kp_31);
- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_kp_31);
- __Pyx_GIVEREF(__pyx_kp_31);
- if (PyDict_SetItem((PyObject *)__pyx_ptype_6svdlib_7_svdlib_CSCMatrix->tp_dict, __pyx_kp___slots__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- PyType_Modified(__pyx_ptype_6svdlib_7_svdlib_CSCMatrix);
-
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":301
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":269
* return CSC.svdA(k)
*
* def isvd(tensor, k=50, niter=100, lrate=.001, row_factors=None): # <<<<<<<<<<<<<<
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.pack()
+ * CSC = CSCMatrix(tensor)
+ * CSC.pack(row_factors)
*/
- __pyx_t_1 = PyFloat_FromDouble(0.001); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyFloat_FromDouble(0.001); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_k_32 = __pyx_t_1;
__pyx_t_1 = 0;
__Pyx_GIVEREF(__pyx_k_32);
- /* "/home/kcarnold/csc/divisi/svdlib/_svdlib.pyx":306
+ /* "/home/kcarnold/code/divisi/svdlib/_svdlib.pyx":274
* return CSC.isvd(k, niter, lrate)
*
* def dictIsvd(tensor, k=50, niter=100, lrate=.001, row_factors=None): # <<<<<<<<<<<<<<
- * CSC = CSCMatrix(tensor, row_factors)
- * CSC.dictPack()
+ * CSC = CSCMatrix(tensor)
+ * CSC.dictPack(row_factors)
*/
- __pyx_t_1 = PyFloat_FromDouble(0.001); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyFloat_FromDouble(0.001); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_k_33 = __pyx_t_1;
__pyx_t_1 = 0;
__Pyx_GIVEREF(__pyx_k_33);
- /* "/home/kcarnold/.virtualenvs/py/lib/python2.6/site-packages/Cython-0.11.2-py2.6-linux-i686.egg/Cython/Includes/stdlib.pxd":2
+ /* "/home/kcarnold/csc/lib/python2.6/site-packages/Cython-0.11.3-py2.6-linux-x86_64.egg/Cython/Includes/stdlib.pxd":2
*
* cdef extern from "stdlib.h" nogil: # <<<<<<<<<<<<<<
* void free(void *ptr)
@@ -6084,8 +6833,12 @@
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_1);
__Pyx_XDECREF(__pyx_t_1);
- __Pyx_AddTraceback("svdlib._svdlib");
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ if (__pyx_m) {
+ __Pyx_AddTraceback("init svdlib._svdlib");
+ Py_DECREF(__pyx_m); __pyx_m = 0;
+ } else if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_ImportError, "init svdlib._svdlib");
+ }
__pyx_L0:;
__Pyx_FinishRefcountContext();
#if PY_MAJOR_VERSION < 3
@@ -6228,7 +6981,6 @@
return -1;
}
-
static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (!type) {
PyErr_Format(PyExc_SystemError, "Missing type object");
@@ -6685,6 +7437,19 @@
__Pyx_ReleaseBuffer(info);
}
+static void __Pyx_RaiseBufferFallbackError(void) {
+ PyErr_Format(PyExc_ValueError,
+ "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!");
+}
+
+static void __Pyx_RaiseBufferIndexError(int axis) {
+ PyErr_Format(PyExc_IndexError,
+ "Out of bounds on buffer access (axis %d)", axis);
+}
+
+
+
+
static INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
PyThreadState *tstate = PyThreadState_GET();
@@ -6729,6 +7494,34 @@
}
+static INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+}
+
+static INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+ PyErr_Format(PyExc_ValueError,
+ #if PY_VERSION_HEX < 0x02050000
+ "need more than %d value%s to unpack", (int)index,
+ #else
+ "need more than %zd value%s to unpack", index,
+ #endif
+ (index == 1) ? "" : "s");
+}
+
+static INLINE void __Pyx_RaiseTooManyValuesError(void) {
+ PyErr_SetString(PyExc_ValueError, "too many values to unpack");
+}
+
+static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
+ if (t == Py_None) {
+ __Pyx_RaiseNoneNotIterableError();
+ } else if (PyTuple_GET_SIZE(t) < index) {
+ __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
+ } else {
+ __Pyx_RaiseTooManyValuesError();
+ }
+}
+
#if PY_MAJOR_VERSION < 3
static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) {
#if PY_VERSION_HEX >= 0x02060000
@@ -6858,20 +7651,6 @@
return;
}
-static INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
- PyErr_Format(PyExc_ValueError,
- #if PY_VERSION_HEX < 0x02050000
- "need more than %d value%s to unpack", (int)index,
- #else
- "need more than %zd value%s to unpack", index,
- #endif
- (index == 1) ? "" : "s");
-}
-
-static INLINE void __Pyx_RaiseTooManyValuesError(void) {
- PyErr_SetString(PyExc_ValueError, "too many values to unpack");
-}
-
static PyObject *__Pyx_UnpackItem(PyObject *iter, Py_ssize_t index) {
PyObject *item;
if (!(item = PyIter_Next(iter))) {
@@ -7008,24 +7787,16 @@
#endif
-static INLINE int __Pyx_StrEq(const char *s1, const char *s2) {
- while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
- return *s1 == *s2;
-}
-
static INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
if (sizeof(unsigned char) < sizeof(long)) {
long val = __Pyx_PyInt_AsLong(x);
if (unlikely(val != (long)(unsigned char)val)) {
- if (unlikely(val == -1 && PyErr_Occurred()))
- return (unsigned char)-1;
- if (unlikely(val < 0)) {
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to unsigned char");
- return (unsigned char)-1;
+ (((unsigned char)-1) > ((unsigned char)0) && unlikely(val < 0)) ?
+ "can't convert negative value to unsigned char" :
+ "value too large to convert to unsigned char");
}
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to unsigned char");
return (unsigned char)-1;
}
return (unsigned char)val;
@@ -7037,15 +7808,12 @@
if (sizeof(unsigned short) < sizeof(long)) {
long val = __Pyx_PyInt_AsLong(x);
if (unlikely(val != (long)(unsigned short)val)) {
- if (unlikely(val == -1 && PyErr_Occurred()))
- return (unsigned short)-1;
- if (unlikely(val < 0)) {
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to unsigned short");
- return (unsigned short)-1;
+ (((unsigned short)-1) > ((unsigned short)0) && unlikely(val < 0)) ?
+ "can't convert negative value to unsigned short" :
+ "value too large to convert to unsigned short");
}
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to unsigned short");
return (unsigned short)-1;
}
return (unsigned short)val;
@@ -7057,15 +7825,12 @@
if (sizeof(unsigned int) < sizeof(long)) {
long val = __Pyx_PyInt_AsLong(x);
if (unlikely(val != (long)(unsigned int)val)) {
- if (unlikely(val == -1 && PyErr_Occurred()))
- return (unsigned int)-1;
- if (unlikely(val < 0)) {
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
PyErr_SetString(PyExc_OverflowError,
- "can't convert negative value to unsigned int");
- return (unsigned int)-1;
+ (((unsigned int)-1) > ((unsigned int)0) && unlikely(val < 0)) ?
+ "can't convert negative value to unsigned int" :
+ "value too large to convert to unsigned int");
}
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to unsigned int");
return (unsigned int)-1;
}
return (unsigned int)val;
@@ -7077,10 +7842,12 @@
if (sizeof(char) < sizeof(long)) {
long val = __Pyx_PyInt_AsLong(x);
if (unlikely(val != (long)(char)val)) {
- if (unlikely(val == -1 && PyErr_Occurred()))
- return (char)-1;
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to char");
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (((char)-1) > ((char)0) && unlikely(val < 0)) ?
+ "can't convert negative value to char" :
+ "value too large to convert to char");
+ }
return (char)-1;
}
return (char)val;
@@ -7092,10 +7859,12 @@
if (sizeof(short) < sizeof(long)) {
long val = __Pyx_PyInt_AsLong(x);
if (unlikely(val != (long)(short)val)) {
- if (unlikely(val == -1 && PyErr_Occurred()))
- return (short)-1;
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to short");
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (((short)-1) > ((short)0) && unlikely(val < 0)) ?
+ "can't convert negative value to short" :
+ "value too large to convert to short");
+ }
return (short)-1;
}
return (short)val;
@@ -7107,10 +7876,12 @@
if (sizeof(int) < sizeof(long)) {
long val = __Pyx_PyInt_AsLong(x);
if (unlikely(val != (long)(int)val)) {
- if (unlikely(val == -1 && PyErr_Occurred()))
- return (int)-1;
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to int");
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (((int)-1) > ((int)0) && unlikely(val < 0)) ?
+ "can't convert negative value to int" :
+ "value too large to convert to int");
+ }
return (int)-1;
}
return (int)val;
@@ -7122,10 +7893,12 @@
if (sizeof(signed char) < sizeof(long)) {
long val = __Pyx_PyInt_AsLong(x);
if (unlikely(val != (long)(signed char)val)) {
- if (unlikely(val == -1 && PyErr_Occurred()))
- return (signed char)-1;
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to signed char");
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (((signed char)-1) > ((signed char)0) && unlikely(val < 0)) ?
+ "can't convert negative value to signed char" :
+ "value too large to convert to signed char");
+ }
return (signed char)-1;
}
return (signed char)val;
@@ -7137,10 +7910,12 @@
if (sizeof(signed short) < sizeof(long)) {
long val = __Pyx_PyInt_AsLong(x);
if (unlikely(val != (long)(signed short)val)) {
- if (unlikely(val == -1 && PyErr_Occurred()))
- return (signed short)-1;
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to signed short");
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (((signed short)-1) > ((signed short)0) && unlikely(val < 0)) ?
+ "can't convert negative value to signed short" :
+ "value too large to convert to signed short");
+ }
return (signed short)-1;
}
return (signed short)val;
@@ -7152,10 +7927,12 @@
if (sizeof(signed int) < sizeof(long)) {
long val = __Pyx_PyInt_AsLong(x);
if (unlikely(val != (long)(signed int)val)) {
- if (unlikely(val == -1 && PyErr_Occurred()))
- return (signed int)-1;
- PyErr_SetString(PyExc_OverflowError,
- "value too large to convert to signed int");
+ if (!unlikely(val == -1 && PyErr_Occurred())) {
+ PyErr_SetString(PyExc_OverflowError,
+ (((signed int)-1) > ((signed int)0) && unlikely(val < 0)) ?
+ "can't convert negative value to signed int" :
+ "value too large to convert to signed int");
+ }
return (signed int)-1;
}
return (signed int)val;
@@ -7165,9 +7942,9 @@
static INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
#if PY_VERSION_HEX < 0x03000000
- if (likely(PyInt_CheckExact(x) || PyInt_Check(x))) {
+ if (likely(PyInt_Check(x))) {
long val = PyInt_AS_LONG(x);
- if (unlikely(val < 0)) {
+ if (((unsigned long)-1) > ((unsigned long)0) && unlikely(val < 0)) {
PyErr_SetString(PyExc_OverflowError,
"can't convert negative value to unsigned long");
return (unsigned long)-1;
@@ -7175,13 +7952,15 @@
return (unsigned long)val;
} else
#endif
- if (likely(PyLong_CheckExact(x) || PyLong_Check(x))) {
- if (unlikely(Py_SIZE(x) < 0)) {
+ if (likely(PyLong_Check(x))) {
+ if (((unsigned long)-1) > ((unsigned long)0) && unlikely(Py_SIZE(x) < 0)) {
PyErr_SetString(PyExc_OverflowError,
"can't convert negative value to unsigned long");
return (unsigned long)-1;
}
- return PyLong_AsUnsignedLong(x);
+ return (((unsigned long)-1) < ((unsigned long)0)) ?
+ PyLong_AsLong(x) :
+ PyLong_AsUnsignedLong(x);
} else {
unsigned long val;
PyObject *tmp = __Pyx_PyNumber_Int(x);
@@ -7194,9 +7973,9 @@
static INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
#if PY_VERSION_HEX < 0x03000000
- if (likely(PyInt_CheckExact(x) || PyInt_Check(x))) {
+ if (likely(PyInt_Check(x))) {
long val = PyInt_AS_LONG(x);
- if (unlikely(val < 0)) {
+ if (((unsigned PY_LONG_LONG)-1) > ((unsigned PY_LONG_LONG)0) && unlikely(val < 0)) {
PyErr_SetString(PyExc_OverflowError,
"can't convert negative value to unsigned PY_LONG_LONG");
return (unsigned PY_LONG_LONG)-1;
@@ -7204,13 +7983,15 @@
return (unsigned PY_LONG_LONG)val;
} else
#endif
- if (likely(PyLong_CheckExact(x) || PyLong_Check(x))) {
- if (unlikely(Py_SIZE(x) < 0)) {
+ if (likely(PyLong_Check(x))) {
+ if (((unsigned PY_LONG_LONG)-1) > ((unsigned PY_LONG_LONG)0) && unlikely(Py_SIZE(x) < 0)) {
PyErr_SetString(PyExc_OverflowError,
"can't convert negative value to unsigned PY_LONG_LONG");
return (unsigned PY_LONG_LONG)-1;
}
- return PyLong_AsUnsignedLongLong(x);
+ return (((unsigned PY_LONG_LONG)-1) < ((unsigned PY_LONG_LONG)0)) ?
+ PyLong_AsLongLong(x) :
+ PyLong_AsUnsignedLongLong(x);
} else {
unsigned PY_LONG_LONG val;
PyObject *tmp = __Pyx_PyNumber_Int(x);
@@ -7223,13 +8004,25 @@
static INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
#if PY_VERSION_HEX < 0x03000000
- if (likely(PyInt_CheckExact(x) || PyInt_Check(x))) {
+ if (likely(PyInt_Check(x))) {
long val = PyInt_AS_LONG(x);
+ if (((long)-1) > ((long)0) && unlikely(val < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to long");
+ return (long)-1;
+ }
return (long)val;
} else
#endif
- if (likely(PyLong_CheckExact(x) || PyLong_Check(x))) {
- return PyLong_AsLong(x);
+ if (likely(PyLong_Check(x))) {
+ if (((long)-1) > ((long)0) && unlikely(Py_SIZE(x) < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to long");
+ return (long)-1;
+ }
+ return (((long)-1) < ((long)0)) ?
+ PyLong_AsLong(x) :
+ PyLong_AsUnsignedLong(x);
} else {
long val;
PyObject *tmp = __Pyx_PyNumber_Int(x);
@@ -7242,13 +8035,25 @@
static INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
#if PY_VERSION_HEX < 0x03000000
- if (likely(PyInt_CheckExact(x) || PyInt_Check(x))) {
+ if (likely(PyInt_Check(x))) {
long val = PyInt_AS_LONG(x);
+ if (((PY_LONG_LONG)-1) > ((PY_LONG_LONG)0) && unlikely(val < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to PY_LONG_LONG");
+ return (PY_LONG_LONG)-1;
+ }
return (PY_LONG_LONG)val;
} else
#endif
- if (likely(PyLong_CheckExact(x) || PyLong_Check(x))) {
- return PyLong_AsLongLong(x);
+ if (likely(PyLong_Check(x))) {
+ if (((PY_LONG_LONG)-1) > ((PY_LONG_LONG)0) && unlikely(Py_SIZE(x) < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to PY_LONG_LONG");
+ return (PY_LONG_LONG)-1;
+ }
+ return (((PY_LONG_LONG)-1) < ((PY_LONG_LONG)0)) ?
+ PyLong_AsLongLong(x) :
+ PyLong_AsUnsignedLongLong(x);
} else {
PY_LONG_LONG val;
PyObject *tmp = __Pyx_PyNumber_Int(x);
@@ -7261,13 +8066,25 @@
static INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
#if PY_VERSION_HEX < 0x03000000
- if (likely(PyInt_CheckExact(x) || PyInt_Check(x))) {
+ if (likely(PyInt_Check(x))) {
long val = PyInt_AS_LONG(x);
+ if (((signed long)-1) > ((signed long)0) && unlikely(val < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to signed long");
+ return (signed long)-1;
+ }
return (signed long)val;
} else
#endif
- if (likely(PyLong_CheckExact(x) || PyLong_Check(x))) {
- return PyLong_AsLong(x);
+ if (likely(PyLong_Check(x))) {
+ if (((signed long)-1) > ((signed long)0) && unlikely(Py_SIZE(x) < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to signed long");
+ return (signed long)-1;
+ }
+ return (((signed long)-1) < ((signed long)0)) ?
+ PyLong_AsLong(x) :
+ PyLong_AsUnsignedLong(x);
} else {
signed long val;
PyObject *tmp = __Pyx_PyNumber_Int(x);
@@ -7280,13 +8097,25 @@
static INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
#if PY_VERSION_HEX < 0x03000000
- if (likely(PyInt_CheckExact(x) || PyInt_Check(x))) {
+ if (likely(PyInt_Check(x))) {
long val = PyInt_AS_LONG(x);
+ if (((signed PY_LONG_LONG)-1) > ((signed PY_LONG_LONG)0) && unlikely(val < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to signed PY_LONG_LONG");
+ return (signed PY_LONG_LONG)-1;
+ }
return (signed PY_LONG_LONG)val;
} else
#endif
- if (likely(PyLong_CheckExact(x) || PyLong_Check(x))) {
- return PyLong_AsLongLong(x);
+ if (likely(PyLong_Check(x))) {
+ if (((signed PY_LONG_LONG)-1) > ((signed PY_LONG_LONG)0) && unlikely(Py_SIZE(x) < 0)) {
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to signed PY_LONG_LONG");
+ return (signed PY_LONG_LONG)-1;
+ }
+ return (((signed PY_LONG_LONG)-1) < ((signed PY_LONG_LONG)0)) ?
+ PyLong_AsLongLong(x) :
+ PyLong_AsUnsignedLongLong(x);
} else {
signed PY_LONG_LONG val;
PyObject *tmp = __Pyx_PyNumber_Int(x);
@@ -7410,7 +8239,6 @@
PyObject *py_srcfile = 0;
PyObject *py_funcname = 0;
PyObject *py_globals = 0;
- PyObject *empty_string = 0;
PyCodeObject *py_code = 0;
PyFrameObject *py_frame = 0;
@@ -7437,12 +8265,6 @@
if (!py_funcname) goto bad;
py_globals = PyModule_GetDict(__pyx_m);
if (!py_globals) goto bad;
- #if PY_MAJOR_VERSION < 3
- empty_string = PyString_FromStringAndSize("", 0);
- #else
- empty_string = PyBytes_FromStringAndSize("", 0);
- #endif
- if (!empty_string) goto bad;
py_code = PyCode_New(
0, /*int argcount,*/
#if PY_MAJOR_VERSION >= 3
@@ -7451,7 +8273,7 @@
0, /*int nlocals,*/
0, /*int stacksize,*/
0, /*int flags,*/
- empty_string, /*PyObject *code,*/
+ __pyx_empty_bytes, /*PyObject *code,*/
__pyx_empty_tuple, /*PyObject *consts,*/
__pyx_empty_tuple, /*PyObject *names,*/
__pyx_empty_tuple, /*PyObject *varnames,*/
@@ -7460,7 +8282,7 @@
py_srcfile, /*PyObject *filename,*/
py_funcname, /*PyObject *name,*/
__pyx_lineno, /*int firstlineno,*/
- empty_string /*PyObject *lnotab*/
+ __pyx_empty_bytes /*PyObject *lnotab*/
);
if (!py_code) goto bad;
py_frame = PyFrame_New(
@@ -7475,7 +8297,6 @@
bad:
Py_XDECREF(py_srcfile);
Py_XDECREF(py_funcname);
- Py_XDECREF(empty_string);
Py_XDECREF(py_code);
Py_XDECREF(py_frame);
}
@@ -7596,3 +8417,4 @@
}
+#endif /* Py_PYTHON_H */
=== modified file 'svdlib/_svdlib.pyx'
--- svdlib/_svdlib.pyx 2009-08-05 22:25:54 +0000
+++ svdlib/_svdlib.pyx 2009-11-02 19:20:26 +0000
@@ -4,14 +4,15 @@
cimport numpy as np
# The type of doubles in numpy
-DTYPE=np.float
-ctypedef np.float_t DTYPE_t
+DTYPE=np.float64
+ctypedef np.float64_t DTYPE_t
cdef extern from "svdlib.h":
-
- # /******************************** Structures *********************************/
+ ###
+ ### Structures
+ ###
- #/* Harwell-Boeing sparse matrix. */
+ # Harwell-Boeing sparse matrix.
cdef struct smat:
long rows
long cols
@@ -19,12 +20,15 @@
long *pointr # /* For each col (plus 1), index of first non-zero entry. */
long *rowind # /* For each nz entry, the row index. */
double *value # /* For each nz entry, the value. */
+ double *offset_for_row
+ double *offset_for_col
- #/* Row-major dense matrix. Rows are consecutive vectors. */
+ # Row-major dense matrix. Rows are consecutive vectors.
cdef struct dmat:
long rows
long cols
double **value # /* Accessed by [row][col]. Free value[0] and value to free.*/
+
cdef struct svdrec:
int d # /* Dimensionality (rank) */
dmat *Ut # /* Transpose of left singular vectors. (d by m)
@@ -32,26 +36,6 @@
double *S # /* Array of singular values. (length d) */
dmat *Vt # /* Transpose of right singular vectors. (d by n)
# The vectors are the rows of Vt. */
- #/******************************** Variables **********************************/
-
- #File formats:
- #SVD_F_STH: sparse text, SVDPACK-style
- #SVD_F_ST: sparse text, SVDLIB-style
- #SVD_F_DT: dense text
- #SVD_F_SB: sparse binary
- #SVD_F_DB: dense binary
-
- #/* True if a file format is sparse: */
- #int SVD_IS_SPARSE(format):
- # ((format >= SVD_F_STH) && (format <= SVD_F_SB))
-
- #/******************************** Functions **********************************/
-
- #/* Creates an empty dense matrix. */
- #DMat svdNewDMat(int rows, int cols)
-
- #/* Frees a dense matrix. */
- #void svdFreeDMat(DMat D)
#/* Creates an empty sparse matrix. */
cdef extern smat *svdNewSMat(int rows, int cols, int vals)
@@ -65,38 +49,8 @@
#/* Frees an svd rec and all its contents. */
cdef extern void svdFreeSVDRec(svdrec *R)
- #/* Converts a sparse matrix to a dense one (without affecting former) */
- #DMat svdConvertStoD(SMat S)
-
- #/* Converts a dense matrix to a sparse one (without affecting former) */
- #SMat svdConvertDtoS(DMat D)
-
- #/* Transposes a dense matrix (returning a new one) */
- #DMat svdTransposeD(DMat D)
-
- #/* Transposes a sparse matrix (returning a new one) */
- #SMat svdTransposeS(SMat S)
-
- #/* Writes an array to a file. */
- #void svdWriteDenseArray(double *a, int n, char *filename, char binary)
-
- #/* Reads an array from a file, storing its size in *np. */
- #double *svdLoadDenseArray(char *filename, int *np, char binary)
-
- #/* Loads a matrix file (in various formats) into a sparse matrix. */
- #SMat svdLoadSparseMatrix(char *filename, int format)
-
- #/* Loads a matrix file (in various formats) into a dense matrix. */
- #DMat svdLoadDenseMatrix(char *filename, int format)
-
- #/* Writes a dense matrix to a file in a given format. */
- #void svdWriteDenseMatrix(DMat A, char *filename, int format)
-
- #/* Writes a sparse matrix to a file in a given format. */
- #void svdWriteSparseMatrix(SMat A, char *filename, int format)
-
#/* Performs the las2 SVD algorithm and returns the resulting Ut, S, and Vt. */
- cdef extern svdrec *svdLAS2(smat *A, long dimensions, long iterations, double end[2], double kappa)
+ #cdef extern svdrec *svdLAS2(smat *A, long dimensions, long iterations, double end[2], double kappa)
#/* Chooses default parameter values. Set dimensions to 0 for all dimensions: */
cdef extern svdrec *svdLAS2A(smat *A, long dimensions)
@@ -105,40 +59,28 @@
#cdef extern double *mulDMatSlice(DMat *D1, DMat *D2, int index, double *weight)
#cdef extern double *dMatNorms(DMat *D)
-cdef extern from "Python.h":
-
- ctypedef struct PyObject:
- pass
-
-
cdef extern from "svdwrapper.h":
-
- cdef extern void init_numpy()
-
cdef extern object wrapDMat(dmat *d)
-
cdef extern object wrap_double_array(double* d, int len)
-
cdef extern object wrapSVDrec(svdrec *rec, int transposed)
cdef extern from "math.h":
-
cdef extern double sqrt(double n)
-###### Python functions ######
+cdef extern from "svdutil.h":
+ cdef extern double *svd_doubleArray(long size, char empty, char *name)
+
cdef class CSCMatrix:
- __slots__ = ['cmatrix']
cdef object tensor #holds our Python tensor
- cdef object row_factors #holds row division factors, if applicable
+ cdef object offset_for_row, offset_for_col
cdef smat *cmatrix #our C matrix to send to svdlib
- cdef svdrec *svdrec #the wrapper for the SVD results to return
cdef int transposed #variable to pass to wrapper letting it know if we transposed for speed
- cdef int rows, cols
- cdef int nonZero #number of non zero entries in matrix
- def __init__(self, pyTensor, row_factors=None):
+ cdef long rows, cols
+ cdef long nonZero #number of non zero entries in matrix
+ def __init__(self, pyTensor, offset_for_row=None, offset_for_col=None):
#init function takes 1 or 2 arguments, the Python tensor, and an array representing
- #the row _factors to divide by
+ #the row_factors to divide by
self.tensor = pyTensor
self.transposed = 0
@@ -148,29 +90,52 @@
self.nonZero = len(self.tensor)
assert self.nonZero != 0
- self.row_factors = row_factors
-
- cpdef pack(self):
+ self.offset_for_row = offset_for_row
+ self.offset_for_col = offset_for_col
+
+ cpdef pack(self, row_norms=None):
+ cdef np.ndarray[DTYPE_t, ndim=1] row_factors # holds row _multiplication_ factors, possibly just 1.
+ cdef long row, col, index, cols, col_len, rowk
+ cdef double value
+ if row_norms is None:
+ row_factors = np.ones(self.rows)
+ else:
+ row_factors = np.reciprocal(np.sqrt(np.array(row_norms, dtype=DTYPE)))
+
self.cmatrix = svdNewSMat(self.rows, self.cols, self.nonZero)
self.transposed = 0
columnDict = {}
cols = self.cols
- for (row, column), value in self.tensor.iteritems():
- if self.row_factors is not None:
- value /= sqrt(self.row_factors[row])
- columnDict.setdefault(column, {})[row] = value
+ for (row, col), value in self.tensor.iteritems():
+ columnDict.setdefault(col, {})[row] = value * row_factors[row]
assert len(columnDict) <= cols
index = 0
- for colnum in xrange(cols):
- col_len = len(columnDict.get(colnum, []))
- self.setColumnSize(colnum, col_len)
+ for col in xrange(cols):
+ col_len = len(columnDict.get(col, []))
+ self.setColumnSize(col, col_len)
if col_len == 0: continue
- for rowk in sorted(columnDict[colnum].keys()):
- self.setValue(index, rowk,
- float(columnDict[colnum][rowk]))
+ for rowk in sorted(columnDict[col].keys()):
+ self.setValue(index, rowk, columnDict[col][rowk])
index += 1
-
- cpdef dictPack(self):
+ if self.offset_for_row is not None:
+ self.cmatrix.offset_for_row = self.toVector(self.offset_for_row)
+ if self.offset_for_col is not None:
+ self.cmatrix.offset_for_col = self.toVector(self.offset_for_col)
+
+ cdef double *toVector(self, vec):
+ cdef long n = len(vec)
+ cdef double *temp = svd_doubleArray(n, False, "toVector")
+ for i in range(n):
+ temp[i] = vec[i]
+ return temp
+
+ cpdef dictPack(self, row_norms=None):
+ cdef np.ndarray[DTYPE_t, ndim=1] row_factors # holds row _multiplication_ factors, possibly just 1.
+ if row_norms is None:
+ row_factors = np.ones(self.rows)
+ else:
+ row_factors = np.reciprocal(np.sqrt(np.array(row_norms, dtype=DTYPE)))
+
self.cmatrix = svdNewSMat(self.cols, self.rows, self.nonZero)
self.transposed = 1
cdef object rowDict = self.tensor._data
@@ -179,18 +144,21 @@
cdef int index = 0
cdef int rownum
cdef int row_len
- cdef float val
+ cdef double val
assert len(rowDict) <= rows
for rownum from 0 <= rownum < rows:
row_len = len(rowDict.get(rownum, []))
self.setColumnSize(rownum, row_len)
if row_len == 0: continue
for colk in sorted(rowDict[rownum].keys()):
- val = float(rowDict[rownum][colk])
- if self.row_factors is not None:
- val /= sqrt(self.row_factors[rownum])
+ val = float(rowDict[rownum][colk]) * row_factors[rownum]
self.setValue(index, colk, val)
index += 1
+ # Transposed offset vectors.
+ if self.offset_for_row is not None:
+ self.cmatrix.offset_for_col = self.toVector(self.offset_for_row)
+ if self.offset_for_col is not None:
+ self.cmatrix.offset_for_row = self.toVector(self.offset_for_col)
def __repr__(self):
@@ -205,7 +173,7 @@
self.cmatrix[0].pointr[0] = 0
self.cmatrix.pointr[col+1] = self.cmatrix.pointr[col] + size
- cdef void setValue(self, int index, int rowind, float value):
+ cdef void setValue(self, int index, int rowind, double value):
if value == 0:
warnings.warn('Matrix has zero value (row %d, index %d)' % (rowind, index))
self.cmatrix.rowind[index] = rowind
@@ -288,22 +256,22 @@
else:
return u_tensor, v_tensor, sigma
-def svd(tensor, k=50, row_factors=None):
- CSC = CSCMatrix(tensor, row_factors)
- CSC.pack()
+def svd(tensor, k=50, row_factors=None, offset_for_row=None, offset_for_col=None):
+ CSC = CSCMatrix(tensor, offset_for_row, offset_for_col)
+ CSC.pack(row_factors)
return CSC.svdA(k)
-def dictSvd(tensor, k=50, row_factors=None):
- CSC = CSCMatrix(tensor, row_factors)
- CSC.dictPack()
+def dictSvd(tensor, k=50, row_factors=None, offset_for_row=None, offset_for_col=None):
+ CSC = CSCMatrix(tensor, offset_for_row, offset_for_col)
+ CSC.dictPack(row_factors)
return CSC.svdA(k)
def isvd(tensor, k=50, niter=100, lrate=.001, row_factors=None):
- CSC = CSCMatrix(tensor, row_factors)
- CSC.pack()
+ CSC = CSCMatrix(tensor)
+ CSC.pack(row_factors)
return CSC.isvd(k, niter, lrate)
def dictIsvd(tensor, k=50, niter=100, lrate=.001, row_factors=None):
- CSC = CSCMatrix(tensor, row_factors)
- CSC.dictPack()
+ CSC = CSCMatrix(tensor)
+ CSC.dictPack(row_factors)
return CSC.isvd(k, niter, lrate)
=== modified file 'svdlib/svdlib.c'
--- svdlib/svdlib.c 2009-06-24 21:59:07 +0000
+++ svdlib/svdlib.c 2009-11-02 19:20:26 +0000
@@ -55,6 +55,8 @@
if (!S->rowind) {svdFreeSMat(S); return NULL;}
S->value = svd_doubleArray(vals, FALSE, "svdNewSMat: value");
if (!S->value) {svdFreeSMat(S); return NULL;}
+ S->offset_for_row = NULL;
+ S->offset_for_col = NULL;
return S;
}
@@ -63,6 +65,8 @@
SAFE_FREE(S->pointr);
SAFE_FREE(S->rowind);
SAFE_FREE(S->value);
+ SAFE_FREE(S->offset_for_row);
+ SAFE_FREE(S->offset_for_col);
free(S);
}
@@ -158,10 +162,22 @@
N->value[j] = S->value[i];
}
}
+ /* Transpose the row and column offsets also. */
+ if (S->offset_for_col)
+ N->offset_for_row = copyVector(S->offset_for_col, S->cols, "svdTransposeS: offset_for_row");
+ if (S->offset_for_row)
+ N->offset_for_col = copyVector(S->offset_for_row, S->rows, "svdTransposeS: offset_for_row");
+
return N;
}
-
+double *copyVector(double* vec, int n, const char* name) {
+ int i;
+ double* result = svd_doubleArray(n, FALSE, name);
+ for (i = 0; i < n; i++)
+ result[i] = vec[i];
+ return result;
+}
/* this stuff was added by Rob */
void freeVector(double *v) {
=== modified file 'svdlib/svdlib.h'
--- svdlib/svdlib.h 2009-06-24 21:59:07 +0000
+++ svdlib/svdlib.h 2009-11-02 19:20:26 +0000
@@ -21,6 +21,8 @@
long *pointr; /* For each col (plus 1), index of first non-zero entry. */
long *rowind; /* For each nz entry, the row index. */
double *value; /* For each nz entry, the value. */
+ double *offset_for_row;
+ double *offset_for_col;
};
/* Row-major dense matrix. Rows are consecutive vectors. */
@@ -93,6 +95,9 @@
DMat svdTransposeD(DMat D);
/* Transposes a sparse matrix (returning a new one) */
SMat svdTransposeS(SMat S);
+/* Copy a vector */
+double *copyVector(double* vec, int n, const char* name);
+
/* Performs the las2 SVD algorithm and returns the resulting Ut, S, and Vt. */
extern SVDRec svdLAS2(SMat A, long dimensions, long iterations, double end[2],
=== modified file 'svdlib/svdutil.c'
--- svdlib/svdutil.c 2009-08-06 20:12:19 +0000
+++ svdlib/svdutil.c 2009-11-02 19:20:26 +0000
@@ -9,7 +9,7 @@
#include "svdlib.h"
#include "svdutil.h"
-long *svd_longArray(long size, char empty, char *name) {
+long *svd_longArray(long size, char empty, const char *name) {
long *a;
if (empty) a = (long *) calloc(size, sizeof(long));
else a = (long *) malloc(size * sizeof(long));
@@ -20,7 +20,7 @@
return a;
}
-double *svd_doubleArray(long size, char empty, char *name) {
+double *svd_doubleArray(long size, char empty, const char *name) {
double *a;
if (empty) a = (double *) calloc(size, sizeof(double));
else a = (double *) malloc(size * sizeof(double));
@@ -302,28 +302,8 @@
* n = ncol (y stores product vector). *
**************************************************************/
void svd_opb(SMat A, double *x, double *y, double *temp) {
- long i, j, end;
- long *pointr = A->pointr, *rowind = A->rowind;
- double *value = A->value;
- long n = A->cols;
-
- SVDCount[SVD_MXV] += 2;
- memset(y, 0, n * sizeof(double));
- for (i = 0; i < A->rows; i++) temp[i] = 0.0;
-
- for (i = 0; i < A->cols; i++) {
- end = pointr[i+1];
- for (j = pointr[i]; j < end; j++)
- temp[rowind[j]] += value[j] * (*x);
- x++;
- }
- for (i = 0; i < A->cols; i++) {
- end = pointr[i+1];
- for (j = pointr[i]; j < end; j++)
- *y += value[j] * temp[rowind[j]];
- y++;
- }
- return;
+ svd_opa(A, x, temp);
+ mat_transposed_by_vec(A, temp, y);
}
/***********************************************************
@@ -334,18 +314,72 @@
long end, i, j;
long *pointr = A->pointr, *rowind = A->rowind;
double *value = A->value;
+ long rows = A->rows, cols = A->cols;
SVDCount[SVD_MXV]++;
- memset(y, 0, A->rows * sizeof(double));
+ memset(y, 0, rows * sizeof(double));
- for (i = 0; i < A->cols; i++) {
+ for (i = 0; i < cols; i++) {
end = pointr[i+1];
for (j = pointr[i]; j < end; j++)
y[rowind[j]] += value[j] * x[i];
}
- return;
-}
-
+
+ if (A->offset_for_row) {
+ /* o_r(i) \sum_{k=1}^n x(k) */
+ int k;
+ double sum_x = 0;
+ for (k = 0; k < cols; k++) sum_x += x[k];
+ for (i = 0; i < rows; i++)
+ y[i] += A->offset_for_row[i] * sum_x;
+ }
+
+ if (A->offset_for_col) {
+ /* \sum_{k=1}^n o_c(k)x(k) */
+ int k;
+ double offset = 0;
+ for (k = 0; k < cols; k++)
+ offset += A->offset_for_col[k] * x[k];
+ for (i = 0; i < rows; i++)
+ y[i] += offset;
+ }
+}
+
+void mat_transposed_by_vec(SMat A, double *x, double *out) {
+ long i, j, end;
+ long *pointr = A->pointr, *rowind = A->rowind;
+ double *value = A->value;
+ long rows = A->rows, cols = A->cols;
+ /* x in rows, out in columns */
+
+ SVDCount[SVD_MXV]++;
+ memset(out, 0, cols * sizeof(double));
+
+ for (i = 0; i < cols; i++) {
+ end = pointr[i+1];
+ for (j = pointr[i]; j < end; j++)
+ out[i] += value[j] * x[rowind[j]];
+ }
+
+ if (A->offset_for_row) {
+ /* \sum_{k=1}^m o_r(k)x(k) */
+ int k;
+ double offset = 0;
+ for (k = 0; k < rows; k++)
+ offset += A->offset_for_row[k] * x[k];
+ for (i = 0; i < cols; i++)
+ out[i] += offset;
+ }
+
+ if (A->offset_for_col) {
+ /* o_c(i) \sum_{k=1}^m x(k) */
+ int k;
+ double sum_x = 0;
+ for (k = 0; k < rows; k++) sum_x += x[k];
+ for (i = 0; i < cols; i++)
+ out[i] += A->offset_for_col[i] * sum_x;
+ }
+}
/***********************************************************************
* *
=== modified file 'svdlib/svdutil.h'
--- svdlib/svdutil.h 2009-06-24 21:59:07 +0000
+++ svdlib/svdutil.h 2009-11-02 19:20:26 +0000
@@ -6,9 +6,9 @@
#define SAFE_FREE(a) {if (a) {free(a); a = NULL;}}
/* Allocates an array of longs. */
-extern long *svd_longArray(long size, char empty, char *name);
+extern long *svd_longArray(long size, char empty, const char *name);
/* Allocates an array of doubles. */
-extern double *svd_doubleArray(long size, char empty, char *name);
+extern double *svd_doubleArray(long size, char empty, const char *name);
extern void svd_debug(char *fmt, ...);
extern void svd_error(char *fmt, ...);
@@ -100,6 +100,8 @@
***********************************************************/
extern void svd_opa(SMat A, double *x, double *y);
+void mat_transposed_by_vec(SMat A, double *x, double *out);
+
/***********************************************************************
* *
* random2() *
=== modified file 'svdlib/svdwrapper.c'
--- svdlib/svdwrapper.c 2008-11-14 21:17:12 +0000
+++ svdlib/svdwrapper.c 2009-11-02 19:20:26 +0000
@@ -98,21 +98,17 @@
PyObject * wrapSVDrec(struct svdrec * rec, int transposed) {
- PyObject * result = PyTuple_New(3);
PyObject * ut = wrapDMat(rec->Ut);
PyObject * s = wrap_double_array(rec->S, rec->d);
PyObject * vt = wrapDMat(rec->Vt);
- if (transposed == 1)
- {
+ PyObject * result = PyTuple_New(3);
+ PyTuple_SetItem(result, 1, s);
+ if (transposed) {
PyTuple_SetItem(result, 0, vt);
- PyTuple_SetItem(result, 1, s);
PyTuple_SetItem(result, 2, ut);
- }
- else
- {
+ } else {
PyTuple_SetItem(result, 0, ut);
- PyTuple_SetItem(result, 1, s);
PyTuple_SetItem(result, 2, vt);
}
return result;
=== modified file 'test/tensor_util.py'
--- test/tensor_util.py 2009-09-21 15:10:41 +0000
+++ test/tensor_util.py 2009-11-02 19:20:26 +0000
@@ -11,6 +11,8 @@
def nones_removed(d):
return dict((k, v) for k, v in d.iteritems() if v is not None)
+def zeros_removed(d):
+ return dict((k, v) for k, v in d.iteritems() if v)
def dict_fill_in_missing_dims(d):
items = d.items()
=== added file 'test/test_means.py'
--- test/test_means.py 1970-01-01 00:00:00 +0000
+++ test/test_means.py 2009-11-02 19:20:26 +0000
@@ -0,0 +1,42 @@
+import numpy as np
+import unittest
+from nose.tools import eq_
+from math import sqrt
+from csc.divisi.tensor import DictTensor
+from csc.divisi.util import nested_list_to_dict
+from tensor_util import assertTensorEqual, zeros_removed
+
+data = np.array([[1, 2, 3, 4],
+ [-1,2, 3, 4],
+ [0, 1, -1,0]])
+
+tensor = DictTensor(2)
+tensor.update(zeros_removed(nested_list_to_dict(data)))
+eq_(len(tensor), 10)
+
+# For NumPy, "along an axis" means something different.
+ms_data = data - data.mean(1)[:,np.newaxis]
+ms_tensor = DictTensor(2)
+ms_tensor.update(nested_list_to_dict(ms_data))
+
+def test_means():
+ means = tensor.means()
+ eq_(len(means), 2)
+ assert np.allclose(means[0], [(1+2+3+4)/4., (-1+2+3+4)/4., (0+1+-1+0)/4.])
+ assert np.allclose(means[1], [0, (2+2+1)/3., (3+3-1)/3., (4+4+0)/3.])
+
+def test_mean_subtracted():
+ mean_subtracted = tensor.mean_subtracted()
+ m = np.zeros(data.shape)
+ for (r, c), v in mean_subtracted.iteritems():
+ m[r, c] = v
+ assert np.allclose(m, ms_data)
+ assert np.allclose(m.mean(1), 0)
+
+def test_mean_subtracted_svd():
+ plain_svd = ms_tensor.svd(k=2)
+ offset_svd = tensor.mean_subtracted().svd(k=2)
+ assert np.allclose(plain_svd.u.unwrap(), offset_svd.u.unwrap())
+ assert np.allclose(plain_svd.v.unwrap(), offset_svd.v.unwrap())
+ assert np.allclose(plain_svd.svals.unwrap(), offset_svd.svals.unwrap())
+
=== added file 'test/test_offset_svd.py'
--- test/test_offset_svd.py 1970-01-01 00:00:00 +0000
+++ test/test_offset_svd.py 2009-11-02 19:20:26 +0000
@@ -0,0 +1,77 @@
+'''
+Test the SVD with row and column offsets.
+'''
+
+import numpy
+import unittest
+from math import sqrt
+from csc.divisi.tensor import DictTensor
+from csc.divisi.util import nested_list_to_dict
+from tensor_util import assertTensorEqual
+
+svd_2d_test_matrix = numpy.zeros((4, 5))
+svd_2d_test_matrix[0, 0] = 1
+svd_2d_test_matrix[0, 4] = 2
+svd_2d_test_matrix[1, 2] = 3
+svd_2d_test_matrix[3, 1] = 4
+
+# Fake some offsets.
+svd_2d_test_matrix[0, :] -= 1
+svd_2d_test_matrix[1, :] += 3
+svd_2d_test_matrix[2, :] += 5
+svd_2d_test_matrix[:, 1] -= 4
+svd_2d_test_matrix[:, 3] += 2
+offset_for_row = [1, -3, -5, 0]
+offset_for_col = [0, 4, 0, -2, 0]
+
+class SVD2DTest(unittest.TestCase):
+ def setUp(self):
+ self.tensor = DictTensor(2)
+ # Note: this command actually puts 20 values in tensor!
+ self.tensor.update(nested_list_to_dict(svd_2d_test_matrix))
+ self.svd = self.tensor.svd(k=3, offset_for_row=offset_for_row, offset_for_col=offset_for_col)
+ self.u, self.svals, self.v = self.svd.u, self.svd.svals, self.svd.v
+
+
+ def test_decomposition(self):
+ self.assertEqual(self.u.shape[0], self.tensor.shape[0])
+ self.assertEqual(len(self.svals), self.u.shape[1])
+ self.assertEqual(len(self.svals), self.v.shape[1])
+ self.assertEqual(self.v.shape[0], self.tensor.shape[1])
+
+ assertTensorEqual(self.u,
+ [[0, 0, 1],
+ [0, -1, 0],
+ [0, 0, 0],
+ [-1, 0, 0]], abs=True)
+
+ assertTensorEqual(self.v,
+ [[0, 0, sqrt(.2)],
+ [-1, 0, 0],
+ [0, -1, 0],
+ [0, 0, 0],
+ [0, 0, sqrt(.8)]], abs=True)
+
+ assertTensorEqual(self.svals,
+ [4, 3, sqrt(5)])
+
+ def test_reconstructed(self):
+ assertTensorEqual(self.svd.reconstructed,
+ [[1, 0, 0, 0, 2],
+ [0, 0, 3, 0, 0],
+ [0, 0, 0, 0, 0],
+ [0, 4, 0, 0, 0]])
+ assertTensorEqual(self.svd.reconstructed[1,:],
+ [0, 0, 3, 0, 0])
+ assertTensorEqual(self.svd.reconstructed[:,2],
+ [0, 3, 0, 0])
+
+ def test_orthonormality(self):
+ identity = [[1, 0, 0],
+ [0, 1, 0],
+ [0, 0, 1]]
+ assertTensorEqual(self.u.T * self.u,
+ identity)
+
+ assertTensorEqual(self.v.T * self.v,
+ identity)
=== added file 'test/test_svd.py'
--- test/test_svd.py 1970-01-01 00:00:00 +0000
+++ test/test_svd.py 2009-11-02 19:20:26 +0000
@@ -0,0 +1,100 @@
+import numpy
+import unittest
+from math import sqrt
+from csc.divisi.tensor import DictTensor
+from csc.divisi.util import nested_list_to_dict
+from tensor_util import assertTensorEqual
+
+
+svd_2d_test_matrix = numpy.zeros((4, 5))
+svd_2d_test_matrix[0, 0] = 1
+svd_2d_test_matrix[0, 4] = 2
+svd_2d_test_matrix[1, 2] = 3
+svd_2d_test_matrix[3, 1] = 4
+
+class SVD2DTest(unittest.TestCase):
+ def setUp(self):
+ self.tensor = DictTensor(2)
+ # Note: this command actually puts 20 values in tensor!
+ self.tensor.update(nested_list_to_dict(svd_2d_test_matrix))
+ self.svd = self.tensor.svd(k=3)
+ self.incremental = self.tensor.incremental_svd(k=3, niter=200)
+ self.u, self.svals, self.v = self.svd.u, self.svd.svals, self.svd.v
+
+ def test_incremental(self):
+ self.assertEqual(self.incremental.u.shape[0], self.tensor.shape[0])
+ self.assertEqual(len(self.incremental.svals), self.incremental.u.shape[1])
+ self.assertEqual(len(self.incremental.svals), self.incremental.v.shape[1])
+ self.assertEqual(self.incremental.v.shape[0], self.tensor.shape[1])
+
+ assertTensorEqual(self.incremental.u,
+ [[0, 0, 1],
+ [0, 1, 0],
+ [0, 0, 0],
+ [1, 0, 0]])
+
+ assertTensorEqual(self.incremental.v,
+ [[0, 0, sqrt(.2)],
+ [1, 0, 0],
+ [0, 1, 0],
+ [0, 0, 0],
+ [0, 0, sqrt(.8)]])
+
+ assertTensorEqual(self.incremental.svals,
+ [4, 3, sqrt(5)])
+
+ def test_decomposition(self):
+ self.assertEqual(self.u.shape[0], self.tensor.shape[0])
+ self.assertEqual(len(self.svals), self.u.shape[1])
+ self.assertEqual(len(self.svals), self.v.shape[1])
+ self.assertEqual(self.v.shape[0], self.tensor.shape[1])
+
+ assertTensorEqual(self.u,
+ [[0, 0, 1],
+ [0, -1, 0],
+ [0, 0, 0],
+ [-1, 0, 0]], abs=True)
+
+ assertTensorEqual(self.v,
+ [[0, 0, sqrt(.2)],
+ [-1, 0, 0],
+ [0, -1, 0],
+ [0, 0, 0],
+ [0, 0, sqrt(.8)]], abs=True)
+
+ assertTensorEqual(self.svals,
+ [4, 3, sqrt(5)])
+
+ def test_reconstructed(self):
+ assertTensorEqual(self.svd.reconstructed,
+ [[1, 0, 0, 0, 2],
+ [0, 0, 3, 0, 0],
+ [0, 0, 0, 0, 0],
+ [0, 4, 0, 0, 0]])
+ assertTensorEqual(self.svd.reconstructed[1,:],
+ [0, 0, 3, 0, 0])
+ assertTensorEqual(self.svd.reconstructed[:,2],
+ [0, 3, 0, 0])
+
+ def test_orthonormality(self):
+ identity = [[1, 0, 0],
+ [0, 1, 0],
+ [0, 0, 1]]
+ assertTensorEqual(self.u.T * self.u,
+ identity)
+
+ assertTensorEqual(self.v.T * self.v,
+ identity)
+
+ def test_variance(self):
+ # Assert that the SVD explained some of the variance.
+ diff_k3 = self.tensor - self.svd.reconstructed
+ tensor_mag = self.tensor.magnitude()
+ diff_k3_mag = diff_k3.magnitude()
+ self.assert_(tensor_mag > diff_k3_mag)
+
+ # Check that a smaller SVD explains less of the variance, but still some.
+ svd_k1 = self.tensor.svd(k=1)
+ diff_k1 = self.tensor - svd_k1.reconstructed
+ diff_k1_mag = diff_k1.magnitude()
+ self.assert_(tensor_mag > diff_k1_mag > diff_k3_mag)
=== modified file 'test/tests.py'
--- test/tests.py 2009-10-22 18:49:23 +0000
+++ test/tests.py 2009-11-02 19:20:26 +0000
@@ -290,6 +290,16 @@
self.assertFalse((0,1) in self.tensor)
self.assertFalse(self.tensor.has_key((0,1)))
+ def test_unnormalize(self):
+ self.assertAlmostEqual(self.tensor[1,0], 3/5.)
+ self.assertAlmostEqual(self.tensor.unnormalized()[1,0], 3)
+
+ def test_labeled_unnormalize(self):
+ labeled = self.tensor.labeled([['a','b'],['A','B']])
+ self.assertAlmostEqual(labeled['b','A'], 3/5.)
+ labeled_unnormalized = labeled.unnormalized()
+ self.assertAlmostEqual(labeled_unnormalized['b','A'], 3)
+
class TfIdfTest(unittest.TestCase):
def test(self):
@@ -520,109 +530,21 @@
self.normalized = NormalizedView(self.tensor, mode=0)
self.randomtensor = DenseTensor(numpy.random.normal(size=(5, 8)))
- self.randomnormal = NormalizedView(self.randomtensor, mode=0)
+ self.randomnormal_0 = NormalizedView(self.randomtensor, mode=0)
+ self.randomnormal_1 = NormalizedView(self.randomtensor, mode=1)
def test_norms(self):
self.assertAlmostEqual(self.normalized[0,0], -1.0)
self.assertAlmostEqual(self.normalized[2,0], 0.99980006)
+
for i in range(5):
- row = [self.randomnormal[i,j] for j in range(8)]
+ row = [self.randomnormal_0[i,j] for j in range(8)]
self.assertAlmostEqual(numpy.dot(row, row), 1.0)
-# Use a matrix with a known SVD in order to test the values
-# of the u / v / sigma matrices
-svd_2d_test_matrix = numpy.zeros((4, 5))
-svd_2d_test_matrix[0, 0] = 1
-svd_2d_test_matrix[0, 4] = 2
-svd_2d_test_matrix[1, 2] = 3
-svd_2d_test_matrix[3, 1] = 4
-
-class SVD2DTest(unittest.TestCase):
- def setUp(self):
- self.tensor = DictTensor(2)
- # Note: this command actually puts 20 values in tensor!
- self.tensor.update(nested_list_to_dict(svd_2d_test_matrix))
- self.svd = self.tensor.svd(k=3)
- self.incremental = self.tensor.incremental_svd(k=3, niter=200)
- self.u, self.svals, self.v = self.svd.u, self.svd.svals, self.svd.v
-
- def test_incremental(self):
- self.assertEqual(self.incremental.u.shape[0], self.tensor.shape[0])
- self.assertEqual(len(self.incremental.svals), self.incremental.u.shape[1])
- self.assertEqual(len(self.incremental.svals), self.incremental.v.shape[1])
- self.assertEqual(self.incremental.v.shape[0], self.tensor.shape[1])
-
- assertTensorEqual(self.incremental.u,
- [[0, 0, 1],
- [0, 1, 0],
- [0, 0, 0],
- [1, 0, 0]])
-
- assertTensorEqual(self.incremental.v,
- [[0, 0, sqrt(.2)],
- [1, 0, 0],
- [0, 1, 0],
- [0, 0, 0],
- [0, 0, sqrt(.8)]])
-
- assertTensorEqual(self.incremental.svals,
- [4, 3, sqrt(5)])
-
- def test_decomposition(self):
- self.assertEqual(self.u.shape[0], self.tensor.shape[0])
- self.assertEqual(len(self.svals), self.u.shape[1])
- self.assertEqual(len(self.svals), self.v.shape[1])
- self.assertEqual(self.v.shape[0], self.tensor.shape[1])
-
- assertTensorEqual(self.u,
- [[0, 0, 1],
- [0, -1, 0],
- [0, 0, 0],
- [-1, 0, 0]], abs=True)
-
- assertTensorEqual(self.v,
- [[0, 0, sqrt(.2)],
- [-1, 0, 0],
- [0, -1, 0],
- [0, 0, 0],
- [0, 0, sqrt(.8)]], abs=True)
-
- assertTensorEqual(self.svals,
- [4, 3, sqrt(5)])
-
- def test_reconstructed(self):
- assertTensorEqual(self.svd.reconstructed,
- [[1, 0, 0, 0, 2],
- [0, 0, 3, 0, 0],
- [0, 0, 0, 0, 0],
- [0, 4, 0, 0, 0]])
- assertTensorEqual(self.svd.reconstructed[1,:],
- [0, 0, 3, 0, 0])
- assertTensorEqual(self.svd.reconstructed[:,2],
- [0, 3, 0, 0])
-
- def test_orthonormality(self):
- identity = [[1, 0, 0],
- [0, 1, 0],
- [0, 0, 1]]
- assertTensorEqual(self.u.T * self.u,
- identity)
-
- assertTensorEqual(self.v.T * self.v,
- identity)
-
- def test_variance(self):
- # Assert that the SVD explained some of the variance.
- diff_k3 = self.tensor - self.svd.reconstructed
- tensor_mag = self.tensor.magnitude()
- diff_k3_mag = diff_k3.magnitude()
- self.assert_(tensor_mag > diff_k3_mag)
-
- # Check that a smaller SVD explains less of the variance, but still some.
- svd_k1 = self.tensor.svd(k=1)
- diff_k1 = self.tensor - svd_k1.reconstructed
- diff_k1_mag = diff_k1.magnitude()
- self.assert_(tensor_mag > diff_k1_mag > diff_k3_mag)
+ for i in range(8):
+ col = [self.randomnormal_1[i,j] for i in range(5)]
+ self.assertAlmostEqual(numpy.dot(col, col), 1.0)
+
class NormalizedSVD2DTest(unittest.TestCase):
def setUp(self):
Follow ups